2017-07-22 1 views
1

Ich versuche, ein Makro, das nach Wort "Hallo" in Blatt Nr.1 ​​in a suchen wird variable Reihe. Sobald es gefunden wurde, sollte es alle gefüllten Zellen unter diesem Wort kopieren und es in das Blatt Nr. 2 unter der Spalte "B" einfügen.
Ich habe mehrere Probleme hier, wie Sie die Zelle finden, die dieses Wort hat und alle gefüllten Zellen unter dieser Adresse kopieren und in ein anderes Blatt unter Spalte B einfügen wenn diese Art von Übung.Wenn Zeile enthält Wort "Hallo" kopieren Sie alle gefüllten Zellen aus dieser Spalte in ein anderes Blatt und fügen Sie es in Spalte "A"


With Sheets("GCC1") 
     lastrowGCC1 = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 
    End With 

arr1 = Array("K", "P", "Q", "AA") 
arr2 = Array("A", "D", "E", "O") 
    For i = LBound(arr1) To UBound(arr1) 
    With Sheets("Project Parts Requisitioning") 
     lastrow = Application.Max(n, .Cells(.Rows.Count, arr1(i)).End(xlUp).Row) 
     .Range(.Cells(n, arr1(i)), .Cells(lastrow, arr1(i))).Copy 
     Sheets("GCC1").Range(arr2(i) & lastrowGCC1).PasteSpecial xlPasteValues 
    End With 
Next 
Application.CutCopyMode = False 

Antwort

0
Sub Demo() 
    Dim ws1 As Worksheet, ws2 As Worksheet 
    Dim i As Long 
    Dim rng As Range, rng2 As Range 
    Dim cellFound As Range 

    Set ws1 = ThisWorkbook.Sheets(1) 'change to "GCC1" or use number index 
    Set ws2 = ThisWorkbook.Sheets(2) 
    Set rng = ws1.Range("A:A") 'range to search 
    lastrowGCC1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row 
    Set rng2 = rng(lastrowGCC1, 1) 
    i = 1 
     With rng 
    Set cellFound = .Find(what:="Hello", After:=rng2, LookIn:=xlValues) 
      If Not cellFound Is Nothing Then 
       FirstAddress = cellFound.Address 
       Do 
        ws2.Cells(i, 2) = ws1.Range(cellFound.Address).Value 
        ws2.Cells(i, 3) = cellFound.Address 
        i = i + 1 
        Set cellFound = .FindNext(cellFound) 
       Loop While Not cellFound Is Nothing And cellFound.Address <> FirstAddress 
      End If 
     End With 
End Sub 

Diese Funktion findet alle Zellen Adressen aus der Spalte „A“ in Arbeitsblatt 1 mit „Hallo“ geschrieben, dann die Werte in der Spalte „B“ schreiben und Adressen auf Spalte „C“ aus Arbeitsblatt 2.

In Arbeitsblatt (1) Sie haben:

+---+-------+ 
| | A | 
+---+-------+ 
| 1 | Hello | 
| 2 | Hello | 
| 3 | Hello | 
| 4 |  | 
| 5 |  | 
| 6 |  | 
| 7 |  | 
| 8 |  | 
| 9 | Hello | 
+---+-------+ 

Und die Ausgabe auf Arbeitsblatt (2):

+---+-------+------+ 
| | B | C | 
+---+-------+------+ 
| 1 | Hello | $A$1 | 
| 2 | Hello | $A$2 | 
| 3 | Hello | $A$3 | 
| 4 | Hello | $A$9 | 
+---+-------+------+ 

ps .: wenn Ihr Bereich zu groß ist, sollten Sie eine Match-Methode mit Wörterbuch verwenden, wie: Optimise compare and match method using scripting.dictionary in VBA

Verwandte Themen