2012-03-29 5 views
1

Ich verwende Excel nicht sehr oft, aber ich hoffe, dass es einen ziemlich direkten Weg gibt, um das durchzukommen. Ich habe eine Reihe anderer Lösungen durchgespielt, bei denen Daten von einem Blatt in ein anderes eingefügt wurden, aber ich konnte nichts finden, was mir erlauben würde, (1) eine Zelle von einem Blatt zu einem anderen anzupassen und dann (2) Daten bedingt anzufügen oder zu verketten anstatt es einfach zu überkleben.Wie kann ich eine Zeile mit Excel-Daten bedingt von einem Blatt an ein anderes anhängen?

Ich habe ein Excel-Dokument mit zwei Datenblättern. Beide Blätter enthalten eine numerische ID-Spalte. Ich muss im Grunde die IDs aus Sheet2 mit dem Sheet1 übereinstimmen und dann die Zeilendaten aus Sheet2 an die übereinstimmenden Zeilen aus Sheet1 anfügen. Ich könnte mir vorstellen, dass es in etwa so aussieht:

If Sheet2 ColumnA Row1 == Sheet1 ColumnA RowX 
    Copy Sheet2 Row1 Columns 
    Paste (Append) to Sheet1 RowX (without overwriting the existing columns). 

Es tut uns leid, wenn es eine bessere Möglichkeit gibt, diese Frage zu formulieren. Ich habe es geschafft, mich im Kreis zu denken, und jetzt fühle ich mich, als hätte ich einen verwirrten Nigel Tufnel-Blick auf meinem Gesicht.

[Update:. Aktualisiert Zellen zu klären kopiert werden]

+0

Wenn das Spiel in der Reihe X gefunden wird, dann wollen Sie es hinzufügen zu Reihe Z? an einer Stelle, die (n + 2) ist, wobei n gleich ist wie X. Stimmt mein Verständnis? –

+0

Entschuldigung für den verwirrenden Text. Mit "Sheet1 ColumnA RowX" beziehe ich mich nur auf eine Zeile, die den Daten aus "Sheet2 ColumnA Row1" entspricht. – Bijan

+0

Wenn Sie Append sagen, meinen Sie, dass, wenn die Zelle "SAMPLE1" hat, dann sollte es an sie anhängen, so dass es wie "SAMPLE1 SAMPLE2" aussieht? –

Antwort

2

Ich denke, das ist, was Sie zu tun versuchen?

Der Code wurde nicht getestet. Ich glaube, es sollte funktionieren. Wenn Sie Fehler erhalten, lassen Sie mich wissen, und wir werden es dort bilden nehmen ...

Sub Sample() 
    Dim ws1 As Worksheet, ws2 As Worksheet 
    Dim ws1LR As Long, ws2LR As Long 
    Dim i As Long, j As Long, LastCol As Long 
    Dim ws1Rng As Range, aCell As Range 
    Dim SearchString 

    Set ws1 = Sheets("Sheet1") 
    '~~> Assuming that ID is in Col A 
    '~~> Get last row in Col A in Sheet1 
    ws1LR = ws1.Range("A" & Rows.Count).End(xlUp).Row 
    '~~> Set the Search Range 
    Set ws1Rng = ws1.Range("A1:A" & ws1LR) 

    Set ws2 = Sheets("Sheet2") 
    '~~> Get last row in Col A in Sheet2 
    ws2LR = ws2.Range("A" & Rows.Count).End(xlUp).Row 

    '~~> Loop through the range in Sheet 2 to match it with the range in Sheet1 
    For i = 1 To ws2LR 
     SearchString = ws2.Range("A" & i).Value 

     '~~> Search for the ID 
     Set aCell = ws1Rng.Find(What:=SearchString, LookIn:=xlValues, _ 
     LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
     MatchCase:=False, SearchFormat:=False) 

     '~~> If found 
     If Not aCell Is Nothing Then 
      LastCol = ws2.Cells(i, ws2.Columns.Count).End(xlToLeft).Column 

      '~~> Append values 
      For j = 2 To LastCol 
       ws1.Cells(aCell.Row, j).Value = ws1.Cells(aCell.Row, j).Value & " " & ws2.Cells(i, j).Value 
      Next j 
     End If 
    Next i 
End Sub 

HTH

Sid

0

Dies sollte funktionieren:

For Each cell2 In Sheet2.UsedRange.Columns(1).Cells 
    For Each cell1 In Sheet1.UsedRange.Columns(1).Cells 
     If cell2.Value = cell1.Value Then 
      Sheet1.Range("B" & cell1.Row & ":Z" & cell1.Row).Value = Sheet2.Range("B" & cell2.Row & ":Z" & cell2.Row).Value 
     End If 
    Next cell1 
Next cell2 
Verwandte Themen