|
シート名 Scheduleの中の表に
別シートから入力されたデータが積み上げられます。
表の開始範囲は10行目からデータが積み上げられます。
その表のH列にT1やT2、P2などのコードが入力されます。
入力されたら
シート名 process のD5よりしたに同じようにT1なのどコードがあり
マッチすればその行のE〜R(14個)のセルを
シート名 Schedule のAD〜AQ(14個)に転記したいです。
▼UO3様
下記で実行してみましたが、完了できませんでした。
現象としては部分的に転記されますが、すべての行に転記できていないじょうたいです。
>以前の計画表はH列が、投入数だったように記憶しているんだけど、そこが T1や>T2やP2?
>で【入力されます】ということは、以前のH列はINPUTシートのH列をベースに調>整された数値が
>計画表のH列に転記されたんだけど、そうではなく、Scheduleシートの上で>Processシートとは
>関係なく、独自に入力されるということですか?
以前より少し行を増やしたりして改良しました。
H列にはINPUTからコピーしたものが入ります。
>2つのシートのコード列ですが、同じコードが重複して存在しますか?
重複しないです。
Sub ひとつ目()
Const fCode As String = "D" 'Processシートのコード列
Const fLine As Long = 5 ' データ開始行
Const tCode As String = "H" 'Scheduleシートのコード列
Const tLine As Long = 10 ' データ開始行
Dim dic As Object
Dim c As Range
Dim x As Long
Dim v As Variant
Dim i As Long
Dim j As Long
Dim shTo As Worksheet
Set shTo = Sheets("Schedule")
Set dic = CreateObject("Scripting.Dictionary")
x = shTo.Range(tCode & shTo.Rows.Count).End(xlUp).Row
v = shTo.Range("AD" & tLine & ":AQ" & x).Formula
For Each c In Range(shTo.Range(tCode & tLine), shTo.Range(tCode & x))
dic(c.Value) = c.Row - tLine + 1
Next
With Sheets("Process")
For Each c In Range(.Range(fCode & fLine), .Range(fCode & .Rows.Count).End(xlUp))
If dic.exists(c.Value) Then
i = dic(c.Value)
For j = 1 To UBound(v, 2)
v(i, j) = c.EntireRow.Range("E1").Offset(, j - 1).Value
Next
End If
Next
End With
shTo.Range("AD" & tLine).Resize(UBound(v, 1), UBound(v, 2)).Value = v
shTo.Select
MsgBox "転記完了"
End Sub
|
|