私はこれらの2つのテーブルを取得しました.1つはデータテーブル、2番目は命令テーブルです。VBA - 別のブックを使用してマスタブックをロードする
私は毎日命令表を更新し、IDに基づいてデータテーブルを更新するマクロを実行します。
現在のところ、これは本当に簡単です。データテーブルID(Col A)が命令テーブルID(Col J)と一致する場合、対応するデータCol B〜Fは命令テーブルに従って更新される。
DATATABLE
コルA = ID
コルBG =異なる名前
指示テーブルである:
コルIは、Nに(変化(Yへの変化)を追加または削除であります)Col Ki
ColJは、ID
C1 Kは更新する名前(Col B-Gのヘッダ)を示します。
Sub updatedatatable()
On Error Resume Next
Dim instructionlastrow, findtablecolumn, findtablerow As Long
Dim findid As Integer
instructionlastrow = Range("I" & Rows.Count).End(xlUp).Row
For i = 2 To instructionlastrow
findid = 0
If Range("I" & i).Value = "Add" And Range("A:A").Find(Range("J" & i).Value).Row = 0 Then
Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 1).Value = Range("J" & i).Value
findtablecolumn = Rows(1).Find(Range("K" & i)).Column
findtablerow = Range("A:A").Find(Range("J" & i)).Row
Cells(findtablerow, findtablecolumn).Value = "Y"
ElseIf Range("I" & i).Value = "Add" And Range("A:A").Find(Range("J" & i).Value).Row <> 0 Then
findtablerow = Range("A:A").Find(Range("J" & i)).Row
findtablecolumn = Rows(1).Find(Range("K" & i)).Column
Cells(findtablerow, findtablecolumn).Value = "Y"
ElseIf Range("I" & i).Value = "Remove" And Range("A:A").Find(Range("J" & i).Value).Row <> 0 Then
findtablerow = Range("A:A").Find(Range("J" & i)).Row
findtablecolumn = Rows(1).Find(Range("K" & i)).Column
Cells(findtablerow, findtablecolumn).Value = "N"
End If
Next i
End Sub
命令テーブルが異なるワークブックからロードできるように、誰も私を教えることができる場合、私はさまよいました。
おかげ
はい、あなたは正しいです、彼らは現在、同じワークシートにあります。しかし、私はそれを別のワークブックに分割したいので、管理しやすくなります。私はworkbooks.openの使い方を理解していますが、新しい開かれたブックに基づいてすべてのチェック/更新を行う方法がわかりません。あなたがそれをやる方法を私に教えてもらえれば、残りのコードをそれに応じて編集することができます。基本的に私は、ユニークな識別子を介して命令ブックにしたがってデータテーブルブックを更新し、命令に従って異なる方法で更新したいと考えています。 – Zardi