У меня проблема с VBA, так как я пытаюсь создать код, который сначала будет фильтровать на основе данных на другой вкладке, а затем в этом отфильтрованном диапазоне он будет просматривать в одном столбце все значения, которые появляются дважды (мне нужновсе эти суммы помечены цветом, а не только дубликатом).
Итак, в общем, давайте скажем, что в Листе 2 у меня есть в столбце Список кодов, которые мне нужно отфильтровать по одному на Листе1 - Столбец,Затем, основываясь на этой фильтрации, мне нужно проверить в столбце B значения, которые появляются дважды, и закрасить эти значения, скажем, зеленым цветом (только на видимых ячейках).
Sub filter()
Dim wb As Workbook
Dim ws As Worksheet, ws2 As Worksheet
Dim xrow As Long, firstrow As Long, lastrow As Long
Dim SearchValue As Variant
Set wb = ThisWorkbook
Set ws = wb.Sheets(1)
Set ws2 = wb.Sheets(2)
xrow = 2
Do
SearchValue = ws2.Cells(xrow, 1)
ws.Range("$A$1:$B$14").AutoFilter Field:=1, Criteria1:=SearchValue
With ws.AutoFilter.Range
firstrow = ws.Range("A" & .Offset(1, 0).SpecialCells(xlCellTypeVisible)(1).Row).Row
lastrow = ws.Range("A" & Rows.Count).End(xlUp).Row
'This is where the problem is
'how to match and make a color for each amount that appears twice in column B in this filtered range
End With
xrow = xrow + 1
Loop Until ws2.Cells(xrow, 1) = ""
End Sub
Редактировать: я закончил безфильтрация, это работает для меня в случае, если кто-то задается вопросом:
xrow = 2
Do
SearchValue = ws2.Cells(xrow, 1)
lastrow = ws.UsedRange.Rows.Count
For x = 2 To lastrow
For y = x + 1 To lastrow
If ws.Cells(x, 1) = SearchValue And ws.Cells(y, 1) = SearchValue And ws.Cells(x, 2) = ws.Cells(y, 2) Then
ws.Cells(x, 2).Interior.Color = vbGreen
ws.Cells(y, 2).Interior.Color = vbGreen
Else
End If
Next y
Next x
xrow = xrow + 1
Loop Until ws2.Cells(xrow, 1) = ""
В результате макрос будет проверять все коды на одинаковые значения, и я буду иметь те, которые отмечены зеленым цветом. Поэтому, если в столбце Лист1 в столбце А у меня есть 2 точно таких же кода, например, 1111, и они имеют одинаковое значение - 30, тогда эти 30 будут отмечены зеленым цветом в обеих строках, но если код 1111 также имеет значение 25, это не будетотмечено цветом.