2017-07-30 54 views
0

如果列B包含某個文本(「ACK-」,但我現在需要將整行直接複製到具有某些文本的行上方(「ACK-」這甚至可能任何幫助將不勝感激在包含某些文本的行上方複製行

Sub HEA_Filter() 
Dim strArray As Variant 
Dim wsSource As Worksheet 
Dim wsDest As Worksheet 
Dim NoRows As Long 
Dim DestNoRows As Long 
Dim I As Long 
Dim J As Integer 
Dim rngCells As Range 
Dim rngFind As Range 
Dim Found As Boolean 

strArray = Array("ack-") 

Set wsSource = ActiveSheet 

NoRows = wsSource.Range("A65536").End(xlUp).Row 
DestNoRows = 1 
Set wsDest = Sheets("Real Alarms") 

For I = 1 To NoRows 

Set rngCells = wsSource.Range("B" & I) 
Found = False 
For J = 0 To UBound(strArray) 
Found = Found Or Not (rngCells.Find(strArray(J)) Is Nothing) 
Next J 

If Found Then 
rngCells.EntireRow.Copy wsDest.Range("A" & DestNoRows) 

DestNoRows = DestNoRows + 1 
End If 
Next I 
End Sub 
+0

這很好用!謝謝!現在我有另一個問題了......當試圖將「A」欄的粘貼欄更改爲「F」時,它給了我一個錯誤,指出該單元格的大小不一樣......我如何解決這個問題? –

回答

1

要引用「上面行」,您可以使用Range.Offset方法:?

rngCells.Offset(-1).EntireRow.Copy wsDest.Range("A" & DestNoRows) 
'  ^^^^^^^^^^^^ 

然而,請注意,如果範圍在,則會引發運行時錯誤第1行,因爲row 0不存在。例如:您可能想要添加一張支票,例如:

If rngCells.Row > 1 Then rngCells.Offset(-1).EntireRow.Copy ... 
+0

這很棒!謝謝!現在我有另一個問題...當試圖從「A」到「F」更改粘貼列時,它給了我一個錯誤,說單元格的大小不一樣... –

+0

@JimmyVo你剛剛使用'wsDest。範圍(「A」和DestNoRows)'?如果是這樣,它不應該給你那個錯誤,除非你可能有一些合併的單元格或太多的數據行idk。 –

+1

爲了避免'If rngCells.Row> 1 Then',循環可以改爲'For I = 2 To NoRows'。 – YowE3K

相關問題