|
▼かん さん:
こんにちは
なぜかレスがつきませんね。
例としてアップされたものは、あくまで例ですよね。
このままなら、単に、BookX,Y,ZのC列をBookAにコピペすればいいことになりますから
ロジックというほどのものじゃないわけですよね。
なので、あくまで、BookX,Y,Z の A列に紐つけ番号があって、それは必ずしも連番じゃなく
また、まとまってもいない。で、BookA の その紐付け番号該当行のC列に値を転記。
また、必ずしも、行数は100行とか、そのなかで最初の33行がどうこうというわけでは
ないんですよね。
と、勝手に推測して。BookA,X,Y,Z が全て開かれているという前提で。
Sub Sample()
Dim dic As Object
Dim v As Variant
Dim i As Long
Set dic = CreateObject("Scripting.Dictionary")
Call SetDic(dic, Workbooks("BookX.xls").Sheets("Sheet1")) 'シート名は実際のものを
Call SetDic(dic, Workbooks("BookY.xls").Sheets("Sheet1")) 'シート名は実際のものを
Call SetDic(dic, Workbooks("BookZ.xls").Sheets("Sheet1")) 'シート名は実際のものを
With Workbooks("BookA.xls").Worksheets("Sheet1") 'シート名は実際のものを
v = .Range("A1", .Range("A" & .Rows.Count).End(xlUp)).Resize(, 3).Value
For i = 1 To UBound(v, 1)
v(i, 3) = dic(v(i, 1))
Next
.Range("C1").Resize(UBound(v, 1)).Value = WorksheetFunction.Index(v, 0, 3)
End With
Set dic = Nothing
End Sub
Private Sub SetDic(dic As Object, sh As Worksheet)
Dim c As Range
With sh
For Each c In .Range("A1", .Range("A" & .Rows.Count).End(xlUp))
dic(c.Value) = c.Offset(, 2).Value
Next
End With
End Sub
|
|