表題の通りとなるのですが、
結論、列の項目(複数列)と行の項目と一致した場合、
転記させる処理を試みているのですが中々うまく書き出しができない(何も転記されていない)状況にあります。
※エラー表示はされないものの、意図通りに転記されない
思い当たる節としては、列の項目にある月日の部分が引っかかっています。
また他に自分の持つ配列に対する認識が誤っている可能性もありますが、
有識者の方のお力をお借りしたくご質問させていただきました。
またこういった処理も含めて様々な処理を行うことができると思うのですが、
適した処理方法がございましたらご教示頂けますと幸いです。
(それぞれの項目を変数としてループ処理する方法や
workfunctionを用いての処理を施すなど様々な方法があるかと思いますが、
今回は配列として処理を検討しております。)
VBA
1 2Sub 一致転記() 3 4 Dim ws01, ws02 As Worksheet 5 Dim Dic As Object 6 Dim keys As String 7 Dim I, L, mRow, mCol As Long 8 Dim X, Y, mRow2, mCol2 As Long 9 10 11 Set Dic = CreateObject("Scripting.Dictionary") ' 配列の定義 12 13 Set ws01 = Worksheets("編集") 14 Set ws02 = Worksheets("転記") 15 16 mRow = ws01.Cells(Rows.Count, "C").End(xlUp).Row '最終行取得 17 mCol = ws01.Cells(7, Columns.Count).End(xlToLeft).Column '最終列取得 18 19Application.ScreenUpdating = False 20 With ws01 ' 配列へ登録 21 For L = 8 To mRow ' 範囲(列)指定 22 For I = 18 To mCol '範囲(行)指定 23 24 keys = .Cells(L, "B") & .Cells(7, I) & .Cells(8, I) 25 Dic(keys) = keys 26 Next I 27 Next L 28 End With 29 30 31 32 With ws02 33 34 mRow2 = ws02.Cells(Rows.Count, "C").End(xlUp).Row '最終行取得 35 mCol2 = ws02.Cells(3, Columns.Count).End(xlToLeft).Column '最終列取得 36 37 For X = 4 To mRow2 ' 転記表の範囲(行)指定 38 For Y = 4 To mCol2 ' 転記表の範囲(列)指定 39 40 keys = .Cells(X, "B") & .Cells(2, Y) & .Cells(3, Y) 41 42 .Cells(Y, X) = Dic(keys) 43 Next Y 44 Next X 45 End With 46 47 48Application.ScreenUpdating = True 49End Sub 50
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。