実現したいこと
やりたい事:4パターン、8パターンシートの内容を照合し、照合結果シートのボタンで照合結果を出力したいです。
前提環境①:照合結果シートのA3~E3項目は、フォーマットとして用意されている。
条件①:4パターン、8パターンシートの行数は300行数を想定
条件②:4パターン、8パターンシートの照合キーは、部品コード
条件③:4パターン、8パターンシート毎で、以下データ集約を行った後、4パターン、8パターンシートの照合を行いたい。
●第一データ集約条件
①重複部品コードがあった場合、1つに集約する。その際、数量は加算、部品名は上書き集約
②重複しない部品コードは、数量、部品名そのまま
●第二データ集約条件
①部品コードに対して、4パターン、8パターンシートの数量を表示
②部品名は、上書き
※8パターンシート11行名の部品_Fと4パターンシート11行目の部品Fとなっているが、部品コードは同一の為、どちらかに上書きされる形にしたい。
③照合結果は以下条件のように表示させたい
発生している問題・エラーメッセージ
実行時エラー450 引数の数が一致していません。または不正なプロパティを指定しています。
該当のソースコード
VBA
1Sub 重複データ集約し照合() 2 3Dim myDic As Object 'Dictionaryオブジェクト使用 4Dim myPc As Variant '部品コード変数 5Dim myQu As Variant '数量変数 6Dim myPn As Variant '部品名変数 7Dim myList As Variant '部品コード、数量、部品名配列 8Dim i As Long '配列カウント数 9Dim cWs As Worksheet '4パターンシート 10Set cWs = Worksheets("4パターン") '4パターン変数 11Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "4パターン_仮" '4パターン_仮シート作成 12Dim cWs1 As Worksheet '4パターンシートコピー 13Set cWs1 = Worksheets("4パターン_仮") '4パターン_仮変数 14 15 Set myDic = CreateObject("Scripting.Dictionary") 16 17 '数量,部品コード,部品名のデータを配列に格納※社内外列は照合に不要だが、列分割での格納方法が分からない 18 cWs.Activate 19 myList = Range("A4", Range("A" & Rows.Count). _ 20 End(xlUp)).Resize(, 4).Value 21 22 23 '連想配列にデータを格納 1次元 24 For i = 1 To UBound(myList, 1) 25 26 '部品コードが空欄かチェック 27 If Not myList(i, 3) = Empty Then 28 If Not myDic.exists(myList(i, 3)) Then '配列重複チェック 29 30 '重複しない部品コードを取得※数量,部品コード,部品名を取得したいが、複数Itemの場合エラー発生 31 myDic.Add Key:=myList(i, 3), Item:=myList(i, 1), Item:=myList(i, 4) 32 Else 33 34 '数量を加算 35 myDic(myList(i, 3)) = myDic(myList(i, 3)) + Val(myList(i, 1)) 36 End If 37 End If 38 Next 39 40 '[部品コード] 重複していないリストを格納 41 myPc = myDic.keys 42 43 '[部品名] 品目を格納 44 myPn = myDic.items 45 46 '[数量] 品目コードの合計を格納 47 myItem = myDic.items 48 49 'リストを出力 50 For i = 0 To UBound(myPc) 51 cWs1.Cells(i + 2, 1).Value = myPc(i) 52 cWs1.Cells(i + 2, 2).Value = myPn(i) 53 cWs1.Cells(i + 2, 3).Value = myQu(i) 54 Next 55 56 '開放※setで使用したものを閉じる(DBへのアクセス、変数) 57 Set myDic = Nothing 58 59End Sub 60 61
試したこと
やりたい事から、以下方針でプログラムを考えたのですが、初期段階でつまづきました。
また、やりたい事が複雑であるため、道筋も見えず、お力添えをお願いします。
第一データ集約条件を目指して、4パターン、8パターンシート毎で集約処理を実施しようとしたら、
部品コード、数量、部品名の2つ以上の変数処理を行うとことでエラーが発生しました。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/11 08:37
2022/05/11 09:14
2022/05/11 09:59
2022/05/13 02:22