• ベストアンサー

エクセルの関数について

Sheet1  |**********| Sheet2       A       B 1|2005/01/20|ABC| 2|2005/03/15|DEF| 3|2005/04/20|XXX| わかりずらくてごめんなさい。エクセル初心者です。 関数のことで質問させてください。 Sheet2の「B」の列に「ABC」の語を含んでいた場合、Sheet1の「********」のセルに「A」の列の日付に半年をプラスした日付を表示させたいのです。 もし含んでいない場合は、表示しなくてもいいのですが、この場合どのように数式を作っていいのかわかりません。 ちなみに自分で作った数式は =if(sheet2!B1=”ABC”,date(year(sheet2!A1)+0,month(sheet2!A1)+6,day(sheet2!A1)+0),””)でした。 しかし、これでは「B2」や「B3」に「ABC」が入った場合には適用されません。 頭が痛くなってきたので質問させていただくことにしました。 よろしくお願いいたします。

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

  • ベストアンサー
回答No.3

Sheet1のA1セルに、 =INDEX(Sheet2!A1:A3,MATCH("ABC",Sheet2!B1:B3,0),1) と入力して下さい。 これで、「ABC」の時の日付が取り出せます。 A2セルに質問者様が書いているように、 =DATE(YEAR(A1),MONTH(A1)+6,DAY(A1)) とすれば、6ヶ月後の日付が求まります。 ただし、ANo1さんが書かれているように、 月に6を足しているので、6ヶ月後の同日になります。 たとえば、8月31日だと、3月3日になったりします。(2月31日はないので、それに相当する日付、2/29→3/1、2/30→3/2、2/31→3/3っていう具合です)

abesi
質問者

お礼

ご回答ありがとうございました。 本数式を参考にさせていただいて解決できました。 本当にたすかりました。 多数の方々にご回答いただき大変感謝しております。 ありがとうございました。

その他の回答 (2)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

=IF(ISNA(MATCH("ABC",Sheet2!$B$1:$B$3,0)),"",EDATE(INDEX(Sheet2!$A$1:$B$3,MATCH("ABC",Sheet2!$B$1:$B$3,0),1),6)) 但し、EDATE関数を使用のため、「ツール」「アドイン」「分析ツール」にチェックが必要です。

abesi
質問者

お礼

ありがとうございます。 早速試してみたところ、分析ツールにチェックを入れるためには何かをインストールしなければいけないらしく、CDROMが必要とのことでした。 残念なことに、CDは無くしてしまって解決できそうにありませんでした… せっかく教えて頂いたのにとても残念です。

  • hyde19
  • ベストアンサー率29% (196/661)
回答No.1

VLOOKUPを使ってください。 Sheet2の並び順はA列とB列を入れ換えます。 =VLOOKUP(Sheet2!A1:B3,"ABC",2) これが日付を取ってくる式です。("ABC"もセルに入れて、そこを参照すると便利です) で一旦これをセルに入れた方が良いですね。 例えばSheet1のB1にこれを入れたとして、A1に結果を表示しましょう。 実はB1には日付のシリアル値が入っています。(セルが日付形式になっていること) [A1] =B1+180とすれば、180日後の日付になります。(このセルも日付形式にすること) まあ、date関数は使い方をご存じなので、6ヶ月を足すのでも良いのですが、元が3/31の場合に9月は31日がないので、10月1日になりますね。

abesi
質問者

お礼

ご回答ありがとうございます。 早速、参考にさせていただいたところ、小生の知識不足のため、【N/A】のような表示が出てしまい、どうしても拾い上げることができませんでした。 すぐにお返事いただいたのに申し訳ありません。 ありがとうございました。

関連するQ&A