2015-10-02 142 views
0

如果單元格包含單詞IN並刪除原始值,我想將一列中的值複製到另一列(在同一行中)。否則,代碼應該繼續到下一行並執行新的測試。因此目標列中的單元格將保持空白。將某些值從一列複製到另一列並刪除原始值

當我在Excel中運行代碼沒有任何反應,所以我不知道什麼是錯的。

理想情況下,代碼應該跳到下一列(8),並執行相同的搜索,並在第一列完成時將該值粘貼到同一列(5)中,但這還沒有開始。所以,我很欣賞該提示以及:)

Sub Size() 
    Dim i As Integer, a As String 
    i = 2 
    a = "IN" 

    Do While Cells(i, 7).Value <> "" 
     If InStr(Cells(i, 7), a) Then 
      'copying the value to another column but within the same row 
      Cells(i, 7).Copy Cells(i, 5) 
      Cells(i, 7).Clear 
      i = i + 1 
     Else 
      i = i + 1 
     End If 
    Loop 
End Sub 
+0

也許你的循環遇到一個空的單元並且過早退出。 –

+0

更改爲InStr(0,Cells(i,7).Value,a)> 0。還要確保第7欄(G)中有值。爲了更好的編碼,在塊外面放置i = i + 1 –

回答

0

我發現我在第7欄第一個單元格是空的,因此Do While Cells(i, 7).Value <> ""不能正常工作。因此,我指的是總是包含數據的不同列。請注意,解決方案代碼也會跳轉到下兩列以搜索相同的單詞。

Sub Size() 
Dim i As Integer, a As String 
j = 0 
i = 1 
a = "IN" 
Range("A1").Offset(i, 0).Select 

For j = 0 To 2 
    Do Until Selection.Value = "" 
     If InStr(Range("G1").Offset(i, j).Value, a) Then 
     Range("E1").Offset(i, 0).Value = Range("G1").Offset(i, j).Value 
     Range("G1").Offset(i, j).Clear 
     i = i + 1 
     Range("A1").Offset(i, 0).Select 
     Else 
     i = i + 1 
     Range("A1").Offset(i, 0).Select 
     End If 
    Loop 
    i = 1 
    Range("A1").Offset(i, 0).Select 
Next j 
End Sub 
相關問題