2016-09-09 6 views
-1

Ich habe zwei Excel-Tabellen: "Sheet1" und "Sheet2".Excel VBA suchen Sie nach Werten in anderen Blatt und kopieren Sie sie

Sheet1 enthält 3 Spalten mit einer Anzahl von N Zeilen. Beispiel:

x  y  result 

A  b 
B  m 
L  a 
A  b 
B  b 

Sheet2 enthält 3 Spalten als gut, aber mit dem Ergebnis, als Erklärung für jeden x und y-Kombination.

Beispiel:

x  y  result 

A  a  1 
A  b  2 
A  c  3 
B  a  4 

Bitte beachten Sie, dass A = a, und das Ergebnis ist nicht immer ein numerischer Wert!.

Also im Grunde muss ich Sheet2 für eine bestimmte Kombination von Werten von Sheet1 suchen und das Ergebnis von Sheet2 zu Sheet1 kopieren.

Können Sie mir ein Beispiel für VBA-Code geben, wie Sie dies erreichen? Wahrscheinlich ist es sogar mit einer Excel-Formel möglich? Wahrscheinlich INDEX und MATCH? Jedenfalls kann ich das nicht alleine herausfinden.

Dank

+0

Ist mein quesstion klar? Oder muss ich noch mehr Details hinzufügen? – Sapieris

Antwort

0

Sie können diese unter Verwendung der Formel tun selbst. Fügen Sie in Ihrem Blatt1 die folgende Formel in C2-Zelle ein.

=IF(SUMPRODUCT((--EXACT(Sheet2!A:A,A2))*(--EXACT(Sheet2!B:B,B2))*(--(Sheet2!A:A<>""))*(--(Sheet2!B:B<>"")),ROW(Sheet2!A:A))=0,"",INDEX(Sheet2!C:C,SUMPRODUCT((--EXACT(Sheet2!A:A,A2))*(--EXACT(Sheet2!B:B,B2))*(--(Sheet2!A:A<>""))*(--(Sheet2!B:B<>"")),ROW(Sheet2!A:A)))) 

und kopieren Sie das gleiche in andere Zellen. Es würde funktionieren.

Bitte überprüfen Sie die folgenden Bilder:

Sheet1

Sheet2

+0

Haben Sie das getestet? Gibt mir Fehler darauf. – Sapieris

+0

Ja, dies wurde getestet. Sind Ihre Blattnamen korrekt? Werte befinden sich in der gleichen Spalte wie im Problem beschrieben? – Karpak

+0

Bitte lassen Sie mich wissen, was für ein Fehler. Sie bekommen. – Karpak

0

Zuerst fügen Sie eine weitere Spalte eine Formel einen eindeutigen Schlüssel erstellen enthält:

Sheet1: 
    A  B  C  D 
1 x  y  result key 
2 A  b    =A2&B2 
3 B  m    =A3&B3 
4 L  a    =A4&B4 
etc... 

Sheet2: 
    A  B  C  D  
1 x  y  result key 
2 A  a  1  =A2&B2 
3 A  b  2  =A3&B3 
4 A  c  3  =A4&B4 
etc... 

? Dann versuchen:

Sub FindResult() 

Dim XY As String 
Dim S1 As Object, S2 As Object 
Dim ResultCell As Range, ResultValue As String 

    Set S1 = Worksheets("Sheet1") 
    Set S2 = Worksheets("Sheet2") 

    Calculate 
    For Rr = 2 To 6 
     XY = S1.Cells(Rr, 4).Value 
     Set ResultCell = S2.Range("D:D").Find(_ 
               What:=XY, _ 
               After:=S2.Range("D1"), _ 
               LookIn:=xlValues, _ 
               LookAt:=xlWhole, _ 
               SearchOrder:=xlByRows, _ 
               SearchDirection:=xlNext, _ 
               MatchCase:=True, _ 
               SearchFormat:=False _ 
              ) 
     If ResultCell Is Nothing Then 
      ResultValue = "Not found" 
     Else 
      ResultValue = ResultCell.Offset(0, -1).Value 
     End If 
     S1.Cells(Rr, 3) = ResultValue 
    Next Rr 

End Sub 
Verwandte Themen