
Итак, у меня большая электронная таблица (поэтому я не хочу устанавливать цвет каждой ячейки по отдельности или вручную), и у меня есть много ячеек, копирующих другие ячейки. Например, у меня есть ячейки N9, N 3, N80, N117 и так далее =IF(N$931="","",N$931), поэтому, если в N931 что-то есть, оно копируется в N9 и так далее, иначе оно остается пустым. Я хотел бы иметь возможность сделать любой цвет фона, который я задаю N931, автоматически тем же цветом фона, что и в N9. Как мне это сделать?
Ура, Джон!
решение1
Поскольку вы не можете установить цвет ячейки на основе цвета другой ячейки с помощью условного форматирования или любых других методов интерфейса, вам придется использовать VBA.
Предположим, что ваши данные с цветами находятся в строке N и начинаются со строки 500. Также предположим, что ваша первая ячейка для копирования — это N1, и она ссылается на N500, как =if(N500="", "", N500)
. Далее предположим, что вы скопируете эту формулу до N499; VBA будет выглядеть так:
Sub copyValuesAndFormats()
Dim intRow As Integer
Dim rngCopy As Range
Dim rngPaste As Range
'Loop from Rows 1 through 499
For intRow = 1 To 499
'Set the copy and paste range
'CHANGE THE SHEET TO MATCH YOURS
Set rngCopy = Sheet3.Range("N" & intRow + 499)
Set rngPaste = Sheet3.Range("N" & intRow)
'Test to see if rows 500+ have a value
If rngCopy.Value <> "" Then
'Since it has a value, copy the value and color
rngPaste.Value = rngCopy.Value
rngPaste.Interior.Color = rngCopy.Interior.Color
'If you wish to copy the color of the font as well, uncomment the next line
'rngPaste.Font.Color = rngCopy.Font.Color
End If
Next intRow
End sub
Если вы используете это, то в N1:N499 не нужны никакие формулы. Они все равно будут уничтожены этим кодом.