Цветовое оформление данных (где факт поступления совпадает/не совпадает с планом)
Создал файл для расчета факт план поступлений, написал макрос, который должен был помочь в том, чтобы понять, где факт поступления совпадают планом, но что-то прописано неверно. В файле есть данные на листе 1 они плановые и данные листа 2 они фактические. На первом листе нужно, чтобы совпавшие факт-план суммы были синими или просто не красились, те участки где на листе 1 не было суммы подсвечивались другим цветом( в примере голубой), а если на втором листе не никаких данных о такой сумме то подсвечивалось красным. я остановился на первом этапе и что идет неверно видно по синим ячейкам. Подскажите как в этой ситуации можно прописать макрос?
Sub income()
Dim sh1 As Worksheet, sh2 As Worksheet
Set sh1 = ThisWorkbook.Sheets("лист1")
Set sh2 = ThisWorkbook.Sheets("лист2")
LastRow = ThisWorkbook.Sheets("лист1").Cells(Rows.Count, 1).End(xlUp).Row
Lastcolumn = ThisWorkbook.Sheets("лист1").Cells(1, Columns.Count).End(xlToLeft).Column
Lastrow1 = ThisWorkbook.Sheets("лист2").Cells(Rows.Count, 1).End(xlUp).Row
Lastcolumn1 = ThisWorkbook.Sheets("лист2").Cells(1, Columns.Count).End(xlToLeft).Column
Dim i As Integer, j As Integer, k As Integer, n As Integer, s As Integer
For i = 2 To Lastrow1
For j = 2 To LastRow
If sh2.Cells(i, 1) = sh1.Cells(j, 1) Then
k = j
End If
Next
On Error Resume Next
For s = 4 To Lastcolumn
If sh2.Cells(i, 3) = sh1.Cells(1, s) * 1 Then
n = s
On Error Resume Next
ElseIf sh2.Cells(i, 2) = sh1.Cells(k, n) Then
sh1.Cells(k, n).Interior.Color = vbBlue
End If
Next
Next i
End Sub
Ответы (1 шт):
Автор решения: Nikita Shuvalov
→ Ссылка
все оказалось проще чем думалось
Sub income1()
Dim sh1 As Worksheet, sh2 As Worksheet
Set sh1 = ThisWorkbook.Sheets("лист1")
Set sh2 = ThisWorkbook.Sheets("лист2")
lastrow = ThisWorkbook.Sheets("лист1").Cells(Rows.Count, 1).End(xlUp).Row
lastcolumn = ThisWorkbook.Sheets("лист1").Cells(1, Columns.Count).End(xlToLeft).Column
lastrow1 = ThisWorkbook.Sheets("лист2").Cells(Rows.Count, 1).End(xlUp).Row
Lastcolumn1 = ThisWorkbook.Sheets("лист2").Cells(1, Columns.Count).End(xlToLeft).Column
Dim i As Integer, j As Integer, k As Integer, n As Integer, s As Integer
For i = 2 To lastrow
For y = 4 To lastcolumn
If Not IsEmpty(sh1.Cells(i, y)) Then
sh1.Cells(i, y).Interior.Color = vbRed
End If
Next
Next
For i = 2 To lastrow1
For j = 2 To lastrow
If sh2.Cells(i, 1) = sh1.Cells(j, 1) Then
Z = sh2.Cells(i, 3) + 3
If sh2.Cells(i, 2) = sh1.Cells(j, Z) Then
sh1.Cells(j, Z).Interior.Color = rgbChartreuse
Else
If IsEmpty(sh1.Cells(j, Z)) Then
sh1.Cells(j, Z).Interior.Color = rgbAqua
End If
End If
End If
Next j
Next i

