• ベストアンサー

Excel関数を使って表を検索するには

宜しくお願い致します。 やりたい事 Excelで年代ごとに縦軸は月、横軸は日で出来た表があります。 生年月日を入力すると、年代ごとの表から月と日の一覧からデータを 拾い出したいのです。 年代ごとにと言うところからよくわかりません。その他はOffcet関数などを使うと出来そうでしょうか? どうぞご教授下さい。 宜しくお願い致します。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

各年の表は1月から始まって12月まで、1日から始まって月末までとなっているのでしたら次の式をN6セルに入力してO6セルまでドラッグコピーしたのちに下に1行ドラッグコピーします。 =INDEX($A:$Y,MATCH($N$2,$A:$A,0)+$O$2*2+ROW(A1)-1,$P$2*2+COLUMN(A1)-1)

yukirin5_2006
質問者

お礼

早々のお返事ありがとうございました。 また違う方法もご教授頂き感謝いたします。

その他の回答 (5)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

回答No3です。OFFSET関数を使う場合にはN6セルには次の式を入力すればよいでしょう。 =OFFSET(INDEX($A:$A,MATCH($N$2,$A:$A,0)),$O$2*2+ROW(A1)-1,$P$2*2+COLUMN(A1)-2)

yukirin5_2006
質問者

お礼

ありがとうございました。 大変勉強になりました。

noname#204879
noname#204879
回答No.5

[No.4]を若干変更(元のままでも構わないけど) N6: =OFFSET($A$1,MATCH($N$2,$A:$A,0)+$O$2*2+ROW(A1)-2,$P$2*2+COLUMN(A1)-2)

yukirin5_2006
質問者

お礼

ありがとうございました。 自分では思いつきませんでした。 また機会がございましたらよろしくお願い致します。

noname#204879
noname#204879
回答No.4

N6: =OFFSET($A$1,MATCH($N$2,$A:$A,0)+$O$2*2-1+ROW(A1)-1,$P$2*2+COLUMN(A1)-2)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 御質問文の添付画像中の表では、「指定する年月日入力欄」や結果の表示欄の位置が悪いため、今仮に、これらの位置を少々移動させて、C2セルに指定する西暦年を、D2セルに指定する月を、E2セルに指定する日をそれぞれ入力し、G1~H2の範囲に拾い出した結果を表示させるものとします。  又、元の表の月や日の値には途中の抜け(例えば11日の直ぐ右に入力されている日付が13日になっている等)等は存在しないものとし、必ず、1から始まっているものとします。  まず、G1セルに次の関数を入力して下さい。 =IF(AND(ISNUMBER(($C$2&"/"&$D$2&"/"&$E$2)+0),$C$2>12,COUNTIF($A:$A,$C$2)),INDEX($B:$BK,MATCH($C$2,$A:$A,0)+2+($D$2-1)*2+MOD(ROWS($G$1:G1)-1,2),1+($E$2-1)*2+MOD(COLUMNS($G$1:G1)-1,2))&"","")  そして、G1セルをコピーして、G1~H2の範囲に貼り付けて下さい。  これで、G1~H2の範囲に拾い出した結果が自動的に表示されます。   ([Control+Shift+Enter]の操作は不要)

yukirin5_2006
質問者

お礼

早々のお返事ありがとうございました。 またサンプルも大変分かり易かったです。 ありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

4個のセルを選んだ状態で =OFFSET(INDEX(A:A,MATCH(N2,A:A,0)),MATCH(O2,OFFSET(INDEX(A:A,MATCH(N2,A:A,0)),1,0,99,1),0),MATCH(P2,OFFSET(INDEX(A:A,MATCH(N2,A:A,0)),1,1,1,99),0),2,2) と記入し、コントロールキーとシフトキーを押しながらEnterで入力する。 #参考 月や日付の値が「1から始まっていない」状況を想定して、わざとメンドクサイ検索の式にしています 左の表が必ず1月や1日から始まっているのであれば、わざわざMATCH関数で月や日を検索せず、「INDEX(A:A,MATCH(N2,A:A,0))」セルを基準位置として月や日付の値によってセル位置を特定し値を参照してくるので十分です。 #参考 計算の段取りを把握すれば、OFFSET関数やINDEX関数を使い、配列数式にしないで1セルずつ値を参照してくることも簡単にできます。

yukirin5_2006
質問者

お礼

早々のお返事ありがとうございました。 大変参考になりました。 配列と言うのがいまいち難しいですね・・・ 今後勉強していきます。 ありがとうございました。

関連するQ&A