我有这两个表,1是数据表,第二个是指令表。
每天我都会更新指令表,然后运行宏,它将根据ID相应地更新数据表。
目前非常简单。如果数据表ID(Col A)与指令表ID(Col J)匹配,则相应的数据Col B-F将根据指令表进行更新。
数据表
Col A = ID
Col B-G =不同的名字
指令表是:
Col I是添加(更改为Y)或删除(更改为N)Col K i
Col J是ID
COl 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
如果有人可以教我,我可以徘徊,以便可以从不同的工作簿加载指令表。
由于
答案 0 :(得分:0)
根据你的描述,我不确定这两个表的关系应该是什么,但我理解为这个;您目前将它们放在同一工作簿中(在同一工作表中?)但希望将它们放在不同的工作簿中。
要从vba中的其他工作簿访问工作簿,您可以使用Workbooks.Open方法 https://msdn.microsoft.com/en-us/library/office/ff194819.aspx
我还可以推荐Ron de Bruin的一些代码示例 http://www.rondebruin.nl/win/section3.htm
由于您还没有尝试访问单独的工作簿,我不是100%想要做的事情,但请查看链接,尝试解决方案然后再回来如果你再次陷入困境。