VBA - 使用索引/匹配复制多个列以符合多个条件

时间:2017-04-25 13:02:45

标签: vba excel-vba excel

我对VBA很新。

我有两张纸。第一个是旧的大表,信息过时,第二个包含第一个包含更新数据的子集。

这是每张表的(截断的)示例。

**Old Large Sheet**

Year Month Region Data1 Data2 CalculatedData1 CalculatedData2
2016 1     1      X1    Y1    X1              X1/Y1
2016 2     1      X2    Y2    X1+X2           X2/Y2
2016 3     1      X3    Y3    X1+X2+X3        X3/Y3
...
2017 1     1      X13   Y13   X13             X13/Y13
...
2025 12    30     XXX   YYY   ...

和新表。

**New Sheet**
Year Month Region Data1 Data2
2017 1     1      X13'  Y13'
2017 2     1      X14'  Y13'
2017 3     1      X15'  Y15'
2017 4     1      X16'  Y16'  

基本上,我想根据三个第一列的索引/匹配,将旧工作表中的“数据”列替换为新工作表中的值。

在Excel中,这意味着过滤特定的时间段/区域,并在数据公式中编写数组公式,就像

{=INDEX('NewSheet'!D2:D1000;MATCH($A2&$B2&$C2;_
             'NewSheet'!$A$2:$A$1000&$B$2:$B$1000&$C$2:$C$1000;0))}

并为每个“数据”列和每个已过滤的行复制它。

我的问题是:如何以非常自动化的方式在VBA中进行此替换?

1 个答案:

答案 0 :(得分:0)

嗯,你知道关于vba触发器还是他们所称的任何东西?比如Sub Worksheet_Change。基本上每次更改单元格时都会运行一个宏。

所以我正在考虑这样的事情:

Sub Worksheet_Change()

   'check cell index
   'check if data is outdated
   'if yes, replace data
   'grab a beer while you revel in a world of automation

end Sub

来源:

https://support.microsoft.com/en-us/help/213612/how-to-run-a-macro-when-certain-cells-change-in-excel