
Ok, então eu tenho uma planilha grande (então não quero ter que definir a cor de cada célula individualmente ou manualmente) e tenho muitas células copiando outras células. Então, por exemplo, eu tenho as células N9, N 3, N80, N117 e assim por diante =IF(N$931="","",N$931) então, se houver algo em N931, ele será copiado para N9 e co, caso contrário, será em branco. Eu gostaria de poder fazer com que qualquer cor de fundo que eu definisse no N931 fosse automaticamente a mesma cor de fundo do N9. Como farei isso?
Saúde! Jon
Responder1
Como você não pode definir a cor de uma célula com base na cor de outra célula usando formatação condicional ou qualquer outra técnica de front-end, você terá que usar o VBA.
Supondo que seus dados, com cores, estejam na linha N e comecem na linha 500. Supondo também que sua primeira célula para copiar seja N1 e faça referência a N500 como =if(N500="", "", N500)
. Supondo ainda que você copiaria essa fórmula para N499; o VBA ficaria assim:
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
Se você usar isso, nenhuma fórmula será necessária em N1:N499. Eles serão eliminados de qualquer maneira por este código.