データ抽出方法・重複データの抽出について
- エクセルで2つのデータから条件に一致したデータを検索・抽出する方法について質問します。
- データBから商品番号の一致したデータをデータAに追加する方法や、重複データの抽出方法について教えてください。
- データ抽出には重複データの取り扱いや、入荷日の範囲指定が含まれますので、具体的な手順や関数の利用方法を教えていただきたいです。
- ベストアンサー
条件に一致したデータの検索・抽出について
エクセルで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から抽出がしたいです。 よろしくお願いします。
- HumptyDumpty777
- お礼率8% (2/25)
- Excel(エクセル)
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
'こんなカンジでいかがでしょうか 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
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17068)
エクセルと言えば (1)関数(2)VBA(3)操作(4)特別な操作(例 ピボットテーブル、」統合など) などで解決する方法があるが、(1)の信者や、」、れしかできない質問者が多いようだ。質問者は? ーー 関数では条件を付けて抜き出す、という課題も式が長く、そのアイデアも上級者 でも難しいかな、と思う。 ーー 本件ぐらいになるとVBAでしかできないのでは、と思う。それもADOのSQLなどを使う人もいるかもしれない。 VBAでも難しいと思う。 ーー しかし質問文では、どうしたいというのが、よくわからない。 >条件に一致した>、というのを文章で言ってみてほしい。 ーー 両シートを1つのシートに持ってくると データ種別 入荷日 商品番号 商品名 数量 金額 A 1月1日 1111 〇〇〇 10 10 A 1月2日 2222 ◎◎◎ 15 15 A 1月3日 3333 △△△ 20 20 A 1月4日 4444 ◆◆◆ 10 10 B 3月1日 1111 〇〇〇 B 3月2日 AAA 100 B 3月3日 BBB 120 B 3月1日 2222 ◎◎◎ B 3月3日 CCC 100 B 3月1日 3333 △△△ B 3月1日 4444 ◆◆◆ となる。 (これらはVBAで、やることになろうが、取り合えず手作業で行った) 多分、同一日内やシート全体のスパンで、「重複したものは削除したい」のだろうが、同一日らしい日付例では見つからない。 この質問で、例を挙げているのは、ご丁寧だと思うが、説明文章も添えないと、よくわからない。特に結果データはどうなってほしいのか) よく言う、見れば分かるというのは、疑わしい。 ーーー ○○○とAAAの類はどう違うのか。 商品番号が空白行は、上行と同じということか?セリ結合をしてあるのか。 VBAではセルの結合があると、それをのぞくために、1手間かかる。 何かこれを読んで反応してみて。
関連するQ&A
- 関数を使ってデータの抽出
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 ××
- ベストアンサー
- オフィス系ソフト
- 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 みかん --------------- 宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- 一覧表よりデータ条件抽出
教えてください。 下記データ表があります。 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% としたいのですが・・・ いろいろ試してみましたが、うまくいきません。 よろしく、ご教授のほどお願いします。
- ベストアンサー
- オフィス系ソフト
- (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 ご教示のほどお願いします。
- ベストアンサー
- オフィス系ソフト
- Excelで同一のデータを抽出して横並びに
A B C D 商品コード 注文数 商品コード 注文数 aaa 15 ccc 4 bbb 12 ddd 6 ccc 10 aaa 22 ddd 6 eee 10 eee 5 bbb 7 fff 8 kkk 9 kkk 7 lll 4 上記のようなデータを 以下のように同じ商品コードを横並びに表示させたいのですが どういったcountifとかで試したのですが上手くいかず、どのような関数を使えば可能でしょうか? A B C D 商品コード 注文数 商品コード 注文数 aaa 15 aaa 22 bbb 12 bbb 7 ccc 10 ccc 4 ddd 6 ddd 6 eee 5 eee 10 fff 8 kkk 7 kkk 9 lll 4 宜しくお願い致します。
- ベストアンサー
- Excel(エクセル)
- エクセル、複数行のデータを別シートに集計するには?
複数行のデータを別シートに、伝票番号別、品名別に反映させるにはどのような関数にすればいいですか? 例えば、 [シート1] 伝票番号 品名 数量 aaa りんご 50 aaa バナナ 30 aaa もも 15 bbb バナナ 20 bbb りんご 33 ccc りんご 10 ccc バナナ 40 [シート2] A B C D 1 aaa bbb ccc 2 りんご 50 33 10 3 バナナ 30 20 40 4 もも 15 [シート1]の様なデータがあり、それを[シート2]のセルB1に伝票番号を入力したらセルB2、B3...と数量が反映するようにしたいです。 わかりづらくてすいません。 どなたかわかる方がいらしたらお願いします。
- ベストアンサー
- オフィス系ソフト
- 検索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 よろしくお願いします。
- ベストアンサー
- Oracle
- エクセルの重複データを抽出し、最新のデータを残した
エクセルの重複データを抽出し、最新のデータを残したいです。 A列 B列 1 aaa@aaaa.co.jp 2014/1/1 2 bbb@aaaa.co.jp 2013/1/2 3 aaa@aaaa.co.jp 2014/1/10 4 aaa@aaaa.co.jp 2014/10/10 A列にアドレス、B列に日付が入っているデータがあります。 (他にC列などにも顧客情報が入っています。) アドレスの重複データを抽出し、最新の日付の行が残るようにしたいです。 この場合ですと2と4が残るようにしたいです。 膨大なデータの為、困っています。 良い方法をご存知の方、よろしくお願い致します。
- 締切済み
- Excel(エクセル)
- Excel2002:複数条件のデータの個数の集計
苦手な集計について質問させてください。 [A] [B] [1] AAA aaa [2] BBB bbb [3] AAA aaa [4] AAA bbb [5] BBB ccc 上記のようなデータで[A]と[B]のAND条件でみたときの個数を集計したいと思います。 例えば上記であれば、 [A]AAAかつ[B]aaa・・・2個 [A]BBBかつ[B]bbb・・・1個 [A]AAAかつ[B]bbb・・・1個 [A]BBBかつ[B]ccc・・・1個 になります。[B]のデータは[A]のデータに依存せず、[A]の各値にまたがっています。([B]bbbは[A]AAAと[A]BBBの場合があります) 実際のシートでは、全パターンを網羅したリストがA列とB列、集計対象がD列とE列にあります。 上記の例でいえば、以下のようになっています。 [A] [B] [C] [D] [E] [1] AAA aaa AAA aaa [2] AAA bbb BBB bbb [3] BBB bbb AAA aaa [4] BBB ccc AAA bbb [5] BBB ccc つまり[A]列と[B]列が組み合わせパターン、[D]列と[E]列が集計元データです。 ちなみにパターン数が414個、集計元データは29000個程度です。 そして最終的な各パターンの個数を[C]列に表示させたいと思います。 VLOOKUPやピボットテーブルを考えましたが、ピンと来ません。 適切なやり方を教えてください。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 複数の条件
名前 G番号 G連番 数量 チーム AAA 1 1 80 1 AAA 2 1 99 1 AAA 3 1 98 1 AAA 3 2 60 1 AAA 4 1 99 1 AAA 4 2 97 1 BBB 1 1 22 2 BBB 2 1 19 2 BBB 2 2 99 2 BBB 3 1 50 2 CCC 1 1 99 1 CCC 2 1 99 1 DDD 1 1 99 1 DDD 2 1 99 1 DDD 1 1 99 2 DDD 2 1 99 2 以上のようなテーブル T_Aがあるとして、以下のような優先順位での抽出条件を考慮した場合のSQL記述方法が分かりません。教えていただけますでしょうか。 名前 "AAA" OR "DDD" ↓ チーム "1" ↓ G番号 "最大"のもの ↓ G連番 "最大"のもの 欲しいレコード 名前 G番号 G連番 数量 チーム AAA 4 2 97 1 DDD 2 1 99 1 以下のようにやってみましたが駄目でした。 SELECT 名前,G番号,G連番,数量,チーム FROM T_A WHERE 名前='AAA' OR 名前='DDD' AND チーム='1' AND (G番号=(SELECT MAX(G番号) FROM T_A)) AND (G連番=(SELECT MAX(G連番) FROM T_A)) 宜しく御願いいたします。
- ベストアンサー
- その他(データベース)
お礼
毎月集計するものなので、VBAで回答いただけてとても助かりました。 こちらに手を加えて使用させていただきます。 ありがとうございました。