• ベストアンサー

エクセルの関数について

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」が入った場合には適用されません。 頭が痛くなってきたので質問させていただくことにしました。 よろしくお願いいたします。

  • abesi
  • お礼率73% (236/323)

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

  • ベストアンサー
回答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% (7418/18948)
回答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

  • Excel VBAで「date」関数を使いたい

    VBAを使用して年月日を入力してます。 セルに表示だけなら Year & "/" & Month… とかでもいいんですが、その日付で計算を行いたいんです。 何日足す、とか。。 それでExcelで使える Date(Year,Month,Day) を思い出したんですが、VBAではエラーになってしまいました。 Application.WorksheetFunction.Date(Year, Month, Day) や Application.Date(Year, Month, Day) もダメでした。 どのようにしたら入力した日付で計算が行えるでしょうか?

  • EXCEL IF関数での日付の認識について

    よろしくお願いいたします。    A         B 1 2006/07/30    OK 2 2006/8/8      A列の日付が2006/7/31以前だったらB列にOK表示、 2006/8/1以降であったらB列に空白””というIF関数を使った数式をお教えください。 MONTH を使ったりしたのですが、年度単位(4月から翌年3月)の対象のため「MONTH(A1)<=7」と指定すると、2007/3/31も対象になってしまいました。

  • エクセル関数で

    初歩的な質問で 申し訳ないですが。 シート 3枚に データーを入力して その計を 別シートに表示したいのですが、その時表示したいシートは日付で管理したいのです。  IF(TODAY()=A3,シート1!$O$2+シート2!$O$2+シート3!$O$2,IF(A3<100000,"")) の数式を立てたのですが、 この数式だと日付が変わるとそのセルは 表示が出なくなります。日付が変わっても そのシートの計算された数字はそのまま残るようにするにはどうしたら良いでしょうか? 無理なのかな? 教えて下さい。 A3以降A列には毎日の日付を入力してあります。    

  • INDEX関数とMATCH関数(長文です)

    実は、以前にこの場で質問をしてINDEX関数の利用を勧められた者です。実際、利用してみましたが、なぜか一定の範囲しか抽出しません。 具体的に現状を書きます。 管理表を作っています。 sheet1     A     B        次回予定日 1|   |      |←150日後日付をかえしたい 2|   |      | 3|   |      | 4|   |      | sheet2       A     B      日付   追加補充  1| 05/2/1 |  有り  | 2| 05/3/15 |  無し  | 3| 05/4/1 |  無し  | 4| 05/4/15 |  有り  | 私が作った関数は sheet1のA1のセルにまず次のような式を入れました。 =INDEX(sheet2!A1:A4,MATCH("有り",sheet2!B1:B4)) 次にsheet1のB1セルに次のような数式を入れました。 =DATE(YEAR(A1)+0,MONTH(A1)+0,DAY(A1)+150) これで、sheet1のBの列の表示形式を日付にしたら一応、一部だけ抽出できました。 最終目的はsheet1のB1のセルに【sheet2のB1~B4の間で最新日付の「有り」があった場合、随時150日後の日付を更新、抽出していきたい】ということです。 今回の場合は”05/2/1”と”05/4/15”に「有り」がある訳ですから、最終的に”05/4/15”の150日後がsheet1のB1セルに抽出されればいいのですが… なぜだか、#N/Aのような表示が出てきてしまいます。 現在わかっている事は、仮にsheet2のB2が「有り」にした場合、私の入力した式でsheet1のB1に150日後の日付が抽出されます。 ところが、sheet2のB3およびB4を「有り」とした場合、#N/A表示が出てきてしまい計算しないようなのです。 範囲はすべて指定しているつもりですが、B1とB2は正しく計算して、B3とB4の場合ではエラーになってしまうのはなぜでしょうか… 長々と恐縮ですが、ご教授願います。

  • Excel 関数 

    初心者です条件にあったものを参照する数式を教えてください よろしくお願いいたします! ~sheet1~ A列     B列  回数    金額 3,000以下  29,800 3,000以上  39,800 4,000以上  49,800 上のようなsheet1に表があり sheet2にA列に下のように1の表示がある場合のみ sheet1の条件にあった金額を sheet2のC列に表示させる数式を教えてください。  A列  B列    C列       回数   金額(円)  1    5O,712   49,800  1    133    29,800  1    3,014    39,800       3,014  (計算しない) わかりにくい説明かもしれませんが… すみませんがよろしくお願いいたします。   

  • エクセルの関数教えて下さい。

    A列       B列       日付or#EMPTY  日付or#EMPTY   のうちA列に日付が入っていてB列に日付が入っていないものを抽出する数式 A列       B列        日付or#EMPTY  日付or#EMPTY のうちA,Bともにひづけがはいっているものを抽出する数式 を教えて下さい。 よろしくお願いします。

  • Excelでのリンク機能関数

    シート1が以下のようにあったとします。 A B 1 No.1 abc 2 No.2 def 3 No.3 ghi 4 No.4 jkl シート2で、A1に「No.1」と記入するとB1に「abc」と表示したいのです。 A B 1 No.1 abc 2 No.2 def 3 No.3 ghi 4 No.4 jkl ↑ ↑ 手動 自動表示 このように出来る関数はありますか? また、使い方のサンプルなどもあればありがたいです。 よろしくお願いします。

  • エクセルの関数

    =COUNTIFS(A10:A47,"一日有休",B10:B47,">=" & DATE(YEAR(E11)-1,MONTH(E11),DAY(E11)),B10:B47,"<" & E11) 上記の数式をJ11に入力してますが動きません。 (A10:A47)には一日有休などの文字が(B10:B47)には有給取得日が E11には有給付与日が2010/10/1等 結果が0になります。 どこが、がいけないのでしょうか

  • EXCEL 数式・関数でソートしたい

    数式・関数でソートする方法を教えてください。 A列に日付、B列に品名、C列に個数が入ったSheet1があります。 これを日付順にソートしたSheet2をつくりたいと思っています。 Smallでやろうと思ったのですが、同じ日付が何回もでてくるために、うまくいきませんでした。 よろしくお願いします。

  • Excel上で関数を入れるコード For Next

    C列にExcel上で関数を上から下へ入れるコードを教えて下さい。 お世話になっています。 いつも質問ばかりですみません。 A列に項目、B列に日付が入っているリストがあります。 今回、C列にその月の第何周目かを求める関数 =WEEKNUM(B1)-WEEKNUM(DATE(YEAR(B1),MONTH(B1),1))+1 を入力したいです。 このエクセルシート上の関数のB1をB2、B3、B4と変化させて行きたいのですが 以下私のコードを書きましたが、 記載した時点で「"=WEEKNUM」から二行が赤字で表示されてしまいます。 ------------------------------------------------------ Sub 私の書いた第何週目かをC列に求めるコード() Dim i As Integer For i = 1 To Range("a1").End(xlDown).Row Sheets("Sheet1").Cells(i, "3").Formula = _ "=WEEKNUM(" & "(Cells(i, 2)"&")-WEEKNUM(DATE(YEAR(" & "(Cells(i, 2)" &),MONTH(" & "(Cells(i, 2)" & "),1))+1)" Next i End Sub ------------------------------------------------------ 方法を教えていただけないでしょうか。 すみませんが、よろしくお願い致します。

専門家に質問してみよう