Formatieren einer beliebigen Zelle, auf die in einer Formel verwiesen wird

Formatieren einer beliebigen Zelle, auf die in einer Formel verwiesen wird

Ich habe zwei Blätter, eines mit Formeln, die Daten aus dem zweiten ziehen. Ich muss ein Makro oder ein bedingtes Format erstellen, um die Zelle grün hervorzuheben, wenn die Daten aus dem zweiten Blatt gezogen wurden. Blatt zwei enthält Rohdaten und Blatt eins ist eine Aufschlüsselung der Daten in verschiedene Tabellen.

Um meine Frage zu verdeutlichen: Ich habe ein Rohdatenblatt und ein Einkommensblatt. Das Einkommensblatt enthält Formeln, die Daten aus der Tabelle im Rohdatenblatt ziehen. Was ich versuche, ist:Markieren Sie alle Zellen im Rohdatenblatt, die im Gewinn- und Verlustrechnungsblatt aufgerufen/referenziert werden; auf diese Weise weiß ich, ob etwas im Rohdatenblatt nicht verwendet oder in die Gewinn- und Verlustrechnung aufgenommen wurde. Die Formel in der Gewinn- und Verlustrechnung, mit der ich Daten aus dem Rohdatenblatt ziehe, lautet:

=IF(ISERROR(VLOOKUP($A643, 'Raw Data'!$A:$N, 4, FALSE)), "-", VLOOKUP($A643, 'Raw Data'!$A:$N, 4, FALSE))

Die Spalte A hat einen bestimmten Code, der in derselben Spalte im Rohdatenblatt erscheint. Ich hoffe, diese Informationen helfen Ihnen. Danke! Ich habe diesen Code unten gefunden, weiß aber nicht, wie ich ihn anpassen kann, um ihn auf einem separaten Blatt zu überprüfen.

Sub Button5_Click()

'PLEASE EDIT THIS FIRST BIT. 

Dim row As Integer
row = 1    ' THE STARTING ROW IN YOUR EXCEL SHEET

Dim numberOfRows As Integer
numberOfRows = 5    'THE TOTAL NUMBER OF ROWS YOUR WORKSHEET HAS

Dim columnWithFormula As String
columnWithFormula = "E"    ' THE COLUMN WHERE THE FORMULAs ARE (I suspect you are using B if your example is accurate))

Dim colourIndex As Integer
colourIndex = 26     ' WHAT COLOUR TO HIGHLIGHT COLUMNS. GOOGLE VBa COLOR INDEX

'AND STOP EDITING :)

For row = 1 To numberOfRows

If range(columnWithFormula & row).Value <> "" Then

   Dim result As String

   result = range(columnWithFormula & row).Formula

   result = Replace(result, "(", " ")
   result = Replace(result, ")", " ")
   result = Replace(result, "-", " ")
   result = Replace(result, "+", " ")
   result = Replace(result, "*", " ")
   result = Replace(result, "/", " ")
   result = Replace(result, "=", " ")
   result = Replace(result, ",", " ")

   Dim cells() As String
   cells = Split(Trim(result), " ")

   For j = 0 To UBound(cells)
    range(cells(j)).Interior.ColorIndex = colourIndex
   Next j

End If

Next row


End Sub

Antwort1

Ein Ansatz mit bedingter Formatierung ohne VBA nutzt die Funktion FormulaText(), die in Excel 2013 und höher verfügbar ist.

Erstellen Sie eine bedingte Formel mit einem Format, das prüft, ob der Name eines bestimmten Blatts in der Formel vorhanden ist. Wenn ein Blatt beispielsweise „Rohdaten“ heißt, hebt diese Formel Zellen hervor, die auf dieses Blatt verweisen.

=ISNUMBER(SEARCH("raw data",FORMULATEXT(A2)))

Bildbeschreibung hier eingeben

Dies kann auch angewendet werden, um zu prüfen, ob eine Formel mithilfe strukturierter Verweise auf eine Excel-Tabelle verweist, wobei der Blattname nicht in der Formel vorkommt, der Tabellenname jedoch schon.

=ISNUMBER(SEARCH("RawDataTable",FORMULATEXT(A2)))

Durch die Verwendung unterschiedlicher bedingter Formeln für unterschiedliche Blätter können Sie sehr effektiv Daten hervorheben, die nicht aus dem aktuellen Blatt stammen.

Hinweis: Theoretisch könnte jeder (nicht strukturierte) Verweis auf ein anderes Blatt durch das !Zeichen nach dem Blattnamen im Verweis identifiziert werden. Beim Erstellen von Formeln, die sich über mehrere Blätter erstrecken, kann ein Verweis auf eine Zelle im aktuellen Blatt jedoch manchmal auch den Blattnamen enthalten. Dieser Ansatz sollte daher mit Vorsicht verwendet werden.

verwandte Informationen