如何查找列中应该为空但有空格的最后一个单元格?

时间:2015-09-26 09:21:02

标签: excel vba excel-vba

所以我有大约20,000条记录的数据。我想设置范围,以便在A列中只检查第2行到20,000的数据。但是,单元格20,001不是空白,它也可以包含空格。 (此数据在验证之前导入,因此我无法对其进行更改)

当我使用.End(xlUp)时,它最终检查到第50,000行。

任何帮助?

样品:

A栏

A

(插入2个空格)

我想检查细胞直到B(包括它)

更新: 管理将最后一个必需的单元格返回到主子

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

2 个答案:

答案 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

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