Перебрать 2 столбца и выделить неупорядоченные значения - PullRequest
0 голосов
/ 10 апреля 2019

допустимые случаи в зеленом Недействительные случаи в оранжевом см. Изображение Нужна помощь

У меня есть две колонки на листе.Столбец A - содержит имена таблиц, например: ABC, ABC, ABC, BCD, BCD, BCD, CDE, CDE. Столбец B - содержит значения, например: 1,2,3,4

Для каждой таблицы есть зависимаязначение, например:

ColumnA      Column B
    ABC            1
    ABC            2
    ABC            3
    BCD .          1
    BCD            2
    BCD            4
    CDE            2
    CDE            4

Для каждого столбца таблицы должен быть основной поток значений.ABC должен иметь 1, затем 2, а затем 3/4. Если соответствующее значение ABC равно 1, а второе значение не равно 2, выделите 2. Если значение ABC начинается непосредственно с 2/3/4, выделите.

Процесс должен бытьвсегда для каждой таблицы следует: 1,2,3 / 4

Заранее спасибо за миллион

Пробовал две петли

Sub highlight()    
With Sheets(1)
    For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row ' loop until last row with data in column "B" (skip blank rows)
        If Trim(.Range("A" & i).Value) <> "" Then ' check if value in cell in column "L" in current row is not empty
            'SQL Code entered here'
            MsgBox Cells(i, 1).Value   
        End If
    Next i
End With
End Sub

Долгий путь не получил ответакакой-то новый код.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

может попробовать что-то похожее на VBA (проверено)

Sub highlight()
Dim Ws As Worksheet
Dim Rw As Long, LastRow As Long, C As Range, Rank As Long
Dim FirstAddress As String, Srch As String
Set Ws = ThisWorkbook.Sheets(1)


With Ws
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
.Range("A2:B" & LastRow).Interior.Color = RGB(255, 255, 255)  ' reset Color to white as checking criteria

    For Rw = 2 To LastRow ' loop until last row with data in column "B" (skip blank rows)
    Srch = .Range("A" & Rw).Value
        If .Range("A" & Rw).Interior.Color = RGB(255, 255, 255) And Srch <> "" Then ' check only if Not checked before & marked or cell value not empty
        Rank = 1              ' 1st Order
            Set C = .Range("A1:A" & LastRow).Find(Srch, LookIn:=xlValues, LookAt:=xlWhole)
                If Not C Is Nothing Then
                FirstAddress = C.Address
                    Do
                    If C.Offset(0, 1).Value = Rank Then
                    .Range(C, C.Offset(0, 1)).Interior.Color = RGB(0, 255, 0) '  may change Color value to your choice
                    Else
                    .Range(C, C.Offset(0, 1)).Interior.Color = RGB(255, 0, 0) '  may change Color value to your choice
                    End If
                    Set C = .Range("A1:A" & LastRow).FindNext(C)
                    Rank = Rank + 1               'Next Order
                    Loop While Not C Is Nothing And C.Address <> FirstAddress
                End If
        End If
    Next Rw
End With
End Sub

образец запуска enter image description here

0 голосов
/ 10 апреля 2019

Вам не нужен VBA для этого.Следующее правило условного формата выполнит эту работу:

=OR(AND($B2=4,COUNTIF($A$2:$A2,$A2)=3),COUNTIF($A$2:$A2,$A2)=$B2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...