• ベストアンサー

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

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

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (715/1478)
回答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% (454/691)
回答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/17068)
回答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

  • X個グループからY個ずつデータを抽出したい

    例:グループの数は100ぐらいがあって、グループごとのレコード数はそれぞれであり、毎回そのうちのX(例3)グループずつにデータを抽出します。そして1つのグループから最大Y個(例2)のデータを抽出します。 抽出したデータにフラグを立てて、次の抽出時に除外の条件として使います。 例:以下のテーブルがあって、毎回3グループから2個のデータを抽出します: group name flag ---------------------------------------------------------------------------- 1_group 田中A          0     1_group 佐藤A          0     1_group 林A           0     1_group 鈴木A           0     1_group 牧野A           0     2_group 平田B          0     2_group 小林B          0     ・・・ 3_group 高橋C          0     3_group 丹羽C          0     3_group 田中C          0     3_group 佐藤C          0     3_group 鈴木C          0     3_group 吉田C          0     ・・・ 4_group 高橋D          0     4_group 丹羽D          0     4_group 田中D          0     4_group 佐藤D          0     4_group 鈴木D          0     ・・・ (1)1回目の抽出の結果 group name flag ---------------------------------------------------------------------------- 1_group 田中A          0     1_group 佐藤A          0     2_group 平田B          0     2_group 小林B          0     3_group 高橋C          0     3_group 丹羽C          0     (2)2回目の抽出の結果 group name flag ---------------------------------------------------------------------------- 1_group 林A           0     1_group 鈴木A           0     3_group 田中C          0     3_group 佐藤C          0     4_group 高橋D          0     4_group 丹羽D          0     (3)3回目の抽出の結果 group name flag ---------------------------------------------------------------------------- 1_group 牧野A           0     3_group 鈴木C          0     3_group 吉田C          0     4_group 田中D          0     4_group 佐藤D          0     DBはSqlLiteです。 長いですが、ご教授頂ければ、ありがたいです

  • Accessで名寄せグループの関係人を抽出する方法について

    先日からAccessを使ってある顧客データから条件抽出していますが、名寄せグループの抽出方法が分からず悩んでおります。 具体的には、全員で8人の顧客データがあります。 仮に名前を A-1,A-2,A-3,B-1,C-1,C-2,C-3,C-4,D-1,D-2 とします。 A,B,C,Dは名寄せグループを意味します。 A=3人、B=1人、C=4人、D=2人となります。 夫々に顧客コードと名寄コードを持っています。 (1)ある条件でA-1,C-2,D-1,D-2が抽出されるクエリ1を作成しました。 (2)次にA-1,C-2,D-1,D-2に関係する名寄せグループの他の顧客コードを抽出したいのですが、この方法が分かりません。 なお、A-2,A-3,C-1,C-3,C-4だけが抽出され、A-1,C-2,D-1,D-2は含まない方法があればBESTです。 当方Access初心者なので、出来るだけ判りやすく教えて頂けると助かります。できれば、初心者なのでデザインビューで分かりやすく教えて頂けると助かります。どうか宜しくお願いいたします。

  • データの抽出について

    エクセルにてデータの抽出をしたいのですが、わからないので教えてください。 例えば、下の様なデータがあります。 回数   1回目   2回目   3回目   4回目 1000    あ      a      A      0 1001    い       b       B      1  1002    う       c       C      2 1003    え      d       D      3   1004    お      e       E      4  1005    か      f       F      5 別のシートに、 回数の1001と入力すると、3回目のBが抽出    1003と入力すると、3回目のDが抽出    1005と入力すると、3回目のFが抽出出来る様にしたいです わかりにくい文章ですいませんが、ご回答よろしくお願いします。 

  • エクセル2003で、データ抽出方法。

    添付させていただいたエクセルのデータで。 A列の都道府県都市名のデータの中から、 C列に存在する都道府県都市名を抽出する方法を 教えていただけないでしょうか? なお、C列の都道府県都市名の中には、A列のデータにはない 都道府県都市名もあります。 もし可能ならば、上記に質問させていただいたように、 A列の都道府県都市名のデータの中から、 C列に存在する都道府県都市名を抽出し、 なおかつ、C列のデータにはあるがA列のデータにはない 都道府県都市名も、抽出できると助かります。 よろしくお願いいたします。

  • グループ最終行のデータを別シートに抽出をしたい

    エクセル2013使用しています。 シート4、A列に(1~10)グループ番号がついたデータがランダム入っています。 シート1、H3にグループ番号1を選択時、シート4の該当するグループ、 I列の最終データのみを、シート1 I3に抽出したい。 シート1、H3グループ番号は選択できるようにしています。 関数を用いてする、方法を 教えてください 添付写真;シート4 グループ番号1の最終データはAAA110となり、シート1 I3セルにAAA110を表示させたい 説明不足で申し訳ありません!!

  • グループ中のデータ抽出について

    以下の様のデータがあり、項目Aが同一のグループで、項目Dの内容が’00’のデータが1件しかないものを抽出(以下★印のデータのみを抽出)するSQLを教示御願い致します。 項目A 項目B 項目C 項目D k1 01 S1 00 ← ★ k2 01 S2 00 k2 01 S3 00 k2 01 S4 00 k3 01 S5 00 ← ★ k3 01 S6 0A k3 02 S7 0A k4 01 S8 0B k4 02 S9 00 ← ★ k4 02 SA 0B k5 01 SB 0B k6 01 SC 00 k6 02 SD 00 k6 02 SE 00 k7 01 SF 0A k7 02 SG 00 ← ★ k7 02 SH 0C k8 01 SI 00 k8 03 SJ 00 k9 01 SL 00 k9 02 SM 00 k9 03 SN 00 kA 01 SO 0A kA 03 SP 00 ← ★

  • エクセルデータ抽出について

    月ごと実績データから指定月のみデータを抽出する方法を教えてください。 サンプルを添付しますのでよろしくお願いします。

  • Access、複数のテーブルからデーターを抽出する

    Access初心者です。 いくつかのテーブルがあります(日付順に用意されています) そのテーブルから、指定のセル(といっていいのでしょうか) より、データーをクエリとして抽出したいのですが、簡単なやり方はあるのでしょうか? 例として、 テーブル名 [0301]、[0302]、[0303]、[0304]、[0305]、・・・・・・・・。という5つのテーブルがあります。 1つのテーブル内は、このようになっています。 ------------------------------------- A B C D E F G 1 2 3 4     11 22 33 44 55 66 5 ------------------------------------- この5つのテーブルより、「B4」から「F4」までのデーターのみを ------------------------------------- 0301 ・・・・・・・・・・・・・・・・・・・・・・・・ 0302   ・・・・・・・・・・・・・・・・・・・・・・・・ 0303   ・・・・・・・・・・・・・・・・・・・・・・・・ 0304 -------------------------------------- といったように取り出すことはできますか? どうぞ宜しくお願い致します。

  • エクセルでデータの抽出する際に困っています

    エクセルで特定の行のデータを抽出する方法を教えてください。 抽出方法を以下に示します。     A   B   C   D   E   F   G   ---------------------------------- 1l  10   11   0   0   0   0   0 2l  12   13   0   0   0   0   0 3l  14   15   1   2   3   4   5 4l  16   17   0   0   0   0   0 5l  18   19   0   0   0   0   0 6l  20   21   6   7   8   9   10 7l  22   23   0   0   0   0   0 というような感じのエクセルデータに対して、     A   B   C   D   E   F   G    ---------------------------------- 1l  14   15   1   2   3   4   5 2l  20   21   6   7   8   9   10 というように、C~G列が0でない行のA~Gのデータを別シートに抽出したいのですが、 簡単な方法があれば教えていただきたいです。 よろしくお願いします。

  • 連続していない日付データからの抽出

    エクセルで、   A   B 1 日付 売上   2 11/21  900 3 11/22 2000 4 11/26 1800 5 11/27 1300   D    E 1 日付  前日比 2 11/21 **% 3 11/22 **% 4 11/26 **% 5 11/27 **% とあります。 そこで、   G   H   I 1 日付 売上 前日比 2 任意 (抽出) (抽出) 3 と、Gに日付を入力したらH、Iにデータが抽出されるように関数を作りたいと思います。 Hには =INDEX(A2:B5,MATCH(G1,A2:A5,0),2) Iには =INDEX(D2:E5,MATCH(G1,D2:D5,0),2) と入力して抽出をしましたが、 例えばG列に元データには無い、「11/23」が入力されたときは、11/23よりも先で1番にくる11/26のデータを抽出するようにしたいのですが、どうしたらいいでしょうか? よろしくお願いします。

専門家に質問してみよう