我正在运行一个使用条件公式从PI中提取数据的代码。拉取值时,会将公式分配给整列,但只有少数具有实际值:
该列有大约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
功能
答案 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