• ベストアンサー

エクセル2000 データの抽出

エクセル2000です。 とあるシート[start]のセルF1とF2で入力した文字列をそのまま繋げ(START!F1&START!F2)たものを検索の対象にして、他のシートにあるレコードを検索したいのです。 他のシート[入金履歴]の一番左の列を検索して、検索対象と一致するレコードが欲しいのです。 が、一致するレコードはn件。つまり、一対nになってます。一対一ならばVLOOKUPで話は簡単なのですが、一致する複数のレコードをどう引っ張ってきたらいいかわかりません。

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

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

こんなのは参考になりませんか。 (データ)Sheet1のA1:B11に コード 内容 a x b f c g b v c x c あ a s a d b f (条件)Sheet2のA1:B2に コード 内容 b (操作) データ-フィルタ-フィルタオプションの設定 指定した範囲をON リスト範囲  $A$1:$B$11 検索条件範囲 Sheet2!$A$1:$B$2 抽出範囲   $F$1:$G$11 (結果)F1:G11に コード 内容 b f b v b f b b

kyrie_esumi
質問者

お礼

これをマクロの一部に組み込んで出来ました。 ありがとうございました。

その他の回答 (4)

  • nihonjinn
  • ベストアンサー率39% (79/200)
回答No.5

そういやフィルタオプションはご存知ですか。

参考URL:
http://homepage1.nifty.com/kenzo30/ex_kisotoku/ex_ks_tokubetu9.htm
  • nihonjinn
  • ベストアンサー率39% (79/200)
回答No.4

検出したい文字列が複数ある場合は検出先のレコードの横に作業セルを置くのは不都合だと思います。 その場合はたとえばSTART!シートのセルG1に =MATCH(START!F1&START!F2,A2:A100,0) セルH1に =MATCH(START!F1&START!F2,INDIRECT("A"&2+G1&":A100"),0)+G1 としてH1を(START!$F1&START!$F2と絶対参照にして)横にコピーしてやればA2:A100の中の行位置を表すことができます。 あとはG2,H2--にG1,H1--を使って検索結果を抽出してください。

  • nihonjinn
  • ベストアンサー率39% (79/200)
回答No.3

検索対象がA列、抽出したいレコードがB列にあるとするとC列に =IF(A2=START!F1&START!F2,B2&" ","") としてやり 一致するレコードを =CONCATENATE(C2,C3,C4,---,C100) としてやればひとつのセルにスペースで区切られた複数のレコードを出してやることもできます。

  • nihonjinn
  • ベストアンサー率39% (79/200)
回答No.2

たとえばA列にデータがあるとしたらB列に1から始まる行を示す番号を入れ、C列に =IF(A2=START!F1&START!F2,B2,"") とします。B列の変わりにROW関数を使ってもいいです。 レコードの表の左上のセルの上のセルがA1だとし、抽出したいデータが左からm列目の列にあるとすると =OFFSET(A1,SMALL(C1:C100,n),),m-1) nを1,2,3---と変えて十分な数のセルにそれぞれ入れてやります。エラー値が気になるならISERROR関数で消してください。

関連するQ&A