• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 特定の期間内の場合に、特定の値を返す方法)

エクセル 特定の期間内の値を返す方法

このQ&Aのポイント
  • エクセルの関数を使用して、特定の期間内の値を返す方法について質問させていただきます。
  • 特定の年月日に基づいて、特定の期間内であれば特定の値を返す方法について、エクセル初心者の方に向けてご説明いたします。
  • エクセルの知識が不足しており、特定の期間内で特定の値を返す方法を探しています。詳しい方のご助力をお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

Excelでは1900/1/1以前の日付は日付として扱えないため、「1943/4/1以前」ではなく「1900/1/1~1943/4/1」を空白とすると言う事でよろしいですか? 開始年と対応した値の一覧をシート上に作り、Vlookup関数で値を表示します。 例として、D1:E5に以下の様に一覧が入っているとします。 1900/1/0 1943/4/2 62 1945/4/2 63 1947/4/2 64 1949/4/2 65 B1セルに =""&VLOOKUP(A1,D1:E5,2) と入力し、A1セルに適当な日付を入れて見てください。

tazuki
質問者

お礼

早速のご回答、ありがとうございます! VLOOKUPを使うのですね。 浅い知識しか持ち合わせておらず、IF関数付近で必死に考えていて、全く思いつきませんでした。 エクセルは、関数の知識と発想力(論理力?)だなぁ、とつくづく思いました。 そして、1900/1/1以前の日付が日付として扱えないとのこと、勉強になりました。 おっしゃる式で、無事にデータが作成できました。 少し急ぎだったので、素人でも分かりやすく迅速に(そして画像まで!)ご回答下さったことに、感謝の気持ちでいっぱいです。 これからももっと勉強したいと思います。 本当にありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.4

エクセルでは、「日付のセルの値」は(日付シリアル値という)正整数なのだ。1900年1月1日以来のその暇での日数(「順序数)なんだ。これを知らないから、日付で怖気ついたのではないか。 だから例えば、1から9、10から20、・・といった区間にコードを割り当てるのとおなじなんだ。 ーー またこういう区間で値を割り当てるのは、VLOOKUP関数のTRUE型という、エクセルでは常識の関数がある。 それを使えば仕舞い。もう回答も有るので、書かないが、Googleででも「エクセル VLOOKUP関数 TRUE型」で照会すれば、こんなところへ質問しなくても、腐るほど記事が出てくるのだ。 エクセルの関数の問題などほとんどWEBに解説があるのだ。 ーー もうひとつ>1943/4/1以前 と不用意に書いているが、エクセルでは,1900年1月1日の前日以前を扱うのは尋常では出来ないのだ。だから、1900/1/1(あるいはそれ以降日付)~1943/4/1とするとエクセルのことが判っているということになる。 ーー 今後エクセル関数を使うなら、都度質問にな無いように、エクセルの解説書(最低でも「エクセル関数50選」など)などを通読してからにすべきだ。

tazuki
質問者

お礼

ご回答、ありがとうございます。 そして、この質問が、回答者様をご不快にさせてしまったようで、大変申し訳ありませんでした。 日ごろ使い慣れていない関数でしたので、咄嗟に思いつきませんでした。 回答者様はきっと、エクセルを熟知なさっているのですね。 うらやましい限りです。 基本的に私も、ネットや解説書を参考にして問題を解決するようにしていますが、今回はあたりのつけ方が悪くてどうしても解決策が見つからず、最終手段としてこちらで質問させていただきました。 日付で怖気づいて、皆さんに問題を丸投げしたわけではないのです。 素人には、あたりをつけることもなかなかに難しいことを、どうかご理解いただけますと幸いです。 今後も、私を含め、エクセルに不慣れな方が、勉強する気持ちで質問されることもあるかと思います。 その際は、あたたかい目で見守っていただけますと幸いです。 貴重なお時間を割いてのご意見、ありがとうございました。

すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

方法1) 添付図のように対応表を用意してVLOOKUPしてみるのが一番基本形です。 ただし,対応表の作り方に幾つかコツがあります。 E2のセルには必ずゼロを記入しておくこと G2のセルには ’(Shift+7) を記入しておくこと すると数式は =VLOOKUP(A1,$E$2:$G$6,3) とします。 方法2) 添付図のように一度日付を記入したあと,E列を選び,ツールバーのカンマボタンをクリックして桁区切り表示にします すると開始日の日付の表示が 15,798 16,529 17,259 17,990 に変わります。この数字を使って計算します。対応表は使いません =LOOKUP(A1,{0,15798,16529,17259,17990},{"",62,63,64,65}) 方法3) 添付図のF列,「まで」の日付を記入したF2:F5を使います。 B列に =SUMPRODUCT(FREQUENCY(A1,$F$2:$F$5)*{0;62;63;64;65}) と数式を入れた後,B列を列選択,右クリックしてセルの書式設定の表示形式のユーザー定義で # と設定しておきます。

tazuki
質問者

お礼

早速のご回答、ありがとうございます。 質問文の内容から、式を3パターンも考えつくことができるなんて、素晴らしいです。 (そしてとってもうらやましいです。) VLOOKUP関数が一番簡単ですね。 関数の知識があまりないため、知っている関数でどうにかなるのではないかと、狭い視野で模索していました。 反省しています。 方法3については、初めて見る関数なので、ちょっと勉強してみますね。 たくさんの方法をご教授いただき、ありがとうございました!

すると、全ての回答が全文表示されます。
回答No.2

B2セルに =IF(A2<="1943/4/1"*1,"",VLOOKUP(A2,$D$3:$G$6,4)) 下へオートフィル(添付図参照) =IF(A2<=15797,"",INDEX($G$3:$G$6,MATCH(A2,$D$3:$D$6))) でもOK

tazuki
質問者

お礼

早速のご回答、ありがとうございます。 IF関数とVLOOKUP関数で、こんなに簡潔な式が完成するんですね! まずVLOOKUP関数についての知識が不十分だったため、IF関数で長々とした式を・・。 しかし、どうしてもきちんとした数値が返ってこず、皆さんのお力をお借りした次第です。 添付図までつけていただき、とても分かりやすかったです。 表の作り方次第で関数も変わってくることも、勉強になりました。 丁寧にご教授いただき、ありがとうございました!

すると、全ての回答が全文表示されます。

関連するQ&A