• ベストアンサー

グループ毎のデータを抽出する方法について

A4からD23にグループ毎にデータがあります。 当データのグループ名を指定するとF4からI16までにデータを抽出する方法を教えて下さい。 ファィルを添付ます。 よろしくお願いします。

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (774/1620)
回答No.2

取りあえず ・A表のサイズは4×3 ・グループ名は項目開始の1行下。 ・B表の表示は3か所(グループ名は、F6 F10 F14) で作りました。(3つぐらいなら数式を別々にした方がいいです) G5: =IFERROR(OFFSET(B1,MATCH($F$6,$A:$A,0)-2,),"") 右下へコピペ。 G9: =IFERROR(OFFSET(B1,MATCH($F$10,$A:$A,0)-2,),"") 右下へコピペ。 G13 =IFERROR(OFFSET(B1,MATCH($F$14,$A:$A,0)-2,),"") 右下へコピペ。 セルの書式設定、ユーザー定義「#」 imogasi さんへの補足を読みましたが、画像と矛盾します。 (1)結合はしない。グループ名枠の先頭行とする。→先頭行でなく1行下です。 (2)行は最大10行とする。 ・A表は10行に満たない場合、開けておくのか、上に詰めるのか。(画像を見る限り、Aグループの様に開けてあります) ・B表は 4行でなく10行にするのか、それとものグループ名を入れる所は不定なのか。(不定にすると、数式はかなり複雑になるし、全部表示されない可能性もあります)

その他の回答 (2)

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.3

作業用の列(H列、I列)と作業用の行(5行目)を用意して 添付画像のようにする対応はいかがでしょうか? H6=IF(J6<>"",0,H5+1) I6=IF(J6<>"",MATCH(J6,A:A,),I5) この2つを必要数下方向に複写 K6=IF(INDEX($A:$D,$I6+$H6,K$5+1)="","",INDEX($A:$D,$I6+$H6,K$5+1)) これを必要数下方向、右方向に複写

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

補足をお願い。 (1)A5:A8の、見えて居る「Aグループ」の各行について、セル結合しれないのだろうね。 (2)各グループの明細の行数は4と一定か? (3)関数で式を工夫する、のか。操作やVBAでは望まない? 関数では条件を付けて抜き出すのは1条件でも難しい(考え方と式が複雑予想) (4)>当データのグループ名を指定する 複数のグループを指定、らしいが、どのセルにどう書き込むのか (4)が加わるとさらに難しい。関数では繰り返い法ができない。IFで分けるとすると、式が長くなり、わかりにくい。 == 以下は、参考。 本件は、本件限りとして、VBAでやることだな。 下記は、急いでいて、荒っぽいが(十分なテスト未済)この程度の行数で出来るのかな? Sub test01() K = 5 'アウトプット開始行のセット p1: G = InputBox("グループ名=") If G = "END" Then Exit Sub r = Range("A1:A30").Find(G).Row MsgBox r For i = r To r + 3 '行の変化。4行分をセット For j = 6 To 9 '列変化。F,G,H,I列データをセット。 Cells(K, j) = Cells(i, j - 5) Next j K = K + 1 '次行へデータセット Next i K = K + 1 '区切りとして空白行を入れる GoTo p1 End Sub データ例 A3:D16 A A ああ 20 A B いい 30 A C うう 40 A D ええ 50 B E おお 70 B F かか 80 B G きき 90 B H くく 10 C J けけ 30 C K ここ 50 C L ささ 70 C M しし 90 ーー 上記VBAを実行時に、AとCを指定。 結果 F5:I13 A A ああ 20 A B いい 30 A C うう 40 A D ええ 50 C J けけ 30 C K ここ 50 C L ささ 70 C M しし 90

JANIKYA
質問者

補足

(1)結合はしない。 グループ名枠の先頭行とする。 (2)行は最大10行とする。 (3)VBAは苦手なので関数で作成してほしい。 (4)グループ名は数字でも良い 例 Aグループは10番とかで OK グループ名の抽出先は枠の先頭行で良いです。   例 Bグループの場合はF5に表示  式は多少長くてもよいです。

関連するQ&A