• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件に一致したデータの検索・抽出について)

データ抽出方法・重複データの抽出について

このQ&Aのポイント
  • エクセルで2つのデータから条件に一致したデータを検索・抽出する方法について質問します。
  • データBから商品番号の一致したデータをデータAに追加する方法や、重複データの抽出方法について教えてください。
  • データ抽出には重複データの取り扱いや、入荷日の範囲指定が含まれますので、具体的な手順や関数の利用方法を教えていただきたいです。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答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

HumptyDumpty777
質問者

お礼

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

その他の回答 (1)

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

エクセルと言えば (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