【问题标题】:Remove all rows not containing values from range从范围中删除所有不包含值的行
【发布时间】:2026-01-24 20:45:01
【问题描述】:

工作表“数据”有 3000 多行,在 O 列中包含 100 多个客户。假设“客户”A1 到 A26 是:

a
b
c
d
e
...
z

代码将删除除 z 之外的所有内容,而不是除 a 到 z 之外的所有内容。我需要从“客户”表的 A 列中未列出的“数据”中删除所有客户。我哪里错了?将“dontDelete”更改为以下会产生相同的结果。 26 可以代替 14、7 等,然后该行的值将成为唯一剩下的值。

dontDelete = Array(Range("Customers!A1:A26")

我尝试将 sub 粘贴到此处,但尽管预览看起来正确,但它仍然给我一个格式错误。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    如果没有您的确切分号,很难看出您需要更改哪些内容来纠正此问题。但是,如果您像这样静态分配数组的大小

    Dim dontDelete(26) As String
    

    您实际上将数组定义为 dontDelete(0,1,2...24,25,26)。然后,如果您的循环经过 26 次迭代,它将始终以 25 结束,而不是 26。

    我建议先这样声明你的数组

    Dim dontDelete(1 to 26) as String
    

    然后再次尝试查看是否可以解决问题。

    【讨论】:

    • 范围是动态的,从 A1 到 A(x) 取决于摘要中包含多少客户。 A 中的值不是数字或单个字母,而是包含空格等的文本。
    • 再想一想,您的建议为我指明了解决问题的正确方向。谢谢!
    最近更新 更多