使用excel VBA根据用户input数据更新主列表

背景:

我有一个单下面的工作簿

  • 主工作表:列A填充了帐号
  • 代表每个账户处理器的多个工作表(13)

主工作表和处理器表每天都会填入新的帐户。

每个工作表主,13个人处理器有列A:F

当处理器工作时,他们更新列F的状态。 所有工作表中的列A都是帐号

我想要做的是有一个VBA,开始在主单元的A1search每个单元格(a1,a2,a3 …),直到没有更多的帐户号码处理器个别表的A列,find匹配相应的列A的基于处理器表格的列F中的文本的更新列F的列

就这么简单。

由于某种原因,我无法将自己的头围绕在这个VBA的东西上,所有的例子都变得更加复杂,我似乎无法使它们工作。

感觉我的第一个VBA outing,可以真正使用一些帮助

也许有点难看,但是你可以用这样的方式做到这一点, Master!F1

 =IFERROR(VLOOKUP(A1,Processor1!A:F,6,FALSE), IFERROR(VLOOKUP(A1,Processor2!A:F,6,FALSE), IFERROR(VLOOKUP(A1,Processor3!A:F,6,FALSE), IFERROR(VLOOKUP(A1,Processor4!A:F,6,FALSE), IFERROR(VLOOKUP(A1,Processor5!A:F,6,FALSE), IFERROR(VLOOKUP(A1,Processor6!A:F,6,FALSE), IFERROR(VLOOKUP(A1,Processor7!A:F,6,FALSE), IFERROR(VLOOKUP(A1,Processor8!A:F,6,FALSE), IFERROR(VLOOKUP(A1,Processor9!A:F,6,FALSE), IFERROR(VLOOKUP(A1,Processor10!A:F,6,FALSE), IFERROR(VLOOKUP(A1,Processor11!A:F,6,FALSE), IFERROR(VLOOKUP(A1,Processor12!A:F,6,FALSE), IFERROR(VLOOKUP(A1,Processor13!A:F,6,FALSE), ""))))))))))))) 

然后复制/粘贴到主表的F栏。

VBA

好吧,所以厨师想在VBA中,可能是因为他不想让公式减慢与工作簿的工作。 那么,我会在VBA中通过设置F列的公式,然后修改这些值来实现。

 Sub ColumnF() Application.EnableEvents = False: Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual On Error GoTo Cleanup With Worksheets("Master") With .Range("A1", .Cells(.Rows.count, 1).End(xlUp)).offset(, 5) .Formula = "=IFERROR(VLOOKUP(A1,Processor1!A:F,6,FALSE)," & _ "IFERROR(VLOOKUP(A1,Processor2!A:F,6,FALSE)," & _ "IFERROR(VLOOKUP(A1,Processor3!A:F,6,FALSE)," & _ "IFERROR(VLOOKUP(A1,Processor4!A:F,6,FALSE)," & _ "IFERROR(VLOOKUP(A1,Processor5!A:F,6,FALSE)," & _ "IFERROR(VLOOKUP(A1,Processor6!A:F,6,FALSE)," & _ "IFERROR(VLOOKUP(A1,Processor7!A:F,6,FALSE)," & _ "IFERROR(VLOOKUP(A1,Processor8!A:F,6,FALSE)," & _ "IFERROR(VLOOKUP(A1,Processor9!A:F,6,FALSE)," & _ "IFERROR(VLOOKUP(A1,Processor10!A:F,6,FALSE)," & _ "IFERROR(VLOOKUP(A1,Processor11!A:F,6,FALSE)," & _ "IFERROR(VLOOKUP(A1,Processor12!A:F,6,FALSE)," & _ "IFERROR(VLOOKUP(A1,Processor13!A:F,6,FALSE)," & _ """"")))))))))))))" .Value = .Value ' remove formula and freeze value End With End With Cleanup: Application.Calculation = xlCalculationAutomatic: Application.ScreenUpdating = True: Application.EnableEvents = True End Sub 

这应该比列A中所有单元格上的VBA循环更好更快; 首先是因为它使用了Excel的内置function而不是VBA循环,其次是因为它最小化了VBA和Excel之间的交换。