Скопируйте цвет фона из другого столбца

#excel #vba

Вопрос:

В столбце A1:A145 нужен код для выделения цвета. Примените цвет формата в A1, сколько строк? Основывайтесь на изображении1. введите описание изображения здесь

В столбце А 14 строк будут иметь желтый цвет , следующие 14 строк будут синими и так далее. (номер всегда будет меняться) В столбце B нужно повторить число, которое указано в столбце D.

В поисках этого изображения результата 2 введите описание изображения здесь

Приведенный ниже код копирует только цвет и номер из столбца C в конце строки A:145, нам нужно попытаться выделить строки, основанные на другом значении ячейки, работая с листом 1 до листа 8 или более листов.

 Sub Color_My_Cells()  Application.ScreenUpdating = False Dim i As Long Dim Lastrow As Long Lastrow = Cells(Rows.Count, "A").End(xlUp).Row Dim Lastrowa As Long Lastrowa = Cells(Rows.Count, "B").End(xlUp).Row For i = 1 To Lastrowa Cells(Lastrow, 1).Resize(Cells(i, 2).Value) = Cells(i, 2).Value Cells(Lastrow, 1).Resize(Cells(i, 2)).Interior.Color = Cells(i, 2).Interior.Color Lastrow = Cells(Rows.Count, "A").End(xlUp).Row   1 Next Application.ScreenUpdating = True End Sub  

Комментарии:

1. Почему код ссылается на столбец B , когда данные находятся в столбце C ?

2. Потому что я изменил столбцы файлов Excel.

Ответ №1:

@GoalExcel приведенный ниже код просматривает все листы в вашем файле Excel и повторяет те же действия для каждого из них.

 Sub ColorMyCells()    Dim i, j, intRowCounterAB, intRowC As Integer    For Each ws In ThisWorkbook.Sheets  ws.Activate    intRowC = Evaluate("=COUNTA(C:C)")  intRowCounterAB = 1    For i = 1 To intRowC  For j = 0 To Range("C" amp; i).Value - 1  Range("A" amp; intRowCounterAB).Interior.Color = Range("C" amp; i).Interior.Color  Range("B" amp; intRowCounterAB).Value = Range("D" amp; i).Value  intRowCounterAB = intRowCounterAB   1  Next j  Next i  Next ws   End Sub  

Комментарии:

1. Спасибо @ricardogerbaudo, работает идеально!!. Что касается многих листов, см. Комментарии выше, лист 1 до листа 8 или менее всегда меняется, как запускать код таким образом.

2. @GoalExcel Я отредактировал исходный код, чтобы включить еще один цикл, который проходит через все существующие листы в вашем файле Excel (рабочей книге).