Выберите диапазон, если - в зависимости от значения каждой ячейки диапазона (VBA) - PullRequest
0 голосов
/ 18 февраля 2020

Я хочу выбрать целые строки диапазона (C14: M34), если значение = 1 в столбце (F14: F34). В противном случае я хочу выбрать те же строки, кроме указанного c столбца (G). Я могу сделать это, если у меня есть только одна строка, но как я могу применить это для диапазона (несколько строк)?

При этом мой код (который не работает):

ActiveSheet.Range("$C$13:$M$34").AutoFilter Field:=6, Criteria1:="<>"
    Dim d As Range
    For Each d In Range("F14:F34")
        If d.Value = 1 Then
            ActiveSheet.Range("C14:M34").Select
        Else
        Application.Union(Range("C14:F34"), Range("H14:M34")).Select
        End If
        Selection.Copy
    Next d

1 Ответ

1 голос
/ 18 февраля 2020

Попробуйте этот код, пожалуйста:

Sub testSelecting()
  Dim sh As Worksheet, rngSel As Range, i As Long
  Set sh = ActiveSheet
    For i = 14 To 34
        If sh.Range("F" & i).Value = 1 Then
           If rngSel Is Nothing Then
              Set rngSel = sh.Range("C" & i & ":M" & i)
           Else
              Set rngSel = Union(rngSel, sh.Range("C" & i & ":M" & i))
           End If
        Else
            If rngSel Is Nothing Then
                Set rngSel = Union(sh.Range("C" & i & ":F" & i), sh.Range("H" & i & ":M" & i))
            Else
                Set rngSel = Union(rngSel, sh.Range("C" & i & ":F" & i), sh.Range("H" & i & ":M" & i))
            End If
        End If
    Next i
    If rngSel.Cells.count > 1 Then rngSel.Select: Stop
    rngSel.Copy
End Sub

Код не проверен, потому что у меня нет вашего файла для этого. Он основан только на логи c. Он останавливается после выбора, чтобы дать вам понять, что выбранный диапазон - это тот, который вам нужен.

Пожалуйста, подтвердите, что он работает так, как вам нужно, или какую проблему он создает, если есть ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...