Excel-Formel zur Referenz 'ZELLE NACH LINKS'

85

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!

mik
quelle
3
... und falls jemand danach sucht ... um die Spalte nach rechts zu bringen:=INDIRECT("RC[1]",0)
Programmierer
Das ist eine sehr gute Frage. Leider bin ich mir nicht sicher, ob ich das richtig verstehe. Das Originalposter wollte, dass sich seine Zellen ändern, ohne dass eine bedingte Formatierung vorgenommen und dann der Format Painter in jede Zelle eingefügt werden muss. Nehmen wir an, wir haben Monate in den Reihen und Bananen, Äpfel und Orangen in den Spalten. In der Matrix sind die Preise. Wie könnten wir etwas tun, das automatisch eine Zelle rot färbt, wenn sich der Preis vom Vormonat zum aktuellen Monat ändert? Wenn es auch eine automatische Möglichkeit gibt, die Zellen grün zu färben, wenn der Preis sinkt, und rot, wenn
Bryan

Antworten:

96
=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)
Jason Young
quelle
14
Verwenden Sie FÜNF selten verwendete Funktionen zum Nachschlagen der Verwendung anstelle einer einfachen relativen Referenz für A1 oder RC [-1]? Das ist wie eine Reise von Brooklyn in die Bronx mit einem Zwischenstopp in Walla Walla, WA!
John Machin
5
Warum nicht stattdessen = INDIREKT (ADRESSE (REIHE (), SPALTE () - 1))
Prometheus
1
"Indirekt" hat so viele Probleme, einschließlich (aber nicht beschränkt auf) (1) Single-Threading und (2) flüchtiger (möglicherweise kaskadenbedingter Zwang, Ihre gesamte Arbeitsmappe bei jeder Änderung neu zu berechnen. Verwenden Sie sie nicht, wenn die Leistung wichtig ist .
John Joseph
In der bedingten Formatierung habe ich die Regel als festgelegt, ="OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)=""xyz"""aber die Zelle ist nicht formatiert. Was ist los?
Reißverschluss
79

Die kürzeste kompatibelste Version ist:

=INDIRECT("RC[-1]",0)

"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:

=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)

Meiner Meinung nach zu lang. Aber nützlich, wenn der relative Wert dynamisch ist / von einer anderen Zelle abgeleitet ist. z.B:

=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0, A1)

Die einfachste Option:

= RC[-1]

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.

seb
quelle
11

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()und indirect(...).

Michael Haren
quelle
7

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:

=RC[-1]
Edoloughlin
quelle
5

Anstatt das sehr lange zu schreiben:

=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)

Sie können einfach schreiben:

=OFFSET(*Name of your Cell*,0,-1)

So können Sie beispielsweise in Zelle B2 schreiben :

=OFFSET(B2,0,-1)

unter Bezugnahme auf Zelle B1

Trotzdem danke Jason Young !! Ohne Ihre Antwort hätte ich diese Lösung nie gefunden!

Sam Fed
quelle
2
Das ist nicht sinnvoll. Wenn Sie bereits wissen, dass Ihre Zelle B2 ist, können Sie einfach B1 für die Zelle links schreiben und überhaupt keine Offsets verwenden. Es geht darum, etwas völlig Generisches zu tun.
Matthew Read
1
Es ist sehr praktisch, wenn Sie wissen, von welcher Zelle aus Sie starten, und nur der Offset, den Sie ausführen möchten, ist beispielsweise dynamisch = OFFSET (B2,0, A2). In welchem ​​Kontext habe ich es benutzt?
Sam Fed
Dies ist die Antwort, nach der ich gesucht habe! Ich wollte, dass jemand eine einzelne Zelle auswählen kann, die eine ganze Zeile darstellt, und dass sich alles automatisch ändert, um die Parameter in dieser Zeile zu verwenden. Vielen Dank!
BT
1

Füllen Sie die A1-Zelle mit der folgenden Formel:

 =IF(COLUMN(A1)=1;"";OFFSET(A20;0;-1))&"1"

Dann automatisch nach rechts verlängern, bekommen Sie

 1|  A  |  B  |  C  |  ect ect
 2|    1|   11|  111|  ect ect

Wenn der Versatz außerhalb des Bereichs der verfügbaren Zelle liegt, erhalten Sie das #REF! Error.

Ich hoffe dir gefällt es.

MUY Belgien
quelle
1

Noch einfacher:

=indirect(address(row(), column() - 1))

OFFSET gibt eine Referenz relativ zur aktuellen Referenz zurück. Wenn also indirekt die richtige Referenz zurückgegeben wird, benötigen Sie diese nicht.

Gerard ONeill
quelle
Mach das niemals. INDIRECT bricht den Abhängigkeitsbaum - es ist eine Katastrophe.
Ollie2893
Ich habe gerade diese Funktion entdeckt, die meiner Meinung nach für die bedingte Formatierung in Abhängigkeit von der ersten Zeile der Spalte nützlich ist. Ich
bin
1

Beim Erstellen einer benutzerdefinierten Funktion habe ich festgestellt, dass die anderen Antworten die Funktionen betreffen OFFSETund INDIRECTnicht angewendet werden können.

Stattdessen müssen Sie Application.Callersich 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
ComFreek
quelle
0

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):

For Each i In Selection
i.FormatConditions.Delete
i.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:="=" & i.Offset(0, -1).Address
With i.FormatConditions(1).Font
    .Bold = True
End With
Next i
sdfx
quelle
0

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.

Ollie2893
quelle
0

Warum nicht einfach verwenden:

=ADDRESS(ROW(),COLUMN()-1)
Andrew Algava
quelle
0

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.

  1. Wählen Sie Zelle A2

  2. Öffnen Name Manager(Strg + F3)

  3. Klicken New

  4. Nennen Sie es "LeftCell" (oder was auch immer Sie bevorzugen)

  5. Für Scope:WählenWorkbook

  6. Geben Sie Refers to:in die Formel ein:

    =INDEX(!A1:!A2, 1)

  7. Klicken OKund 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.

JCKE
quelle
0

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.)

  1. Klicken Sie auf eine beliebige Stelle im Blatt, die sich nicht in der oberen Reihe befindet - beispielsweise Zelle D9
  2. Definieren Sie einen benannten Bereich mit dem Namen "OneCellAbove", überschreiben Sie jedoch das Feld "RefersTo" mit "= D8" (keine Anführungszeichen).
  3. Jetzt können Sie in Zelle A100 die Formel verwenden
    = SUMME (A1: OneCellAbove)
Gnq
quelle
-1

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: :

=A1<>XFD1

Format...Wählen Wahl der Formatierung OK, OK.

pnuts
quelle