表題の通り、配列に関してItemの格納がいかない点について、
ご質問させてください。
配列そのもの自体の概念の知識不足によるものから
発生していることは重々承知の上ご質問させて頂いてる次第です。
【やりたいことの一連の流れ】
1.入力シートにあるデータを配列へ
2.重複しないkeyの格納
3.keyと紐づくitemの格納
4.転記データにある転記シートを一番最後にコピー作成
5.転記シート内セルF4にKeyを転記
6.Keyと紐づくアイテムを転記
7.シート名をKeyに変更
8.keyの数だけ繰り返し処理
と上記の流れで処理を行いたいと考えております。、
"Keyの格納→シートコピー→シート名をKeyに変更"
の流れであればうまく動作するのですが、
keyに紐づくitem格納の部分で躓いてる状況にあります。
恐らくitemがうまく連動(格納)されていないことから
上手くいっていないものと思われるのですが、どうか有識者の方のお力をお借りしたく
ご質問させていただきました。
また補足点や何か不足内容があれば追記いたしますので、
ご教示の程よろしくお願いいたします。
【追記】
画像あった方が伝わりやすいかと思い画像を追加させていただきました。
▼重複について
シート名の転記時に使用する時に使用する重複しないリストを作成、
Keyに紐づくitemは重複の有無関係なくKeyが同様であれば転記を行いたいと考えています。
VBA
1 For I = 9 To wb2Row 2 3 list = .Cells(I, "E").Value 'Key&item 4 5 '未登録がある場合は登録(重複防止) 6 If Not dc.exists(list) Then 7 dc.Add list, "" 8 End If
上記コード部分で重複判別している認識なのですが、誤りでしょうか..?
VBA
1Option Explicit 2 3 4Sub 別ブックシート転記() 5 6'----------------------------------------------------------------------------- 7'Thisworkbookを変数へ格納 8'----------------------------------------------------------------------------- 9Dim wb1 As Workbook 10Set wb1 = ThisWorkbook 11 12'----------------------------------------------------------------------------- 13'転記データの取得・展開 14'----------------------------------------------------------------------------- 15Dim path2 As String 16path2 = ThisWorkbook.Sheets("データ元").Range("D2") 17 18Dim datename2 As String 19datename2 = "転記Date.xlsx" 20 21Dim wb2 As Workbook 22Workbooks.Open (path2 & "\" & datename2), ReadOnly:=False 23Set wb2 = Workbooks(datename2) 24'----------------------------------------------------------------------------- 25Application.ScreenUpdating = False 26 27Dim dc As Object 28Dim list As String 29Dim I, L As Long 30Dim wb2Row As Long 31 32 33Set dc = CreateObject("Scripting.Dictionary") 'dcの作成 34 35With wb1.Sheets("入力") 36wb2Row = .Cells(Rows.Count, "C").End(xlUp).Row 37 For I = 9 To wb2Row 38 39 list = .Cells(I, "E").Value 'Key&item 40 41 '未登録がある場合は登録(重複防止) 42 If Not dc.exists(list) Then 43 dc.Add list, "" 44 End If 45'------------------------------------------------------------------------------------ 46 'Keyに紐づくitemの格納 47 dc.Add list, .Cells(I, "D") 'No. 48 dc.Add list, .Cells(I, "M") 'Code 49 dc.Add list, .Cells(I, "H") 'Name 50'------------------------------------------------------------------------------------ 51 Next I 52End With 53 54wb2.Activate 55 56For L = 0 To dc.Count - 1 57 wb2.Sheets("転記").copy after:=Worksheets(Worksheets.Count) 58 wb2.Sheets("転記(2)").Range("F4") = dc.keys()(L) 'Keyの転記 59 60'------------------------------------------------------------------------------------ 61 wb2.Sheets("転記(2)").Cells(I + 10, "C") = dc.Items()(1) 'Item1の転記-No. 62 wb2.Sheets("転記(2)").Cells(I + 10, "D") = dc.Items()(2) 'Item2の転記-Code 63 wb2.Sheets("転記(2)").Cells(I + 10, "E") = dc.Items()(3) 'Ite3の転記-Name 64'------------------------------------------------------------------------------------ 65 66 wb2.Sheets("転記(2)").Name = dc.keys()(L) 'Keyの転記 67Next L 68 69Application.ScreenUpdating = True 70 71 72End Sub 73 74 75
回答2件
あなたの回答
tips
プレビュー