2017-02-16 158 views
2

我有一个电子表格,其中一列数据全部在一列,我正在寻找拔出特定数据。我试图看看'做直到循环'是否会起作用。循环遍历一列,并拉出特定单元格

我试图让循环停止,当它看到“目录*”作为单元格的一部分,例如目录的G:\示例。在此之前,循环应该查看单元格,如果它不以数字开始,则将该单元格复制到另一个表单/列。

Sub Order() 

iRow = 1 

    Do Until Cells(iRow, 1) = "Directory*" 
    If Cells(iRow, 1) <> NumberatBeginning Then 
    Cells(iRow, 1).Copy _ 
    Destination:=Worksheets("Sheet2").Range("A1") 
    End If 


    iRow = iRow + 1 
    Loop 

End Sub 

任何帮助,将不胜感激

回答

2

就快,该IsNumeric功能可以配合使用的Mid(或Left)函数来检查的第一个字符的单元格的值,并返回True或者如果字符是数字,则为False。试试这个:

Sub Order() 

Dim iRow as Long, x as Long 

iRow = 1 
x = 1 

Do Until Cells(iRow, 1).Value Like "Directory*" 
    If Not IsNumeric(Mid(Cells(iRow, 1).Value, 1, 1)) Then 
     Worksheets("Sheet2").Cells(x, 1).Value = Cells(iRow, 1).Value 
     x = x + 1 
    End If 
iRow = iRow + 1 
Loop 

End Sub 

您应该避免使用复制和粘贴,因为它会减慢代码,它始终是更好地简单地设置单元格的值。另外,当您循环并复制非数字第一个字符的单元格并将它们粘贴到Sheet2时,您的代码始终粘贴到同一个单元格Range("A1")中,假设您需要一组您需要的值通过在每次将值复制到Sheet2时添加一行来增加此值。

+0

当然'喜欢'目录*“'会是假的,如果有一个数字在开始,所以不需要测试呢? – CallumDA

+0

但是@OP希望循环在找到以“Directory *”开始的值时停止,所以我从 – Jordan

+0

这个问题中了解到,谢谢你的工作。 –