• ベストアンサー

エクセルのデータ検索について困っています

仕事で、エクセルを使ってグループ・日付・商品名・金額の集計表から自動で別のグループ分けした表にデータを写したいのですが、どなたか教えてください。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ほどあり、集計表のグループ部分はランダムに記入されています。

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

  • ベストアンサー
  • minosennin
  • ベストアンサー率71% (1366/1910)
回答No.2

一例ですが、 集計表の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以降も同様です。

yo1to2ma3
質問者

お礼

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

yo1to2ma3
質問者

補足

ありがとうございます。グループ分けした個々の表を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ではうまくいきましたが、どこがいけないのでしょうか?  

その他の回答 (4)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

これが最後の答えです。シート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)))))))) かなり努力をしました。もうこれきりにしてください。お願いします。

yo1to2ma3
質問者

お礼

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

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

解答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グループのデータが表示されます。

yo1to2ma3
質問者

補足

グループ 日付  商品名  金額  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グループ程あります。グループ名が入るセルは、すぐ隣のセルでなくてもかまいません。分かりにくくてすみません。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

シート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のデータを表示させることができます。

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

いろいろ方法はありますが、自分は面倒なのでその用は場合はピボットテーブルで並べ替えています グループ毎に作成する必要がありますが、集計もできるので便利です そもそもグループを分ける基準が分かりませんから、投稿された質問だけでは解決しないと思います また、VLOOKUP関数は表の上から始めに一致したデータ(または検索値以下で一番近い値)を拾ってくる関数です 同じ値のデータを拾うことはできません

関連するQ&A

  • Excel データを集計する

    お世話になります。Excel2003です。データ表を集計するのですが、ちょっとわからないことがあるので教えてください。 A1~G1まで 「日付」「商品名」「品目」・・・等の項目名がならんでて、それぞれ下にデータが並んでいます。 この表のデータを集計するのですが、 データ→集計 で、「集計の設定ダイヤログボックスを出します。 グループの基準というボックスに「分類」というものがでるはずなのですが、それは出ず、日付」「商品名」「品目」・・・等の項目名しか選択できません。なぜ「分類」というものがでないのでしょうか?どうかおしえてください。

  • エクセルで最新データのみ表示させたい

    Excel2003を使用しています。 毎日データを入力している表があるのですが、それを月末に最新データのみの一覧表にしたいのです。 A      B     C     D     E      F     G   H 日付 店舗コード 店舗名 商品コード 商品名 数量 単価 金額 店舗名・商品名は別シートにコード一覧表があり、そこからVLOOKUPで表示させています。 日付・店舗ごとに小計行を入れています。 件数は3000近くあります。これを商品名ごとに最新のデータ行のみを表示した表にしたいのです。 フィルタオプションの重複データを無視するや集計などやってみましたがうまくいきません。 VBAは書くことは出来ませんが、簡単な修正は出来ると思います。 どういった方法がありますでしょうか? よろしくお願い致します。

  • マクロで検索条件2つのデータを探してくるには

    かなり初心者の質問ですいません。 マクロで、エクセルのVLOOKUP関数のような事がやりたいのですが、 条件を2つ設定することはできるのでしょうか。 データは、 ファイル1 商品データA.xls ファイル2 商品データB.xls ファイル3 グループ分け分類.xls とあり、まずはマクロで「商品データA」の下に「商品データB」を貼り付けます(ここまでは問題ありません) このデータには「商品コード」と「区分」があります。 これに応じて、ファイル3の「グループ分け分類.xls」から データを引っ張ってきたいのです。 (ファイル1・2の加工物にも、ファイル3にも  「商品コード」と「区分」があります) この場合のコードのやり方がわかりません。

  • エクセル、VBA、抽出複数検索について

    エクセル、VBA、VLOOKUP、MATCH関数等について出来る方法があれば教えてください。 インチごとに分けてあるシートがあり、(在庫表です) これを参照して、別ブックへVLOOKUP等を使って、サンプルデータのシート4のように表示させたいのですが、 何か方法を使って出来ることは可能でしょうか? 問題点が複数あります 1、VLOOKUPの範囲について、B列が結合されていて、C列は複数行あるため、商品名が入ってきません。 C列については、何千件とデータがあるため、結合することは不可能です。 一致している条件としては商品コードが必ずあり、商品名には「/」が入っております。 =CONCATENATEとVLOOKUPは一緒に使うことは可能ですか? もしくはINDEX関数やIF、SUMPRODUCT等を使うのでしょうか? シート4のような形に出来る方法があれば、教えてほしいです。 VBAは詳しくはないのですが、VBAで出来るのであれば、教えてほしいです。 在庫表はとても作り方が悪いのですが、これを作り直すと言うことは、不可能です。 グループ会社で使っているため、なんとかこの在庫表を使いたいです。 VBAでA列をA5からA100にコードのみ入れた場合、B列に商品名が入るようにVBAで作ることは可能でしょうか? もしくは、検索条件を2つ使って、一つは商品コード完全一致+あいまい検索で【/】で商品名を入れることは可能でしょうか? 関数は調べたのですが、関数では難しいのかなと思います。 宜しくお願い致します。

  • エクセルでばらばらのデータを一つにまとめたい。

    以下のような表を作成したいのです。 【作成したい表】     A     B    C 1  商品名  値段   店舗名  2  みかん   30    A店 3  りんご   120    B店 4  ばなな   150    C店 5  らっきょ   200   D店 今、欲しいデータが違うファイルにあります。 【データがある表】     A     B     1  商品名  入荷   2  みかん   30    3  オレンジ  100   4  いちご    300   5  らっきょ   200   現段階で、【作成したい表】のB列の値段は空白です。 【作成したい表】のAの列と【データがある表】のA列の文字列を検索し、 データが一致した場合、 【作成したい表】のB列値段の該当する行に【データがある表】のB列値段へ書き込みたいのです。 A列商品名は【作成したい表】と【データがある表】では並び順も違いますし、 商品名がないものもあります。 たとえば、みかんを例にとると、 【データがある表】A:2に「みかん」があります。 【データがある表】B:2に「30」とありますので、 【作成したい表】B:2に「30」と書き込む。 こんな感じです。 エクセル初心者なのですが、急きょ仕事で大量データの移し替え を頼まれました。 おそらくVLOOKUP関数やIF関数を使用するのだと思いますが うまくいきません。 よろしくお願いします。

  • エクセルの関数について

    Windows Xp エクセル2003を使用しています。 業務で使用している集計表ファイルがあり、別ファイルにデータを反映させたいのです。 集計表のセルA1を検索値としセルB1とセルB2の値を返す関数はないでしょうか? 集計表のつくりは約1000行あり、セルA3を検索値としてセルB3の値を返す行もあります。 セルA5を検索値とし、B5、B6、B7、C5,C6の値を返す行など様々です。 こういったデータがランダムで表になっています。一つの検索値に対して、検索値の水平方向はvlookup関数で表示出来たのですが、 一つの検索値で2つの値を返す関数が分からず、困っています。 1行下や2行下を検索する関数も参考にしたのですが、集計表のつくりがランダムの為、検索してほしくないものまで表示されてしまうなど、ウマクできませんでした。 宜しくお願いします。

  • エクセル関数を使用したデータ集計について

    関数の質問です。 仕事でデータ集計をしており、 あるデータを他のシートに集計できる関数はありますでしょうか。 具体的には、 添付画像のような Aの表に、Bのデータを、Cのルールを 用いて、集計したいです。 Vlookupとsumifsを用いろうとしましたが、うまくいきませんでした。 B-2のデータをvlookにして、 sumifsの式のデータ範囲の中にいれましたが、うまくできません。 補足 B-2の列をvlookで他の列に集計せずに、関数のみでBのシートからいきなりAの集計表に集計したいです。 (理由は、数字をあちこちに貼り付けると、その照合をしなくてはならないため、あちこちには貼りたくないのです) 関数は一つのセルの中に複数組み合わせるのは、もちろん問題ありません。 よろしくお願いいたします。

  • エクセルで集計をしたいのです

    お世話になります。 Accessからエクスポートした表があります。 (集計元表) [商品名]|[支店名]|[日付]|[売上数]| 商品A|支店1|2011/08/01|6| 商品A|支店1|2011/08/05|2| 商品A|支店2|2011/08/01|3| 商品B|支店1|2011/08/01|9| 商品B|支店2|2011/08/01|1| … これを以下のように、商品毎に表にしたいのです。 (集計表:商品A) 商品A|8/1|8/2|8/3|8/4|8/5|合計| 支店1| 6 | 0 | 0 | 0 | 2 | 8 | 支店2| 3 | 0 | 0 | 0 | 0 | 3 | 合計 | 9 | 0 | 0 | 0 | 2 | 11 | (集計表:商品B) 商品A|8/1|8/2|8/3|8/4|8/5|合計| 支店1| 9 | 0 | 0 | 0 | 0 | 9 | 支店2| 1 | 0 | 0 | 0 | 0 | 1 | 合計 | 10 | 0 | 0 | 0 | 0 | 10 | 合計の行/列は最後にsumしますが、集計元表から 集計表カドの商品名、日付、支店を判別してセルに売上数を収める 手段のヒントを頂ければ幸いです。 セル関数でもVBAでもなんでも構いません。 宜しくお願いします。

  • 日付と商品名の2つの条件で集計

    A列に商品名(2~10行)、B列に金額(2~10行)、C列に日付(2~10行)の表で日付範囲条件と商品名の条件の両方満足する行の金額を集計したいのですが方法を教えて下さい。日付の集計はSUM,DATE関数で、商品名のみの集計はSUMIF関数で求めることができますが両方の条件式がわかりません。よろしくお願いします。

  • エクセルデータをVBAを使って集計する方法

    エクセルのデータを次のように集計したいのですが、良い方法を教えて下さい。VBAに組み込みたいのですが。 元のデータは次のような項目に分かれています。 (納入日)(契約番号)(取引先)(商品名)(数量)(金額)  納入日毎に1件づつ入力されているのですが、これを、取引先別、商品別に数量と金額を集計したいのです。 集計項目が2項目あるため、ピボットテーブルで集計すると、1件が2行になってしまい、後の加工がしづらいのです。 今のところ、ピボットテーブルで数量と金額を別々に集計して、後でVLOOKUP等の関数を使って表を1つする事を考えているのですが、もっと良い方法をご存知ないでしょうか。

専門家に質問してみよう