VBA复制和粘贴多个单元格如果符合标准

时间:2016-12-05 00:27:20

标签: vba excel-vba loops offset excel

如果符合条件,如何移动单元格,以及使用循环旁边的单元格? 说标准是(Len = 43)< - Acct#

Column#  |Date     |  Country   |  Acct#   |   Fruit     |   Price   |  Qty  
1        |11/02/16 |  India     |  5002xxx |   apple     |   $9      |   5  
2        |12/02/16 |  5001xxx   |  Orange  |   $8        |   10      |

我需要将第2列#ct#移到它旁边的列之后的右栏。如何使用它与循环和len?什么是更好的方法?谢谢,欢呼!

更新

 Sub Findandcut2()
    Dim row As Long

    For row = 2 To 1000

        If Range("M" & row).Value Like "*5027.1227000.0000.0000.000.0000.0000.0000*" Then

            Range("N" & row).Value = Range("M" & row).Value
            Range("M" & row).Value = ""
        End If
    Next

End Sub

所以在M列中是存储Acct#的位置,紧接着它的下面的单元格我必须要偏移但是上面的代码我只是删除了值N列和下一个单元格它没有动。

1 个答案:

答案 0 :(得分:0)

你可能想要改变你的代码,如下面的(注释):

Sub Findandcut2()
    Dim cell As Range

    For Each cell In Range("M2", Cells(Rows.Count, "M").End(xlUp)) '<--| loop through all column "M" cell from row 2 down to last not empty row
        If cell.Value Like "*5027.1227000.0000.0000.000.0000.0000.0000*" Then
            With Range(cell, cell.End(xlToRight)) '<--| reference the range from current column M cell rightwards till the one preceeding first not empty one
                .Offset(, 1).Value = .Value '<--| copy values
            End With
            cell.ClearContents '<--| need to clear the cell you started offset values from?
        End If

    Next cell
End Sub