wake-up-neo.com

Bedingte Formatierung mit der AND () - Funktion

Ich versuche die bedingte Formatierung auf einem Blatt. Ich muss die Zellen entsprechend der folgenden Bedingungsanweisung mit einer bestimmten Farbe füllen:

=AND((INDIRECT(ADDRESS(4;COLUMN()))>=INDIRECT(ADDRESS(ROW();4)));(INDIRECT(ADDRESS(4;COLUMN()))<=INDIRECT(ADDRESS(ROW();5))))

Wenn ich die Anweisungen in der AND () - Funktion separat versuche, scheinen sie zu funktionieren, aber wenn ich sie in der Funktion zusammenstelle, sehe ich keine Formatierung.

Hier einige Hintergrundinformationen: Zeile 4 der "aktuellen Spalte" enthält ein Datum (DATE1). In den Spalten D und E der "aktuellen Zeile" (DATE2 und DATE3) befinden sich auch Datumsangaben. Wenn DATE1 zwischen DATE2 und DATE3 liegt, möchte ich die Zelle mit einer Farbe füllen.

Ich kann nicht verstehen, warum die Formel nicht funktioniert. Jede Hilfe wird sehr geschätzt.

Update (13. Dezember 2011):

Ich habe eine Funktion implementiert, die ich von den Zellen aus anrufe, die ich benötige. Die Funktion gibt ganzzahlige Werte zurück. Bei der bedingten Formatierung werden nur die ganzen Zahlen in den Zellen verwendet. Auf diese Weise ist die bedingte Formatierung weniger kompliziert. Ich übergebe INDIREKT (ADRESSE (ROW (); COLUMN ())) an die Funktion, die ich implementiere. Ich habe also alle Informationen, die ich brauche, wenn ich an relativen und/oder absoluten Zellen arbeite. Es wäre großartig, einen einfacheren Weg zu kennen, um die aktuelle Zelle als Bereich in die Funktion zu übergeben.

Hinweis: ActiveCell schien für mich nicht zu funktionieren. Es verwendet die Daten aus der Zelle, die zu dem Zeitpunkt ausgewählt wird, zu dem die Funktion ausgeführt wird. Das ist nicht was ich suche. Ich könnte natürlich an der Zelle selbst vorbeikommen (wie in A4, B7 usw.), aber ich bin mir nicht sicher, ob es wirklich auf die Leistung ankommt.

Vielen Dank an alle, die auf meine Frage geantwortet haben.

12
some user

Ich hatte das gleiche Problem mit dem AND (), das die bedingte Formatierung brach. Ich habe gerade versucht, das AND als Multiplikation zu behandeln, und es funktioniert! Entfernen Sie die AND () - Funktion und multiplizieren Sie einfach Ihre Argumente. Excel behandelt die Booleans als 1 für wahr und 0 für falsch. Ich habe diese Formel gerade getestet und es scheint zu funktionieren.

=(INDIRECT(ADDRESS(4,COLUMN()))>=INDIRECT(ADDRESS(ROW(),4)))*(INDIRECT(ADDRESS(4,COLUMN()))<=INDIRECT(ADDRESS(ROW(),5)))
32
James

Sie können eine viel einfachere Formel verwenden. Ich habe gerade eine neue Arbeitsmappe erstellt, um sie zu testen.

Column A = Date1 | Column B = Date2 | Column C = Date3

Markieren Sie Spalte A und geben Sie die Formel für die bedingte Formatierung ein: 

=AND(A1>B1,A1<C1)
4
Lee Tickett

Ich hatte ein ähnliches Problem mit einer weniger komplizierten Formel: 

= If (x > A & x <= B) 

und stellte fest, dass ich die AND entfernen und die beiden Vergleiche mit + verbinden konnte. 

  = (x > A1) + (x <= B1)        [without all the spaces]

Hoffe, das hilft anderen bei weniger komplexen Vergleichen.

1
David

COLUMN() und ROW() funktionieren auf diese Weise nicht, da sie auf die Zelle angewendet werden, in der sie aufgerufen werden. Bei der bedingten Formatierung müssen Sie explizit anstelle von implizit sein.

Wenn Sie diese bedingte Formatierung beispielsweise für einen Bereich verwenden möchten, der in der Zelle A1 beginnt, können Sie Folgendes versuchen:

`COLUMN(A1)` and `ROW(A1)`

Excel passt die bedingte Formatierung automatisch an die Zelle current an.

0
JMax

Dies liegt wahrscheinlich an den Funktionen column () und row (). Ich bin nicht sicher, wie sie in der bedingten Formatierung angewendet werden. Erstellen Sie eine neue Spalte mit dem Wert aus dieser Formel und verwenden Sie sie für Ihre Formatierungsanforderungen.

0
ivan

Die gleichen Probleme wie in anderen Berichten - mit Excel 2016. Es wurde festgestellt, dass bei der Anwendung von Bedingungsformeln gegen Tables UND, Multiplikation der Bedingungen und Hinzufügen der Bedingungen fehlgeschlagen. Musste die TRUE/FALSE-Logik selbst erstellen:

=IF($C2="SomeText",0,1)+IF(INT($D2)>1000,0,1)=0
0
Grampa Ken

Ich bin derzeit für eine Excel-Anwendung mit viel altem Code verantwortlich. Einer der langsamsten Teile dieses Codes bestand darin, 500 Zeilen in 6 Spalten zu durchlaufen und jeweils bedingte Formatierungsformeln festzulegen. Die Formeln geben an, wo der Zellinhalt nicht leer ist, aber nicht Teil eines benannten Bereichs ist. Er bezieht sich daher zweimal auf die Zelle selbst, die ursprünglich als geschrieben wurde:

=AND(COUNTIF(<rangename>,<cellref>)=0,<cellref><>"")

Offensichtlich würde der Aufwand erheblich reduziert werden, wenn alle Zellen in jeder Spalte (Bereich) gleichzeitig aktualisiert werden. Wie bereits erwähnt, funktioniert die Verwendung von ADDRESS (ROW (), COLUMN (), n) unter diesen Umständen nicht, d. H., Das funktioniert nicht:

=AND(COUNTIF(<rangename>,ADDRESS(ROW(),COLUMN(),1))=0,ADDRESS(ROW(),COLUMN(),1)<>"")

Ich experimentierte ausgiebig mit einer leeren Arbeitsmappe und konnte unter Verwendung verschiedener Alternativen wie ISBLANK keinen Ausweg finden. Um dies zu umgehen, habe ich zwei benutzerdefinierte Funktionen erstellt (mit einem Tipp, den ich an anderer Stelle auf dieser Website gefunden habe):

Public Function returnCellContent() As Variant

  returnCellContent = Application.Caller.Value

End Function

Public Function Cell_HasContent() As Boolean

  If Application.Caller.Value = "" Then
    Cell_HasContent = False
  Else
    Cell_HasContent = True
  End If

End Function

Die bedingte Formel lautet jetzt:

=AND(COUNTIF(<rangename>,returnCellContent()=0,Cell_HasContent())

das funktioniert gut.

Dies hat den Code in Excel 2010 von 5 Sekunden auf 1 Sekunde beschleunigt. Da dieser Code immer dann ausgeführt wird, wenn Daten in die Anwendung geladen werden, ist diese Einsparung für den Benutzer von Bedeutung. Es ist auch viel sauberer und wiederverwendbar.

Ich habe mir die Zeit genommen, dies zu posten, da ich auf dieser Website oder anderswo keine Antworten finden konnte, die alle Umstände abdecken. Ich bin jedoch sicher, dass es andere gibt, die von dem oben genannten Ansatz profitieren könnten, möglicherweise mit einer größeren Anzahl von zu aktualisierenden Zellen.

0
Rich Harding