• ベストアンサー

エクセルの関数について

DATE関数について教えてください。 エクセルで、シート1のA1セルにTODAY関数で本日の日付が入るようにセットし、 A2にVLOOKでシート2よりコメントを引き込むように設定しています。 シート2はA列に1月1日から12月31日まで順に並べ、B列にコメントを入れた 表になっています。 ここで質問なのですが、A1やシート2の日付はすべて2008年が入ってしまい、 A1セルが2009年になってしまうと、シート2から引き込まなくなってしまいます。 これを回避するために、A1とシート2ともに年を省き 月日のみで永続的に引き込みが出来るようにしたいのですが、 DATE関数などを利用して可能でしょうか? よろしくお願いします。

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

  • ベストアンサー
  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

年を2008で固定してはどうでしょう。 DATE(2008,MONTH(A1),DAY(A1))

creopatra
質問者

お礼

ありがとうございます。 DATE関数って数字をダイレクトに入力することで、固定できるんですね。 勉強不足でした。

その他の回答 (3)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

いづれも月日で検索する方法ですが如何でしょうか。 =INDEX(Sheet2!B:B,SUMPRODUCT((TEXT(Sheet2!$A$1:$A$400,"m/dd")=TEXT(A1,"m/dd"))*ROW(Sheet2!$A$1:$A$400)))

creopatra
質問者

お礼

ありがとうございます。 私の勉強不足ですね。。。 教えていただいたものがどのような仕組みの関数なのか 調べて今度の参考にしたいと思います。

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

Sheet2の1年の予定等来年になっても大筋変わらないのなら、 Sheet2の検索値を月日を文字列にして(表の第1列)、表を作ればよい。数字で103(1月3日の例)でもよいかもしれないが。 Today()から如何様にも加工可能だから。 Sheet1のToday()->(関数式内で)そこから月日を文字列化ー>VLOOKUPで表引きは出来るが、TODAY()->そのままー>VLOOKUPの検索値を関数でバーチャルに加工ー>VLOOKUPで表引きは出来無いからです。 --以下次の点線まで読み飛ばしても結構 Sheet3に 2008/1/1 お正月 2008/1/2 2008/1/3 2008/1/4 初出勤 2008/1/5 新年得意先訪問 とあって 間違った例 =VLOOKUP(C1,TEXT(Sheet3!$A$1:$B$5,"mmdd"),2,FALSE) のようなこと。第2引数にはTEXT関数などかぶせて使えない。 ヴァーチャルと(私が言うのは)はセルに値を一旦作らないでという 意味です。 ==========- 例データ Sheet2 A1:B5 0101 お正月 0102 0103 0104 初出勤 0105 新年得意先訪問 Sheet1 A1に2008/1/5 本番では=TODAY() A2に =VLOOKUP(TEXT(A1,"mmdd"),Sheet2!$A$1:$B$5,2,FALSE) 結果 A2に 新年得意先訪問

creopatra
質問者

お礼

ありがとうございます。 日付を文字列でと言うのは考えたのですが 私の入力の仕方が悪いのか うまくいかなかったのです。 一度教えていただいた方法で試してみたいと思います。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

>A1とシート2ともに年を省き 逆に、A1とシート2共に年を入れるのはいかがでしょうか。 シート2の1月1日は、 ==DATEVALUE(YEAR(NOW()) & "/1/1") で生成し、1月2日以降は、前日のシリアル値に1を加える形に(A1が1月1日なら、A2以降は、=A1+1 という式を入れるという意味) しておけば、2009年に入れば、新しい日付が適用されると思います。未検証ですので、外していたらすみません。

creopatra
質問者

お礼

ありがとうございます。 おっしゃられるとおり、逆の考え方も出来るんですね。 固定すれば私の望んでいた永続的なものができそうです。

関連するQ&A