VBA:用空格替换空格键?

时间:2016-09-07 18:46:33

标签: vba excel-vba excel

我正在运行一个使用条件公式从PI中提取数据的代码。拉取值时,会将公式分配给整列,但只有少数具有实际值:

enter image description here

该列有大约300,000行,但我想只在我有实际值时运行循环(在这种情况下是4次而不是300,000)。

有没有建议避免循环300,000次?

我尝试使用替换功能,将所有空格替换为空白,然后使用ImageMagick 6.7.7-10计算非空单元格的数量:

COUNTA

但是我收到了替换功能的类型不匹配错误。我还没有为'Replacing all spaces in a column by blanks Workseets("Sheet6").Range("D:D") = Replace(Worksheets("Sheet6").Range("D:D")," ","") 'counting non-blank cells n = WorksheetFunction.CountA(Worksheets("Sheet6").Range("D:D")) 'running code only 4 times for I = 1 to n..... 写任何内容。目前只是尝试正确使用FOR Loop功能

2 个答案:

答案 0 :(得分:2)

您的尝试使用String.Replace函数并导致不匹配错误,因为您将变量/范围传递给需要字符串的函数。

'Replacing all spaces in a column by blanks
Workseets("Sheet6").Range("D:D") = Replace(Worksheets("Sheet6").Range("D:D")," ","")

解决方案是使用Range.Replace方法。不需要赋值,该方法对调用它的范围对象进行操作。这会直接复制值并替换空字符串

'Replacing all spaces in a column by blanks
 With Worksheets("Sheet6").Range("D:D")
    .Value = .Value2
    .Replace " ", "", xlWhole
 End With

答案 1 :(得分:2)

您应该使用Intersect方法将范围缩小到实际使用的单元格。

With Worksheets("Sheet6")

    Intersect(.Range("D:D"), .UsedRange).Replace " ", ""

End With