中小企業の働き方改革をサポート>>

仕事で、エクセルを使ってグループ・日付・商品名・金額の集計表から自動で別のグループ分けした表にデータを写したいのですが、どなたか教えてください。VLOOKUP関数を使ってみましたが、グループ分けした最初のデータしか写りませんでした。
集計表
グループ 日付  商品名 金額
 A    1.1  あああ 100
 A    1.10  いいい 100
 B    1.10 いいい 100
 B    1.15  ううう 100
別表           
グループA 表        グループB 表 
1.1 あああ 100      1.10 いいい 100
1.10 あああ 100      1.15 ううう 100
集計表は1枚で、グループ分けした表は、30ほどあり、集計表のグループ部分はランダムに記入されています。

このQ&Aに関連する最新のQ&A

あああ」に関するQ&A: あああ嫌だ女の性格

A 回答 (5件)

一例ですが、


集計表のA列に作業列を割り込ませ、A1,B1,B2,C1,A2...といった見出しを作り、これによりVLOOKUPで読み取る方法です。

1.集計表(SHEET1)のB列にグループ区分A,B,C..があるものとして
A2に=B2&COUNTIF($B$2:B2,B2) 下へ必要数コピー

2.グループAをSHEET2に集める
SHEET2のA1に「A」と入力する
A2に=VLOOKUP($A$1&ROW()-1,Sheet1!$A$2:$E$10000,3,FALSE)
B2に=VLOOKUP($A$1&ROW()-1,Sheet1!$A$2:$E$10000,4,FALSE)
C2に=VLOOKUP($A$1&ROW()-1,Sheet1!$A$2:$E$10000,5,FALSE)
の式を入力し下へ必要数コピー

これで、SHEET2にはグループAのデータが反映します。

グループBについては、SHEET2のタブを右クリックして「移動又はコピー(M)」でコピーし、コピー後のSHEETのA1を「B」に打ち変えればグループBが反映します。以下グループC以降も同様です。

この回答への補足

ありがとうございます。グループ分けした個々の表を1枚のシートに作成して、A2~A20にAグループの表、A22~A40にBグループの表というように作成したい場合は、どのようになりますか。5項目ほどの簡単な表で試しましたが、うまくいきませんでした。
1.A2に=B2&COUNTIF($B$2:B2,B2)をA10まで入力
  B,C,D,Eにデータ入力

2.A1にA
  A2に=VLOOKUP(&A$1&ROW()-1、SHEET1!$A$2:$E$1000,3,FALSE)
  B2、C2に同様に入力
  A5にB
  A6に=VLOOKUP($A$5&ROW()-1、SHEET1!$A$2:$E1000,3、FALSE)
  B6,C6に同様に入力
この様に入力するとA6からは#N/Aが返されました。E2ではうまくいきましたが、どこがいけないのでしょうか?  

補足日時:2009/11/14 11:50
    • good
    • 0
この回答へのお礼

違った方法を見つけて解決しました。ありがとうございました。

お礼日時:2009/11/28 18:52

これが最後の答えです。

シート1ではF2セルに次の式を入力して下方にオートフィルドラッグします。
=IF(A2="","",IF(COUNTIF(A$2:A2,A2)=1,MAX(F$1:F1)+1,""))
G2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(A2="","",INDIRECT("F"&MATCH(A2,A:A,0))&"/"&COUNTIF(A$2:A2,A2))
シート2のA1セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。
=IF(OR(MOD(COLUMN(A1),5)=0,AND(MOD(COLUMN(A1),5)=1,ROW(A1)<>1)),"",IF(COUNTIF(Sheet1!$F:$F,ROUNDUP(COLUMN(A1)/5,0))=0,"",IF(AND(ROW(A1)=1,MOD(COLUMN(A1),5)=1),INDIRECT("Sheet1!A"&MATCH(ROUNDUP(COLUMN(A1)/5,0),Sheet1!$F:$F,0))&INDEX(Sheet1!$1:$1,MOD(COLUMN(A1)-1,5)+1),IF(AND(ROW(A1)=1,MOD(COLUMN(A1),5)<>1),INDEX(Sheet1!$1:$1,MOD(COLUMN(A1)-1,5)+1),IF(COUNTIF(Sheet1!$G:$G,ROUNDUP(COLUMN(A1)/5,0)&"/"&ROW(A1)-1)=0,"",IF(AND(ROW(A1)<>1,MOD(COLUMN(A1),5)<>1),INDEX(Sheet1!$A:$D,MATCH(ROUNDUP(COLUMN(A1)/5,0)&"/"&ROW(A1)-1,Sheet1!$G:$G,0),MOD(COLUMN(A1),5))))))))
かなり努力をしました。もうこれきりにしてください。お願いします。
    • good
    • 0
この回答へのお礼

色々と回答いただきましてありがとうございました。何とか違った方法を見つけて解決しました。

お礼日時:2009/11/28 18:49

解答No3です。


グループごとの表を1枚のシートでとのことですので、しかも項目数はより多くなるとのことですので次のようにしてはどうでしょう。
シート1ではH2セルに次の式を入力して下方にオートフィルドラッグします。
シート2では1行目には項目の名前を、A1セルには日付、B1セルには商品名、C1セルには金額・・・のように入力します。
A2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方向の20行程度までオートフィルドラッグします。
=IF(OR(COUNTIF(Sheet1!$H:$H,"A"&ROW(A1))=0,A$1=""),"",INDEX(Sheet1!$B:$G,MATCH("A"&ROW(A1),Sheet1!$H:$H,0),COLUMN(A1)))
これでAグループのデータが表示されます。
21行目には1行目に入力したと同じ項目名を入力します。
A22セルには次の式を入力し右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。
=IF(OR(COUNTIF(Sheet1!$H:$H,"B"&ROW(A1))=0,A$21=""),"",INDEX(Sheet1!$B:$G,MATCH("B"&ROW(A1),Sheet1!$H:$H,0),COLUMN(A1)))
これでBグループのデータが表示されます。

この回答への補足

グループ日付  商品名  金額
 A  10.31 あああ \1,000
 A  11.30 いいい \1,100
 B  10.31 ううう \1,200
 B  12.31 えええ \1,300
 A  11.30 おおお \1,400     C  10.31 かかか \1,500
 D  11.30 くくく \1,600
 E  12.31 けけけ \1,700
このような一覧表があり、これをグループ分けした表にデータを反映したいのですが、
 A  日付 商品名 金額   B 日付 商品名 金額     C  日付 商品名 金額    D 日付 商品名 金額
 E  日付 商品名 金額
各グループは、35行ほどで、約30グループ程あります。グループ名が入るセルは、すぐ隣のセルでなくてもかまいません。分かりにくくてすみません。

補足日時:2009/11/14 18:27
    • good
    • 0

シート1のA1セルにグループ、B1セルに日付、C1セルに商品名、D1セルに金額の文字があり、それぞれのデータが2行目以降にあるとします。


E列は作業列としてE2セルには次の式を入力して下方にオートフィルドラッグしまします。
=IF(A2="","",A2&COUNTIF(A$2:A2,A2))
別のシート、例えばグループAのシートでしたらそのシートのA1セルにAと入力します。Sheet1でのA列での文字と同じ半角文字なら半角の文字でAと入力します。
A2セルには日付、B2セルには商品名、C2セルには金額と文字をそれぞれ入力します。
A3セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。
=IF(OR(COUNTIF(Sheet1!$E:$E,$A$1&ROW(A1))=0,COLUMN(A1)>3),"",INDEX(Sheet1!$B:$D,MATCH($A$1&ROW(A1),Sheet1!$E:$E,0),COLUMN(A1)))
これでシート1でのグループAのデータが表示されますね。
別のシートでも同じようにしてA1セルにBと入力すればグループBのデータを表示させることができます。
    • good
    • 0

いろいろ方法はありますが、自分は面倒なのでその用は場合はピボットテーブルで並べ替えています



グループ毎に作成する必要がありますが、集計もできるので便利です


そもそもグループを分ける基準が分かりませんから、投稿された質問だけでは解決しないと思います

また、VLOOKUP関数は表の上から始めに一致したデータ(または検索値以下で一番近い値)を拾ってくる関数です
同じ値のデータを拾うことはできません
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング