Цикл диапазона, где значение ячейки пустое

Я установил диапазон. Несколько ячеек в этом диапазоне имеют значения, а количество ячеек не имеет значений, они пусты. У меня есть цикл диапазона, который занимает время, потому что он обрабатывает каждую ячейку:

For Each cel1 In rngsh1 

Вышеупомянутые процессы обрабатывают все ячейки в диапазоне.

Каков точный синтаксис, когда цикл диапазона обрабатывает только непустые ячейки?

Что-то вроде For Each cel11 in rngsh1 and not nothing я For Each cel11 in rngsh1 and not nothing знаю, я знаю, что этот синтаксис неверен, но я ищу правильный.

что-то вроде этого:

 Dim cel11 As Range Dim rngsh1 As Range 'Function MultiOr(str As String, ParamArray arr() As Variant) As Boolean ' Dim holder, runner ' MultiOr = True ' For Each holder In arr 'look for everything in arr ' If IsArray(holder) Then 'if what you found is an array ' For Each runner In holder 'for everything in that array ' If MultiOr(str, runner) Then Exit Function ' Next ' Else 'if its no array ' If Not IsMissing(holder) Then If holder = str Then Exit Function ' End If ' Next ' MultiOr = False 'End Function Sub MySub() For Each cel1 In Range ' If Not IsEmpty(cel1.Value) Then 'see EEM's answer If Len(cel1.Value) > 0 Then ' If MultiOr(cel1.Value, condi) Then 'no need for this function If Not IsError(Application.Match(cel1.Value, Range("I1:BJ1"), 0)) Then 'your code here End If End If Next End Sub '`condi` can be a range with all the conditions or an array or simply a value... 

Для реального поиска в непустых ячейках необходимо использовать метод RangeCell SpecialCells (см. Метод Range.SpecialCells (Excel)

Эта процедура обрабатывает только непустые ячейки

Поскольку некоторые из ресурсов, используемых в процедуре, могут быть новыми для пользователя, поэтому я предлагаю посетить Select Case Statement , тем не менее, дайте мне знать о любом вопросе, который может возникнуть в отношении кода.

 Sub Search_NonBlank_Cells() Dim Rng As Range Dim rCll As Range Rem Set Range Set Rng = ActiveSheet.Range(kRng) Rem Ensure blank intended cells are actually blank Rng.Value = Rng.Value2 Rem Loop Through Non-Blank Cells Only For Each rCll In Rng.SpecialCells(xlCellTypeConstants, _ xlErrors + xlLogical + xlNumbers + xlTextValues) Rem Validate if cell value starts with "center" If Left(rCll.Value2, 6) = "center" Then Rem Validate if remaining cell value is between 1 to 54 Select Case Application.Substitute(rCll.Value2, "center", "") Case 1 To 54 Rem Process Cell Found rCll.Interior.Color = RGB(255, 255, 0) End Select: End If: Next End Sub 

Это та же самая процедура, включая некоторые строки, которые помогут вам отлаживать и понимать процесс, а также создает журнал в непосредственном окне.

 Sub Search_NonBlank_Cells_Debug() Dim Rng As Range Dim rCll As Range : SendKeys "^g^a{DEL}": Stop : Debug.Print vbLf; Now : Debug.Print "Address"; Tab(11); "Cll.Value"; Tab(31); "Status" Rem Set Range Set Rng = ActiveSheet.Range(kRng) Rem Ensure blank intended cells are actually blank 'ie Cells with formulas results as "" are not blank cell this makes then blank cells Rng.Value = Rng.Value2 Rem Loop Through Non-Blank Cells Only For Each rCll In Rng.SpecialCells(xlCellTypeConstants, _ xlErrors + xlLogical + xlNumbers + xlTextValues) : Debug.Print rCll.Address; Tab(11); rCll.Value2; Rem Validate if cell value starts with "center" If Left(rCll.Value2, 6) = "center" Then Rem Validate if remaining cell value is between 1 to 54 Select Case Application.Substitute(rCll.Value2, "center", "") Case 1 To 54 Rem Process Cell Found : Debug.Print Tab(31); "Processed" rCll.Interior.Color = RGB(255, 255, 0) Case Else : Debug.Print Tab(31); "Skipped" End Select Else : Debug.Print Tab(31); "Skipped" End If: Next End Sub 
  • Excel VBA: консолидируйте группу повтора в блоке «Для каждого»
  • Использование ячеек диапазона и UsedRange для каждого цикла
  • Копирование динамического диапазона для каждого цикла
  • VBA - найдите определенное значение в таблицах и копиях, пока оно не найдет пустую ячейку (внутренняя функция .find)
  • Сброс Поиск формул путем копирования и вставки VBA
  • VBA - ссылка на переменную в цикле на диапазон ячеек на другом листе
  • Цикл выбранных фигур
  • Excel Interop CustomDocumentProperties в foreach вызывает зависание
  • «Продолжить для» Обходной путь
  • SSIS: контейнер для конвейера forEach: циклическое перемещение по листам Excel с колонками Uniforn, но с разными названиями листов
  • VBA (Excel) Ошибка времени выполнения 13 для каждого цикла
  • Давайте будем гением компьютера.