• ベストアンサー
  • すぐに回答を!

条件に一致したデータの検索・抽出について

エクセルで2つのデータから条件に一致したデータを検索・抽出がしたいのですが、うまく抽出することができないため、質問させていただきます データA |入荷日|商品番号|商品名|数量|金額| |1.1|1111|〇〇〇|10|10| |1.2|2222|◎◎◎|15|15| |1.3|3333|△△△|20|20| |1.4|4444|◆◆◆|10|10| データB |販売日|商品番号|商品名|販売数| |3.1|1111|〇〇〇|   | |3.2|    |AAA|100| |3.3|    |BBB|120| |3.1|2222|◎◎◎|   | |3.3|    |CCC|100| |3.1|3333|△△△|   | |3.1|4444|◆◆◆|   | データBから商品番号の一致したデータの一部を抽出してデータAに追加したいです (一部が難しいようなら1行そのまま抽出でも大丈夫です) 理想は |入荷日|商品番号|商品名|数量|金額|販売数| |1.1|1111|〇〇〇|10|10|   | |   |    |AAA|  |  |100| |   |    |BBB|  |  |120| |1.2|2222|◎◎◎|15|15|   | |   |    |CCC|  |  |100| |1.3|3333|△△△|20|20|   | |1.4|4444|◆◆◆|10|10|   | もしくは、関数を利用して以下の形にできれば、と思います |入荷日|商品番号|商品名|数量|金額|商品名|販売数|商品名|販売数| |1.1|1111|〇〇〇|10|10|AAA|100|BBB|120| |1.2|2222|◎◎◎|15|15|CCC|100|   |   | |1.3|3333|△△△|20|20|   |   |   |   | |1.4|4444|◆◆◆|10|10|   |   |   |   | データAをベースに、データBから重複データのうちすでにデータAにあるものを省き(1件目は重複データなので2件目以降)抽出する 1.データB商品番号重複しています。重複データの1件目はデータAと共通で、2件目以降を抽出したいです 2.データB商品番号の重複はそれぞれ違うため、1件も重複してないものもあれば3件ほど重複しているものもあります 3.データAは入荷日の範囲を指定したデータですが、データBは入荷日項目がないため抽出する必要のない内容・件数のデータもはいっています。その為、データAから抽出するのではなく、データAをベースにデータBから抽出がしたいです。 よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数145
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.1

'こんなカンジでいかがでしょうか Option Explicit  Dim shDataA As Worksheet  Dim shDataB As Worksheet  Dim shDataC As Worksheet  Dim PutRow As Long '//------------main Sub main()    Dim RowCnt As Long    Set shDataA = ThisWorkbook.Sheets("DataA")  Set shDataB = ThisWorkbook.Sheets("DataB")  Set shDataC = ThisWorkbook.Sheets("DataC")  shDataC.Cells.ClearContents    shDataC.Cells(1, 1).Value = "入荷日"  shDataC.Cells(1, 2).Value = "商品番号"  shDataC.Cells(1, 3).Value = "商品名"  shDataC.Cells(1, 4).Value = "巣量"  shDataC.Cells(1, 5).Value = "金額"  shDataC.Cells(1, 6).Value = "販売数"    RowCnt = 2  PutRow = 1  Do   If shDataA.Cells(RowCnt, 1).Value = "" Then Exit Do   PutRow = PutRow + 1   shDataA.Rows(RowCnt).Copy shDataC.Rows(PutRow)   Tenki shDataA.Cells(RowCnt, 2).Value   RowCnt = RowCnt + 1  Loop End Sub '//------------Sub Sub Tenki(SNum As Long)  Dim RowCnt As Long  Dim HitFlg As Boolean  RowCnt = 2  HitFlg = False    Do   If shDataB.Cells(RowCnt, 1).Value = "" Then Exit Do   If shDataB.Cells(RowCnt, 2).Value = SNum Then    HitFlg = True   ElseIf ((shDataB.Cells(RowCnt, 2).Value <> "") And _    (shDataB.Cells(RowCnt, 2).Value <> SNum)) Then    HitFlg = False   End If       If ((HitFlg = True) And _    (shDataB.Cells(RowCnt, 2).Value = "")) Then    PutRow = PutRow + 1    shDataC.Cells(PutRow, 3).Value = shDataB.Cells(RowCnt, 3).Value    shDataC.Cells(PutRow, 6).Value = shDataB.Cells(RowCnt, 4).Value   End If      RowCnt = RowCnt + 1  Loop End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

毎月集計するものなので、VBAで回答いただけてとても助かりました。 こちらに手を加えて使用させていただきます。 ありがとうございました。

関連するQ&A

  • 検索SQLについて

    SQL初心者です。 SQL文1つで以下のようなことをしたいんですが いい方法が思いつかなくて大変困ってします。 いい方法がありましたら教えてください。 以下のようなデータがあるとして 電話番号、商品名 、日付 、数量 00000001、商品AAA、2004/10/10、1 00000001、商品AAA、2004/10/10、2 00000001、商品BBB、2004/10/10、1 00000002、商品AAA、2004/10/09、2 00000002、商品AAA、2004/10/10、1 00000003、商品AAA、2004/10/10、1 00000003、商品AAA、2004/10/10、1 電話番号と商品名が同じ場合は (1)日付(降順) (2)数量(昇順) の順に比較して1つだけに絞って取得したい 「取得結果」 電話番号、商品名 、日付 、数量 00000001、商品AAA、2004/10/10、1 00000001、商品BBB、2004/10/10、1 00000002、商品AAA、2004/10/09、2 00000003、商品AAA、2004/10/10、1 よろしくお願いします。

  • Excelの関数を使用したデータ抽出

    Excelの関数を使用したデータ抽出 Excelの関数を使用して以下のようなデータ抽出をすることは可能でしょうか? Aに以下の基本データがあります。 --------------- 型番 商品 価格 受注 出荷 仕入 No AAA りんご 100 1/1 1/1 80 001 AAA りんご 120 1/3 1/3 80 002 BBB みかん 200 1/1 1/1 90 003 BBB みかん 210 1/5 1/5 90 004 BBB みかん 220 1/5 1/5 90 005 --------------- Bに型番のみのデータがあります。 --------------- 型番 商品 価格 受注 出荷 仕入 No AAA BBB BBB CCC AAA AAA AAA CCC BBB BBB BBB --------------- Aから抽出したデータをBに反映させたいです。 以下のような形です。 --------------- 型番 商品 価格 受注 出荷 仕入 No AAA りんご 100 1/1 1/1 80 001 BBB みかん 200 1/1 1/1 90 003 BBB みかん 210 1/5 1/5 90 004 CCC ぶどう AAA りんご 120 1/3 1/3 80 002 AAA りんご AAA りんご CCC ぶどう BBB みかん 220 1/5 1/5 90 005 BBB みかん BBB みかん --------------- 宜しくお願い致します。

  • ある条件を持たないレコードの抽出

    下記のようなデータがあります。 col1 col2 ========== 001 AAA 001 BBB 001 CCC 002 AAA 002 CCC 003 BBB 003 CCC 004 AAA col2 にBBB を持たないレコードを抽出したいのですが どのようにSQLを記述すればよいかご教授ください。 得たい結果 002 004 どうぞよろしくお願いいたします。

その他の回答 (1)

  • 回答No.2
  • imogasi
  • ベストアンサー率27% (4558/16318)

エクセルと言えば (1)関数(2)VBA(3)操作(4)特別な操作(例 ピボットテーブル、」統合など) などで解決する方法があるが、(1)の信者や、」、れしかできない質問者が多いようだ。質問者は? ーー 関数では条件を付けて抜き出す、という課題も式が長く、そのアイデアも上級者 でも難しいかな、と思う。 ーー 本件ぐらいになるとVBAでしかできないのでは、と思う。それもADOのSQLなどを使う人もいるかもしれない。  VBAでも難しいと思う。 ーー しかし質問文では、どうしたいというのが、よくわからない。 >条件に一致した>、というのを文章で言ってみてほしい。 ーー 両シートを1つのシートに持ってくると データ種別入荷日商品番号商品名数量金額 A1月1日1111〇〇〇1010 A1月2日2222◎◎◎1515 A1月3日3333△△△2020 A1月4日4444◆◆◆1010 B3月1日1111〇〇〇    B3月2日    AAA100 B3月3日    BBB120 B3月1日2222◎◎◎    B3月3日    CCC100 B3月1日3333△△△    B3月1日4444◆◆◆    となる。 (これらはVBAで、やることになろうが、取り合えず手作業で行った) 多分、同一日内やシート全体のスパンで、「重複したものは削除したい」のだろうが、同一日らしい日付例では見つからない。 この質問で、例を挙げているのは、ご丁寧だと思うが、説明文章も添えないと、よくわからない。特に結果データはどうなってほしいのか) よく言う、見れば分かるというのは、疑わしい。 ーーー ○○○とAAAの類はどう違うのか。 商品番号が空白行は、上行と同じということか?セリ結合をしてあるのか。 VBAではセルの結合があると、それをのぞくために、1手間かかる。 何かこれを読んで反応してみて。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • エクセルの重複データの抽出(条件付)

    エクセルの以下のようなデータから3時間以上連続で出現しているデータを抽出してその行に色をつけるようなマクロを組みたいのですがそのような方法はないでしょうか。 A列   B列 6/1 3:00 AAA社 6/1 3:00 BBB社 6/1 3:00 CCC社 6/1 2:00 AAA社 6/1 2:00 CCC社 6/1 2:00 DDD社 6/1 1:00 AAA社 6/1 1:00 DDD社 6/1 1:00 EEE社 6/1 1:00 FFF社 6/1 1:00 GGG社 6/1 0:00 AAA社 6/1 0:00 BBB社 6/1 0:00 CCC社 6/1 0:00 DDD社 6/1 0:00 GGG社 6/1 0:00 HHH社 ・ ・ ・ A列は日時、B列は企業名です。 B列の企業名が3時間以上連続して出現している行を抽出して、その行(または企業名)に色をつけるか、または重複してる企業名の一覧表示をしたいです。 この例の場合、AAA社とDDD社になります。 (CCC社は3回出現してるけど、3時間連続していないので対象外。) 3時間以上連続して出現というのがポイントです。 データは2000行ほどで、24時間分です。 マクロ初心者でいろいろ検索してみたのですが、わからずすごく困っています。よろしくお願いします。

  • シート1とシート2のデータ一致 抽出方法

    エクセルのデータ抽出でお知恵をお貸し下さい。 シート1 A列  B列     C列 品名  製品番号  数量 AA    1AAAA    200 BB    1BBBB    250 CC    1CCCC    300 シート2 A列   B列     C列 品名  製品番号   数量 AA    1AAAA   200 BB    1BBBB   250 AB    AAAA    500 CC    1CCCC   300 上記のようなシートがあります。 内容は同じなのですが、シート2にはシート1にはない品名、製品番号、数量が含まれます。 シート1の品名、製品番号、数量がすべて一致するものをシート3へ抽出し、 一致しなかったデータ(シート1にはなく、シート2にあるものを含め)をシート4へ抽出したいのですが 何か良い方法はないでしょうか??

  • 【Excel】条件を満たすデータをまとめる

    Excel2003を使用しています。 《表1》 日付       コード  社名   受注番号  金額 2012/04/30   100   AAA   123-45   10000 2012/05/31   100   AAA   123-45   15000 2012/06/30   100   AAA   120-56   10000 2012/05/31   101   BBB   121-44   20000 2012/06/30   101   BBB   123-45   20000 2012/04/30   102   CCC   124-40   30000 2012/06/30   102   CCC   124-40   10000 2012/07/31   102   CCC   124-40   10000 《表1》で、コードと受注番号の両方が同じ場合、その金額を合計して1行にまとめ、《表2》のようにしたいです。 日付は新しいほうを残したいのですが、可能でしょうか? 《表2》 日付        コード  社名   受注番号  金額 2012/05/31    100   AAA   123-45   25000 2012/06/30    100   AAA   120-56   10000 2012/05/31    101   BBB   121-44   20000 2012/06/30    101   BBB   123-45   20000 2012/07/31    102   CCC   124-40   50000 《表2》の状態からさらに他のデータと比較して転記したく、最初はピボットテーブルを使用してみたのですが、使い慣れていないせいか、うまくいかず…。 できれば、VBAか関数で《表2》のようにしたいです。 よろしくお願いします。

  • 【Excel】重複を除いた抽出方法

    以下のような表があります。 No. 項目 ランク 備考 1 AAA 01 あああ 1 AAA 02 いいい 1 AAA 02 ううう 1 AAA 03 えええ 1 AAA 04 おおお 1 AAA 05 かかか 2 BBB 01 ききき 2 BBB 02 くくく 3 CCC 01 けけけ 項目に対してランクがありますが、ひとつの項目に対しランクは「01」「02」「03」「04」「05」しかあってはならないのに、「02」が重複しているものがあります。(例えば3行目は重複しているものとみなされます。備考は違ってもかまいません)) このような重複を省いてデータを抽出したいのです。 抽出の足がかり的なことでもかまいませんので、宜しくお願いいたします。

  • 一覧表よりデータ条件抽出

    教えてください。 下記データ表があります。    A     B      C 1  12/1  AAA  94.1% 2  12/2  BBB  95.6% 3  12/2  BBB  (空白) 4  12/3  CCC  97.3% 5  12/4  DDD  98.4% 6  12/5  EEE  97.3% ・したいこと条件説明 12/2~12/4のデータのみを抽出 %の(空白)セル(行)は抽出しない 日付(A列)は表示しない ・表示結果    A    B 1  BBB  95.6% 2  CCC  97.3% 3  DDD  98.4% としたいのですが・・・ いろいろ試してみましたが、うまくいきません。 よろしく、ご教授のほどお願いします。

  • 抜けている番号を抽出したい(Access2003)

    主キーのフィールドには AAA000001 AAA000002 AAA000004 BBB000001 BBB000003 BBB000004 CCC000001 CCC000005 ・ ・ ・ というレコードが多数あるのですが これだけなら AAA000003 BBB000002 CCC000002 CCC000003 CCC000004 がないというのがぱっと見でわかるのですが データが数千レコードあります。 クエリなどで抽出する方法ありますでしょうか? よろしくお願いします。

  • excel2007でのデーター抽出方法

    素人ですがexcel2007でのデーター抽出方法について 下記の様なデーターがあった場合、会社名で抽出しなお且つ売上ベストテンに並べ替えて表示させる方法はありますか?   会社名 品名 数量 単価  合計 1 AAA会社 aaaa 100  5   500 2 BBB会社 aabb 200  10  2000 3 CCC会社 CCCC 250  20  5000 4 AAA会社 bbcc 150  10  1500

  • アクセス2003 各売上日の直近仕入額を知るには?

    いつもお世話になっています。 クエリを使って次のようなことがしたいのですが可能でしょうか? 下記のような2つのテーブルがあるとします。 <仕入記録> [仕入ID]  [仕入年月日]   [商品名]   [数量]   [単価]   1     2007/04/01     AAA    1    1,000   2     2007/04/03     BBB    1    2,000   3     2007/05/06     AAA    1    1,200   4     2007/05/15     CCC    1     800   5     2007/06/08     BBB    1    2,200   6     2007/06/20     CCC    1     900 <売上記録> [売上ID]   [売上年月日]   [商品名]   [数量]   1      2007/04/25    AAA      1   2      2007/05/08    AAA      1   3      2007/05/08    BBB      1   4      2007/06/10    AAA      1   5      2007/06/10    BBB      1   6      2007/06/10    CCC      1 この時2つのテーブルを使って販売した商品の原価(仕入単価)を求めるクエリを作りたいのですがどのようにしたらよいのでしょうか? 仕入単価は、各商品の売上年月日以前かつ最も売上年月日に近い仕入れ時の単価にしたいと考えています。 上記の場合、希望するクエリの結果は下記のような感じです。 [売上ID]   [売上年月日]   [商品名]   [仕入単価]   1      2007/04/25    AAA      1,000   2      2007/05/08    AAA      1,200   3      2007/05/08    BBB      2,000   4      2007/06/10    AAA      1,200   5      2007/06/10    BBB      2,200   6      2007/06/10    CCC       800 ご指導よろしくお願いします。

  • (EXCEL)重複したデーターの抽出について

    EXCEL2003 シート「sheet1」に下記のようなデーターがあります。 <sheet1>   A   B   C  D 1 りんご 青森 AAA BBB 2 みかん 愛媛 CCC DDD 3 みかん 青森 AAA BBB 4 りんご 青森 AAA BBB 5 みかん 愛媛 CCC DDD A列とB列が同じ値のものをシート「sheet2」に重複しているデーター は1行だけになり、E列にカウントした数が入力されるようにしたいです。 (C列やD列は同じ値でなくてもA列とB列が同じ値の時にカウントして抽出したいです) <sheet2>   A   B   C  D   E  りんご 青森 AAA BBB  2  みかん 愛媛 CCC DDD  2   ご教示のほどお願いします。

  • 関数を使ってデータの抽出

    win excel97を使用しています。 sheet1に下記のようなデータが3000件程度あります。   A       B      会社名   取引先会社名 2 aaa    ○○ 3 aaa    ■■ 4 bbb     △△ 5 bbb    ◆◆ 6 bbb     ●● 7 ccc    ×× sheet2のB~のセルに、sheet1の取引先会社名を列方向に 抽出させてたいのですがどうしたらよいでしょうか? マクロやVBAは苦手なので関数で教えていただきたいです。 sheet2   A      B        C       D 会社名 取引先会社名1  取引先会社名2 ・・・ 2 aaa   ○○      ■■      3 bbb   △△      ◆◆     ●●   4 ccc   ××