Ich versuche, eine bedingte Formatierung vorzunehmen, damit sich die Zellenfarbe ändert, wenn sich der Wert von dem Wert in der Zelle links davon unterscheidet (jede Spalte ist ein Monat, in jeder Zeile sind die Kosten für ein bestimmtes Objekt. Ich möchte überwachen leicht Preisänderungen über Monate.)
Ich kann es pro Zelle tun und per Format ziehen, aber ich möchte, dass eine allgemeine Formel auf das gesamte Arbeitsblatt angewendet wird.
Vielen Dank!
=INDIRECT("RC[1]",0)
Antworten:
quelle
="OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)=""xyz"""
aber die Zelle ist nicht formatiert. Was ist los?Die kürzeste kompatibelste Version ist:
"RC [-1]" bedeutet eine Spalte links. "R [1] C [-1]" ist unten links.
Der zweite Parameter 0 bedeutet, dass der erste Parameter in R1C1-Notation interpretiert wird.
Die anderen Optionen:
Meiner Meinung nach zu lang. Aber nützlich, wenn der relative Wert dynamisch ist / von einer anderen Zelle abgeleitet ist. z.B:
Die einfachste Option:
hat den Nachteil, dass Sie die R1C1-Notation mithilfe von Optionen aktivieren müssen. Dies ist ein No-Go, wenn andere Benutzer Excel verwenden müssen.
quelle
Legen Sie beim Erstellen Ihrer bedingten Formatierung den Bereich fest, auf den sie für das gewünschte Element (das gesamte Blatt) angewendet werden soll, und geben Sie dann eine relative Formel ein (entfernen Sie die
$
Zeichen), als würden Sie nur die obere linke Ecke formatieren.Excel wendet die Formatierung entsprechend auf die übrigen Zellen an.
In diesem Beispiel wäre ab B1 die linke Zelle A1. Verwenden Sie einfach das - keine erweiterte Formel erforderlich.
Wenn Sie sich für etwas weiter fortgeschritten, können Sie sich spielen , um mit
column()
,row()
undindirect(...)
.quelle
Wenn Sie Ihre Zellreferenz so ändern, dass sie die R1C1-Notation verwendet (Extras | Optionen, Registerkarte Allgemein), können Sie eine einfache Notation verwenden und in eine beliebige Zelle einfügen.
Jetzt lautet Ihre Formel einfach:
quelle
Anstatt das sehr lange zu schreiben:
Sie können einfach schreiben:
So können Sie beispielsweise in Zelle B2 schreiben :
unter Bezugnahme auf Zelle B1
Trotzdem danke Jason Young !! Ohne Ihre Antwort hätte ich diese Lösung nie gefunden!
quelle
Füllen Sie die A1-Zelle mit der folgenden Formel:
Dann automatisch nach rechts verlängern, bekommen Sie
Wenn der Versatz außerhalb des Bereichs der verfügbaren Zelle liegt, erhalten Sie das #REF! Error.
Ich hoffe dir gefällt es.
quelle
Noch einfacher:
OFFSET gibt eine Referenz relativ zur aktuellen Referenz zurück. Wenn also indirekt die richtige Referenz zurückgegeben wird, benötigen Sie diese nicht.
quelle
Beim Erstellen einer benutzerdefinierten Funktion habe ich festgestellt, dass die anderen Antworten die Funktionen betreffen
OFFSET
undINDIRECT
nicht angewendet werden können.Stattdessen müssen Sie
Application.Caller
sich auf die Zelle beziehen, in der die benutzerdefinierte Funktion (User Defined Function, UDF) verwendet wurde. In einem zweiten Schritt konvertieren Sie den Spaltenindex in den Namen der entsprechenden Spalte.Schließlich sind Sie in der Lage die linke Zelle mit dem aktiven Arbeitsblatt verweisen Funktion Bereich .
Function my_user_defined_function(argument1, argument2) ' Way to convert a column number to its name copied from StackOverflow ' http://stackoverflow.com/a/10107264 ' Answer by Siddarth Rout (http://stackoverflow.com/users/1140579/siddharth-rout) ' License (if applicable due to the small amount of code): CC BY-SA 3.0 colName = Split(Cells(, (Application.Caller(1).Column - 1)).Address, "$")(1) rowNumber = Application.Caller(1).Row left_cell_value = ActiveSheet.Range(colName & rowNumber).Value ' Now do something with left_cell_value
quelle
Sie können ein VBA-Skript verwenden, das die bedingte Formatierung einer Auswahl ändert (möglicherweise müssen Sie die Bedingung und Formatierung entsprechend anpassen):
quelle
Ich bin auf diesen Thread gestoßen, weil ich immer auf die "Zelle links" verweisen wollte, aber CRUCIALLY auf nichtflüchtige Weise (kein OFFSET, INDIREKT und ähnliche Katastrophen). Im Internet nach oben und unten schauen, keine Antworten. (Dieser Thread liefert auch keine Antwort.) Nach einigem Basteln bin ich auf die erstaunlichste Methode gestoßen, die ich gerne mit dieser Community teile:
Angenommen, ein Startwert von 100 in E6. Angenommen, ich gebe in F5 ein Delta für diesen Wert ein, sagen wir 5. Wir würden dann den Fortsetzungswert (105) in F6 = E6 + F5 berechnen. Wenn Sie einen weiteren Schritt hinzufügen möchten, einfach: Kopieren Sie einfach Spalte F in Spalte G und geben Sie ein neues Delta in G5 ein.
Dies tun wir regelmäßig. Jede Spalte hat ein Datum und diese Daten MÜSSEN in chronologischer Reihenfolge sein (um bei MATCH usw. zu helfen). Ab und zu vergessen wir, einen Schritt einzugeben. Angenommen, Sie möchten eine Spalte zwischen F und G einfügen (um Ihre Auslassung nachzuholen) und F in das neue G kopieren (um die Fortsetzungsformel neu zu füllen). Dies ist NICHTS KURZ von einer totalen Katastrophe. Probieren Sie es aus - H6 sagt jetzt = F6 + H5 und NICHT (wie wir es unbedingt brauchen) = G6 + H5. (Der neue G6 wird korrekt sein.)
Damit dies funktioniert, können wir diese banale Berechnung auf erstaunlichste Weise verschleiern. F6 = Index ($ E6: F6; 1; Spalten ($ E1: F1) -1) + F5. Wenn Sie nach rechts kopieren, erhalten Sie G6 = Index ($ E6: G6; 1; Spalten ($ E1: G1) -1) + G5.
Das sollte niemals funktionieren, oder? Rundschreiben, klar! Probieren Sie es aus und lassen Sie sich überraschen. Excel scheint zu erkennen, dass der INDEX-Bereich zwar die Zelle umfasst, die wir neu berechnen, diese Zelle selbst jedoch nicht vom INDEX angesprochen wird und daher KEINE Zirkelreferenz erstellt.
Jetzt bin ich zu Hause und trocken. Fügen Sie eine Spalte zwischen F und G ein und wir erhalten genau das, was wir brauchen: Der Fortsetzungswert im alten H verweist auf den Fortsetzungswert, den wir im neuen G eingefügt haben.
quelle
Warum nicht einfach verwenden:
quelle
Machen Sie eine benannte Formel "LeftCell"
Wenn Sie nach einer nichtflüchtigen Antwort suchen, können Sie dies mithilfe der INDEX-Funktion in einer benannten Formel erreichen.
Wählen Sie Zelle A2
Öffnen
Name Manager
(Strg + F3)Klicken
New
Nennen Sie es "LeftCell" (oder was auch immer Sie bevorzugen)
Für
Scope:
WählenWorkbook
Geben Sie
Refers to:
in die Formel ein:=INDEX(!A1:!A2, 1)
Klicken
OK
und schließenName Manager
Dies weist Excel an, den Wert immer unmittelbar links von der aktuellen Zelle anzuzeigen, und ändert sich dynamisch, wenn verschiedene Zellen ausgewählt werden. Wenn der Name alleine verwendet wird, gibt er den Wert der Zelle an, in einem Bereich wird jedoch die Referenz verwendet. Gutschrift auf diese Antwort über Zellreferenzen für die Idee.
quelle
Ich denke, das ist die einfachste Antwort.
Verwenden Sie einen "Namen", um auf den Versatz zu verweisen.
Angenommen, Sie möchten eine Spalte (Spalte A) bis zur Zelle summieren, die die Summierung enthält (z. B. Zelle A100). mach das:
(Ich gehe davon aus, dass Sie beim Erstellen des Namens die A1-Referenzierung verwenden. R1C1 kann anschließend umgeschaltet werden.)
quelle
Bitte wählen Sie das gesamte Blatt und HOME> Styles - Bedingte Formatierung, Neue Regel ..., Verwenden Sie eine Formel , um zu bestimmen , welche Zellen zu Format und Format Werten , wobei diese Formel gilt: :
Format...Wählen Wahl der Formatierung OK, OK.
quelle