如何find应该是空白但有空格的列中的最后一个单元格?

所以我有大约20,000条logging的数据。 我想要设置的范围,只有数据从第2行到20,000在列A中检查。但是,单元20,001不是空白,它也可以包含空格。 (这些数据是在validation之前导入的,所以我不能改变它)

当我使用。结束(xlUp)它结束检查,直到第5万行。

任何帮助?

样品:

A栏

一个

(插入2个空格)


我只想检查单元格直到B(包括它)

更新:pipe理将最后所需的单元格返回到主子

Private Sub last() Dim rngX As Range Set rngX = ActiveSheet.Range("A1").EntireColumn.Find(" ", lookat:=xlPart) If Not rngX Is Nothing Then /* return value End If End Sub 

GD花生,

如果你想使用VBA,你可以考虑检查[空间]字符? 假设单元格只包含空格(或者只有一个空格)

就像是:

 Dim r as range set r = range("B") For each c in r.rows if instr(1, c.value,chr(32)) > 0 then 'do something end if next 

你可以检查cell.valuestring中的所有字符来validation它们只是空格吗?

这有帮助吗?

我相信你将不得不单独testing每个单元格。 为了使检查的单元格数量更小,并加快速度,我首先要读取列来检查一个Variant数组,然后从底部到顶部检查。 我的空间真的是一个space ,下面的testing将工作。 如果这个空间是一个NBSP ,或者一个组合,那么你将不得不修改这个支票,以确保这是唯一存在的东西。

例如:检查列A:

 Option Explicit Sub foo() Dim R As Range Dim WS As Worksheet Dim V As Variant Dim I As Long Set WS = Worksheets("sheet2") With WS V = .Range("a1", .Cells(.Rows.Count, "A").End(xlUp)) For I = UBound(V) To LBound(V) Step -1 'Revise this check line as needed If Len(Trim(V(I, 1))) > 0 Then Exit For Next I Set R = .Cells(I, 1) End With Debug.Print R.Address End Sub 

如果所有单元格都为空,则可能需要添加一些错误检查。