- ベストアンサー
データ抽出方法・重複データの抽出について
- エクセルで2つのデータから条件に一致したデータを検索・抽出する方法について質問します。
- データBから商品番号の一致したデータをデータAに追加する方法や、重複データの抽出方法について教えてください。
- データ抽出には重複データの取り扱いや、入荷日の範囲指定が含まれますので、具体的な手順や関数の利用方法を教えていただきたいです。
- みんなの回答 (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/17069)
エクセルと言えば (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手間かかる。 何かこれを読んで反応してみて。
お礼
毎月集計するものなので、VBAで回答いただけてとても助かりました。 こちらに手を加えて使用させていただきます。 ありがとうございました。