2017-04-25 2 views
0

Ich bin ziemlich neu in VBA.VBA - Kopieren Sie mehrere Spalten mit Index/Match, um mehrere Kriterien zu erfüllen

Ich habe zwei Blätter. Das erste ist ein altes großes Blatt mit veralteten Informationen und das zweite enthält eine Teilmenge des ersten mit aktualisierten Daten.

Hier ist ein (abgeschnittenes) Beispiel für jedes Blatt.

**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 ... 

Und das neue Blatt.

**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' 

Grundsätzlich würde Ich mag mit den Werten aus dem neuen Blatt „Daten“ Spalten in dem alten Blatt ersetzen, basierend auf einem Index/Spiel der drei ersten Spalten.

In Excel, würde dies bedeuten, zum Filtern einer bestimmten Periode/Region und Schreiben eine Matrixformel in Daten mit einer Formel, die wie

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

Und es für jede Spalte „Data“ und jede gefilterte Zeile kopiert würde .

Meine Frage ist: Wie kann ich diesen Ersatz in VBA auf eine ziemlich automatisierte Weise tun?

Antwort

0

Hm, wissen Sie über VBA-Trigger oder wie sie auch heißen? Wie zum Beispiel Sub Worksheet_Change. Grundsätzlich wird ein Makro jedes Mal ausgeführt, wenn eine Zelle geändert wird. Ich denke an so etwas wie dieses

So:

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 

Quelle:

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

Verwandte Themen