2015-10-02 56 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 
相关问题