2017-07-22 3 views
1

シートnr.1の単語「Hello」を検索するマクロを作成しようとしています。変数行。検出されたら、この単語の下にあるすべての塗りつぶされたセルをコピーして、それを列 "B"の下のシートnr.2に貼り付ける必要があります。
私は誰かが私にいくつかの例を与えることができれば、私は本当に感謝どのようにこの言葉を有する細胞を見つけて、そのアドレスの下にあるすべての充填されたセルをコピーして、列B行に「こんにちは」という単語が含まれている場合は、その列のすべての塗りつぶしセルを別のシートにコピーし、列「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 

答えて

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 

この機能はから「こんにちは」書かれ、列「C」上のカラム「B」とアドレスに値を書き込むと、ワークシート1の列「A」からのすべてのセルのアドレスを発見しますワークシート2ワークシートに

(1)あなたが持っている:

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

、ワークシート上の出力は(2)です:

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

あなたの範囲が大きすぎると、PS:、のように、辞書との一致方法を使用することを検討してください:Optimise compare and match method using scripting.dictionary in VBA

関連する問題