Найти совпадающие значения в нескольких столбцах, используя VBA с Excel - PullRequest
0 голосов
/ 22 февраля 2019

Before Code Execution

After Code Execution

У меня есть код VBA, как показано ниже в Excel, который позволяет мне помечать строки, которые имеютслово «ЛОЖЬ» в одном или нескольких столбцах, как показано на изображениях.Как заставить код зацикливаться только количество раз, сколько произведений строк и столбцов, в этом случае 25 (5 строк * 5 столбцов) и выходить без использования цикла For.

Dim myRange As Range

Dim Rc As Long
Dim Cc As Long
Dim i As Integer

Set myRange = Range("C12:G16")

Rc = myRange.Rows.Count
Cc = myRange.Columns.Count
iter = Rc * Cc


With Worksheets(1).Range("C12:G16")
Set c = .Find("False", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
i = Cc - c.Column + 2
c.Select
Selection.Offset(0, i) = "FALSE"

Set c = .FindNext(c)
Loop While Not c Is Nothing

End If
End With

1 Ответ

0 голосов
/ 22 февраля 2019

Это будет динамически выбирать весь используемый диапазон, а затем заполнять «False» для каждой строки в первом столбце справа от используемого диапазона, если False существует в этой строке.

Sub LabelRowsFalse()

Dim myRng As Range
Dim rngWidth As Integer
Dim nextCol As Integer
Dim rngCol As Integer

Set myRng = Sheet1.UsedRange
rngWidth = myRng.Columns.Count
rngCol = myRng.Column

With myRng
    Set c = .Find("False", LookIn:=xlValues)

    If Not c Is Nothing Then
        firstAddress = c.Address
        Cells(c.Row, (rngWidth + rngCol)).Value = "False"
        Set c = .FindNext(c)

        While c.Address <> firstAddress
            Cells(c.Row, (rngWidth + rngCol)).Value = "False"
            Set c = .FindNext(c)
        Wend

    End If
End With

MsgBox ("done")

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