Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

[Excel] Zellformatierungen / -informationen ohne VBA auslesen
#1
Entgegen der landläufigen Auffassung, dass ein Auslesen von Zellformatierungen und -informationen nur mit Hilfe von VBA möglich ist, gibt es ein Relikt aus der Zeit der seeligen EXCEL 4.0 - Makros, das zumindest bis XL 2010 noch funktioniert:

ZELLE.ZUORDNEN

Diese Funktion steht zwar nicht mehr als Tabellenblattfunktion zur Verfügung, aber mit 'nem kleinen Trick kann man sie dennoch nutzen.

Nehmen wir an, Ihr wollt den Farbindex der Füllfarbe von Zelle C3 auslesen, um diese Information für weitere Auswertungen zu verwenden.

 ABCDE
1     
2     
3     
4     
5     

[Excel bis 2003] Klickt in der Menüleiste auf "Einfügen - Namen - Definieren".
[Excel ab 2007] Register "Formeln" -> Gruppe "Definierte Namen" -> Namen definieren"

Das nun erscheinende, ähnlich aussehende Fenster füllt Ihr wie folgt:

[Bild: zuordnen01.jpg]

Nach Klick auf OK gebt Ihr nun im Tabellenblatt in Zelle D3 folgendes ein: =Hintergrundfarbe. Nach Bestätigen mit ENTER erscheint in D3 die Ziffer "3" und das genau ist der Füllfarbenindex der Zelle C3 Wink

 ABCDE
1     
2     
3   3 
4     
5     

NameBezug
Hintergrundfarbe=ZELLE.ZUORDNEN(63;INDIREKT("ZS(-1)";FALSCH))

ZelleFormel
D3=Hintergrundfarbe

Ein paar Hinweise zur Syntax der Formel für den Bezug in der Namensdefinition:

=ZELLE.ZURDNEN(63;...): Eine Auflistung der sog. "Typen", die sich - in diesem Beispiel 63 - hinter den Zahlen verbergen, habe ich als Word-Dokument angehängt.

Was aber verbirgt sich hinter dem unverständlichen Terminus INDIREKT("ZS(-1)". Nun, auch das ist schnell und einfach erklärt: In der Funktion INDIREKT wird die Z1S1-Schreibweise verwendet, das bedeutet Z eile 1 S palte 1 (das könnt Ihr nebenbei bemerkt bis XL 2003 unter "Extras - Optionen - Allgemein - Z1S1Bezugsart" einstellen, ab 2007 unter Optionen -> Formeln).
Z bedeutet in diesem Fall "gleiche Zeile", denn die Formel in D3 soll ja den Farbindex aus C3, also der gleichen Zeile auslesen.
S(-1) hingegen veranlasst die Formel in D3, den Farbindex aus der Spalte links daneben auszulesen (Spalte D ist die 4. Spalte, wir wollen aber aus Spalte C - also der 3. Spalte - auslesen, daher -1).

Vielleicht noch ein Beispiel zur Erläuterung. Wir wollen den Füllfarbenindex der Zelle C3 nicht in D3, sondern in Zelle A7 auslesen. Für unsere Bezugsformel bedeutet dies: Von Zeile 7 müssen wir zur Zeile 3, also -4. Von Spalte A müssen wir zur Spalte C, also +2.

[Bild: zuordnen02.jpg]

 ABCDE
1     
2     
3     
4     
5     
6     
73    
8     

NameBezug
Hintergrundfarbe=ZELLE.ZUORDNEN(63;INDIREKT("Z(-4)S(+2)";FALSCH))

ZelleFormel
A7=Hintergrundfarbe

Und noch ein paar Beispiele dafür, was mit =ZELLE.ZUORDNEN im Tabellenblatt möglich ist:

 ABCD
1 SchriftartSchriftgrösseFett oder nicht
2TestCalibri16WAHR
3TestArial28FALSCH

NameBezug
Fett=ZELLE.ZUORDNEN(20;INDIREKT("ZS(-3)";FALSCH))
Schriftart=ZELLE.ZUORDNEN(18;INDIREKT("ZS(-1)";FALSCH))
Schriftgrösse=ZELLE.ZUORDNEN(19;INDIREKT("ZS(-2)";FALSCH))

ZelleFormel
B2=Schriftart
C2=Schriftgrösse
D2=Fett
B3=Schriftart
C3=Schriftgrösse
D3=Fett

Ihr seht, die alten Excel 4.0 - Makrobefehle haben durchaus auch heute noch ihre Berechtigung, vor allem für die-/denjenigen, die / der sich mit VBA etwas schwer tut Wink


.doc   Hilfe_zu_ZELLE.ZUORDNEN.doc (Größe: 33,5 KB / Downloads: 38)
Überlegen macht überlegen
Gruss aus dem schönen Hunsrück
_______ Klaus-Martin _______
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste