- ベストアンサー
複数検索結果がある場合
エクセルでただいま困っていることがあります たとえば 入院日 名前 6月1日 ○山△男 6月2日 ○川?子 6月1日 !川?美 このような感じで大元があるとして 違うシートには 入院表として、スケジュールがあって 6月1日 6月2日 6月3日 6月4日 6月5日 大元に入院日を入力するとすぐに 6月1日 ○山△男 !川?美 6月2日 ○川?子 6月3日 6月4日 6月5日 このような感じで6月1日が複数入院しても、すぐに名前が出るようにするエクセルの関数式はありますか??それともマクロですか?? 何かいい方法を教えてください
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
元データのあるシートがSheet1で、A列に入院日、B列に名前があり、「違うシート」のA列に入院日があるとして、B2セルに以下の式を貼り付けて右方向にコピー。更に下方向にもコピーしてください (どちらのシートも1行目がタイトル、2行目からデータであることを想定しています) =IF(COUNTIF(Sheet1!$A:$A,$A2)-COLUMN(A1)+1>0,INDEX(Sheet1!$B:$B,LARGE(INDEX((Sheet1!$A$2:$A$200=$A2)*ROW(Sheet1!$A$2:$A$200),),COUNTIF(Sheet1!$A:$A,$A2)-COLUMN(A1)+1)),"") 元データのシート名やデータ範囲は必要に応じて変更して下さい
その他の回答 (1)
- zap35
- ベストアンサー率44% (1383/3079)
#01です。どこまで説明すればご理解いただけるか分かりませんが… 内側のINDEX関数である INDEX((Sheet1!$A$2:$A$200=$A2)*ROW(Sheet1!$A$2:$A$200),) は「元データ」と「違うシート」のA列の日付が合致するときに、「元データ」の行番号の配列を返します。6月1日なら 入院日 名前 6月1日 ○山△男 → 日付が合致する。2行目 6月2日 ○川?子 → 違う日なので0 6月1日 !川?美 → 日付が合致する。4行目 これをLARGE関数で1番目、2番目と取得すると目的の行数を取得でき、更に外側のINDEX関数で氏名を取得できます。この「何番目」は列番号(COLUMN)から発生させています。 あとは同日の人数が列番号より少ないときのエラー処理としてCOUNTIF関数で求めた「同日の人数」と比較するIF関数を用いています すぐには理解できなくても、部分部分を見ていただくと理解できると思います
お礼
わがまま聞いていただきありがとうございます。 少しずつ勉強してさらに理解したいと思います 本当にありがとうございました またわからないことがありましたら、お聞きするかもしれませんがよろしくお願いします
お礼
ありがとうございます。 悩みが一発で解決の方向に向かいそうです 出来れば、この仕組みをたくさん使うので 仕組みを教えていただければ幸いなのですが。 わがまま言って申し訳ございません