
Ok, ich habe also eine große Tabelle (ich möchte also nicht die Farbe jeder Zelle einzeln oder manuell festlegen müssen) und viele Zellen kopieren andere Zellen. Ich habe beispielsweise die Zellen N9, N 3, N80, N117 und so weiter =IF(N$931="","",N$931), wenn also etwas in N931 steht, wird es in N9 usw. kopiert, andernfalls bleibt es leer. Ich hätte gerne die Möglichkeit, die Hintergrundfarbe, die ich für N931 festlege, automatisch auf dieselbe Hintergrundfarbe wie in N9 einzustellen. Wie mache ich das?
Danke!
Antwort1
Da Sie mithilfe der bedingten Formatierung oder anderer Front-End-Techniken die Farbe einer Zelle nicht auf Grundlage der Farbe einer anderen Zelle festlegen können, müssen Sie VBA verwenden.
Angenommen, Ihre Daten mit Farben befinden sich in Zeile N und beginnen bei Zeile 500. Außerdem wird angenommen, dass die erste Zelle, in die Sie kopieren, N1 ist und auf N500 verweist, wie =if(N500="", "", N500)
. Weiter wird angenommen, dass Sie diese Formel bis N499 kopieren würden. Das VBA würde folgendermaßen aussehen:
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
Wenn Sie dies verwenden, sind in N1:N499 keine Formeln erforderlich. Diese werden durch diesen Code ohnehin ausgeblasen.