Я запускаю код, который извлекает данные из PI с использованием условной формулы. Когда значения вытягиваются, он присваивает формулу весь столбец, но лишь немногие из них имеют фактические значения:VBA: Замена пробелов пробелами?
колонна имеет около 300 000 строк, но я хочу, чтобы запустить цикл только тогда, когда у меня есть фактические значения (В этом случае 4 раза вместо 300 000).
Есть ли какие-либо предложения по этому поводу, избегая петли 300 000 раз?
Я попытался с помощью функции замены, заменив все пробелы пустым, а затем подсчитать количество не пустых ячеек с помощью 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
. В настоящее время просто пытается правильно использовать функцию REPLACE
'Dim n As Long' и' Dim I as Long', 300 000 скважин превышает предел целочисленного типа данных. Также, пожалуйста, подумайте о том, что вы делаете внутри цикла. –
Если цикл необходим (и это может быть не так), вы можете использовать цикл «Do While» вместо цикла «For», с критериями для выхода, когда значение ячейки пусто. –
В идеале вместо использования жестко заданных «Workseets» («Sheet6»). Range («D: D») вы определяете правильную переменную диапазона, которая представляет только строки/данные, которые вы хотите обработать. –