Faça com que a cor de fundo / texto siga outro plano de fundo ou cor de texto das células

1

Ok, então eu tenho uma planilha grande (então eu não quero ter que definir cada cor de célula individualmente ou manualmente) e eu tenho muitas células copiando outras células. Então, por exemplo, eu tenho células N9, N3, N80, N117 e assim por diante = IF (N $ 931 = "", "", N $ 931) por isso, se há algo em N931 é copiado para N9 e co, senão é em branco. Eu gostaria de ter a habilidade de fazer qualquer cor de fundo que eu configurei para o N931 ser automaticamente a mesma cor de fundo que no N9. Como vou fazer isso?

Felicidades! Jon

Jon
fonte
Eu acredito que isso pode ser impossível do jeito que você expressou. Mas percebo que você diz: “Eu não quero ter que definir a cor de cada célula individualmente ou manualmente”. Como N931a cor está sendo definida? Se for um formato condicional, ou se for definido com base no valor de alguma outra forma, você poderá aplicar o mesmo mecanismo a N9e seus amigos.
Scott
1
Você conhece a função de formatação condicional no Excel? Como o @Scott diz, não pode ser baseado na cor de outra célula, mas pode ser baseado no conteúdo de outras células. Então isso pode te ajudar. Um truque que você pode tentar é ter uma célula com os valores da lista Branca, Vermelha, Verde, etc. e colorir as células usando formatação condicional com base nesse conteúdo (embora isso só funcione bem se você precisar de uma quantidade limitada de cores!) .
agtoever

Respostas:

1

Como você não pode definir uma cor de célula com base na cor de outra célula usando formatação condicional ou qualquer outra técnica de front-end, você precisará usar o VBA.

Supondo que seus dados, com cores, estejam na Linha N e iniciem na Linha 500. Supondo também que sua primeira célula a ser copiada seja N1 e que seja como N500 =if(N500="", "", N500). Além disso, supondo que você iria copiar essa fórmula para N499; o VBA seria semelhante a:

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 isto, então nenhuma fórmula é necessária em N1: N499. Eles serão apagados de qualquer maneira por este código.

JNevill
fonte