所以我有大约20,000条记录的数据。我想设置范围,以便在A列中只检查第2行到20,000的数据。但是,单元格20,001不是空白,它也可以包含空格。 (此数据在验证之前导入,因此我无法对其进行更改)
当我使用.End(xlUp)时,它最终检查到第50,000行。
任何帮助?
样品:
A栏
A
乙
(插入2个空格)
更新: 管理将最后一个必需的单元格返回到主子
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
答案 0 :(得分:1)
GD pnuts,
如果你想使用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.value字符串中的所有字符,以验证它们只是空格吗?
这有帮助吗?
答案 1 :(得分:0)
我相信你必须单独测试每个细胞。为了使单元格的数量更小,并加快速度,我首先要读取列以检查Variant数组,然后从下到上检查它。我的空间真的是space
,下面的测试会起作用。如果空格是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
如果所有单元格都为空,您可能需要添加一些错误检查。