[43]
Gegeben ist der nebenstehende Tabellenausschnitt. Es soll die Spaltenüberschrift ermittelt werden,
in der der größte Wert des Bereichs A2:C4 enhalten ist.
|
 Abbildung 1: Tabellenblattausschnitt |
Folgende Matrix-Formel :
=INDEX(A1:C1;1;SUMME(WENN(A2:C4=MAX(A2:C4);SPALTE(A2:C4))))
Erläuterung:
Um Formeln nachvollziehen bzw. debuggen zu können, besteht die Möglichkeit Teile der Formel in der Bearbeitungsleiste
zu markieren und anschließend mit der Taste F9 von XL berechnen
zu lassen. Zum Nachvollziehen der Formel sollten Sie diese Technik anwenden. Bauen Sie zusätzlich zur besseren Darstellung
manuelle Zeilenumbrüche in die Formel mit der Tastenkombination Alt+Return ein (s. Abbildung 2). Dies ist
grundsätzlich bei allen Formeln möglich!
Abbildung 2: Teile der Formel markieren und mit der Taste F9 von XL berechnen lassen
- In der Bearbeitungsleiste markiere Sie den in Abbildung 2 gezeigten Teil der Formel und drücke die Taste-F9. XL zeigt anschließend
in der Berabeitungsleiste:
Abbildung 3: Berechnete Bedingung aus A2:C4=MAX(A2:C4)
XL hat die Bedingung berechnet, ob der jeweilige Wert im Bereich A2:C4 der größte Wert ist. In der Bearbeitungszeile
steht jetzt die markierte Matrixkonstante. Es handelt sich um
eine 3x3-Matrix, eben die Ausdehnung des Bereichs A2:C4 (drei Zeilen zu drei Spalten). In der zweiten Spalte, der zweiten
Zeile wurde der Wert Wahr zurückgegeben; diese Zelle enthält den gößten Wert.
- Wichtig: Die Bearbeitungszeile wird nicht mit der Return-Taste bestätigt! Es wird mit diesem Berechnungsstand weitergearbeitet.
Dies gilt auch für die weiteren Berechnungsschritte.
- Jetzt markieren Sie den nächsten Formelteil (s. Abbildung 4) und drücken die Taste F9. XL berechnet diesen Teil der Formel und gibt
hier wiederum eine Matrixkonstante zurück: die jeweilige Spaltenzahl des Bereichs A2:C4, nicht zu verwechseln mit der Spaltenzahl
des Tabellenblattes.
Abbildung 4: markierter Formelteil SPALTE(A2:C4)
Abbildung 5: berechneter Formelteil SPALTE(A2:C4)
- Nun soll die gesammte Wenn-Funktion berechnet werden. Dazu markieren Sie, wie in Anbildung 6 zu sehen, die
Wenn-Funktion, drücken die Taste F9 und erhalten das Ergebnis aus Abbildung 7.
Die Wenn-Funktion hat ermittelt, in welcher Spalte der größte Wert enthalten ist: in Spalte 2.
Abbildung 6: markierter Formelteil
WENN({FALSCH.FALSCH.FALSCH;FALSCH.WAHR.FALSCH;FALSCH.FALSCH.FALSCH};{1.2.3})
Abbildung 7: berechneter Formelteil
WENN({FALSCH.FALSCH.FALSCH;FALSCH.WAHR.FALSCH;FALSCH.FALSCH.FALSCH};{1.2.3})
- Damit Sie die berechnete Spalte 2, in der sich der größte Wert befindet, in die Index-Funktion einsetzen können,
wird die Summe aus der Matrixkonstanten gebildet. Für den Wert Falsch setzt XL den Wert Null. Somit ergibt sich aus der Summe-Funktion
der Wert 2 (s. Abbildung 8 u. 9).
Abbildung 8: markierter Formelteil
SUMME(WENN({FALSCH.FALSCH.FALSCH;FALSCH.WAHR.FALSCH;FALSCH.FALSCH.FALSCH};{1.2.3}))
Abbildung 9: berechneter Formelteil
SUMME(WENN({FALSCH.FALSCH.FALSCH;FALSCH.WAHR.FALSCH;FALSCH.FALSCH.FALSCH};{1.2.3}))
- Abschließend kann mit Hilfe der Index-Funktion die Spaltenüberschrift des größten Wertes aus dem Bereich A2:C4 ermittelt werden (s. Abbildung 10 u. 11).
Dies ist im Bereich A1:C1 (Spaltenüberschriften) die 1. Zeile und darin die errechnete 2. Spalte.
Abbildung 10: markierter Formelteil INDEX(A1:C1;1;2)
Abbildung 11: Formelergebnis: Nele
Anmerkung:
Damit Ihre Ursprungsformel erhalten bleibt, schliessen Sie die Berechnung mit der ESC-Taste ab!
|
[44]
Wie kann ich eine Gruppe von Zeichnungsobjekten als GIF/TIF abspeichern?
Laden Sie sich die gepackte Datei pictures.zip (18 KB) herunter. In der ZIP-Datei befindet
sich eine Arbeitsmappe mit dem Namen Pictures.xls (35 KB). Entpacken Sie diese Datei.
Nach dem Öffnen finden Sie eine Anleitung zum Gebrauch der Makros und verschiedene Zeichnungsobjekte.
Über drei CommandButtons können Sie entweder die Objekte in einer Userform anzeigen lassen, oder als GIF-/TIF-Datei
abspeichern. Mit Alt+F11 gelangen Sie in die VBA-Entwicklungsumgebung. Sehen Sie sich hier den Code
im Standardmodul Modul1, Sub SaveObjektAs() und im Codemodul der Userform1, Private Sub UserForm_Initialize() an.
|
[45]
Wie kann ich die Datei-Eigenschaften auslesen und ändern?
Vorinformationen:
Im Menü DATEI | EIGENSCHAFTEN öffnet sich der Dialog MappeEigenschaften
mit fünf Registerblättern: Allgemein,
Zusammenfassung, Statistik, Inhalt und Anpassen. Die Informationen auf den
ersten vier Registerblättern
bilden die fest integrierten Arbeitsmappen-Eigenschaften (BuiltinDocumentProperties). Diese
Eigenschaften werden teilweise von XL automatisch geführt und zum anderen Teil stehen sie für Eintragungen
des Anwenders zur Verfügung.
Im Menü EXTRAS | OPTIONEN | ALLGEMEIN sollte
das Kontrollfeld Anfrage nach Dateieigenschaften stets aktiviert sein, damit XL
beim ersten Speichervorgang der Arbeitsmappe den Dialog MappeEigenschaften öffnet und der Anwender Eintragungen vornimmt.
Nachdem möglichst aussagekräftige Informationen über die Arbeitsmappe eingtragen wurden, werden mit dem Klick auf
die Schaltfläche OK die Eigenschaften übernommen. Dies scheint zunächst etwas lästig und mit Arbeitsmehrauffwand verbunden zu sein,
ohne einen Vorteil zu sehen. Dennoch es lohnt sich!
Haben Sie die Arbeitsmappeneigenschaften geführt, so können Sie und auch Ihre Arbeitskollegen bereits im Windows-Explorer,
beim Zeigen auf die Datei, einen Teil der Arbeitsmappeneigenschaften (Autor, Titel, Betreff (Thema), Kommentare) als Information
in einem gelben Bubbletext einsehen ohne die Arbeitsmappe geöffnet zu haben.
Das Registerblatt Anpassen enthält die vom Anwender erstellten und
vom Anwender zu aktualisierenden Arbeitsmappen-Eigenschaften (CustomDocumentProperties). XL gibt hier bereits eine Liste von möglichen
Informationen vor. Diese Liste kann aber beliebig erweitert werden.
-
Makros zu den integrierten Arbeitsmappen-Eigenschaften:
Das folgende Makro liest alle integrierten Arbeitsmappen-Eigenschaften aus und trägt sie in ein neues Tabellenblatt der
aktuellen Arbeitsmappe ein:
Sub IntegrierteDokumentEigenschaftenAuflisten()
Dim intI As Integer
Dim myType As Variant
myType = Array("", "Zahl", "Boolean", "Datum", "Text")
On Error Resume Next
Sheets.Add
ActiveSheet.Range("A1:C1").Value = Array("Name", "Eigenschaft", "Type")
For intI = 1 To ActiveWorkbook.BuiltinDocumentProperties.Count
ActiveCell.Offset(intI, 0).Value = ActiveWorkbook.BuiltinDocumentProperties(intI).Name
ActiveCell.Offset(intI, 1).Value = ActiveWorkbook.BuiltinDocumentProperties(intI).Value
ActiveCell.Offset(intI, 2).Value = myType(ActiveWorkbook.BuiltinDocumentProperties(intI).Type)
Next
ActiveSheet.Columns("A:C").AutoFit
End Sub
Um eine integrierte Arbeitsmappen-Eigenschaft zu verändern benutzen Sie die Namen, die das vorhergehende
Makro aufgelistet hat. Nicht alle integrierte Arbeitsmappen-Eigenschaft können einem neuen Wert annehmen.
Sub IntegrierteDokumentEigenschaftenÄndern()
ActiveWorkbook.BuiltinDocumentProperties("Title").Value = "IntegrierteDokumentEigenschaftenÄndern"
End Sub
-
Makros zu den benutzerdefinierten Arbeitsmappeneigenschaften:
Die folgenden Makros zeigen, wie eine neue benutzerdefinierte Arbeitsmappeneigenschaft hinzugefügt,
geändert und gelöscht werden kann. Der hier benutzte Name ist nicht in der Liste enthalten, die XL vordefiniert bereithält.
Die integrierten Namen aus der Liste werden ebenfalls erst durch Zuweisung eines Wertes und anschließendem Klick auf die
Schaltfläche Hinzufügen aktiv.
Sub BenutzdefinierteDokumentEigenschaftHinzufügen()
ActiveWorkbook.CustomDocumentProperties.Add Name:="Laufende Nummer", _
LinkToContent:=False, Type:=msoPropertyTypeNumber, Value:=0
End Sub
Sub BenutzdefinierteDokumentEigenschaftÄndern()
ActiveWorkbook.CustomDocumentProperties("Laufende Nummer").Value = _
ActiveWorkbook.CustomDocumentProperties("Laufende Nummer").Value + 1
End Sub
Sub BenutzdefinierteDokumentEigenschaftLöschen()
ActiveWorkbook.CustomDocumentProperties("Laufende Nummer").Delete
End Sub
|
[46]
Wie kann ich die Quersumme einer Ganzzahl berechnen lassen?
Folgende Matrix-Formel erwartet in Zelle A1 eine ganze Zahl:
=SUMME(WERT(TEIL(A1;ZEILE(INDIREKT("A1:A"&LÄNGE(A1)));1)))
|
[47]
Die folgenden Tabellen zeigen die Formatcodes für die benutzerdefinierte Kopf- und Fußzeile. Die Tabelle1
enthält die Formatcodes für die manuelle Einrichtung und die Tabelle2 enthält die Formatcodes
für die automatisierte (VBA) Einrichtung der benutzerdefinierten Kopf- und Fußzeile.
| Tabelle1: Formatcodes für die manuelle Eingabe |
| Richtet nachfolgende Zeichen links aus: |
&L |
| Zentriert das nachfolgende Zeichen: |
&Z |
| Richtet nachfolgende Zeichen rechts aus: |
&R |
| Schaltet Doppelt Unterstreichen ein oder aus: |
&E |
| Schaltet Hochstellen ein oder aus: |
&X |
| Schaltet Tiefstellen ein oder aus: |
&Y |
| Schaltet Fettdruck ein oder aus: |
&F |
| Schaltet Kursivdruck ein oder aus: |
&K |
| Schaltet Unterstreichen ein oder aus: |
&T |
| Schaltet Durchstreichen ein oder aus: |
&H |
| Schaltet Konturschrift ein oder aus (nur Macintosh): |
&O |
| Schaltet Schattieren ein oder aus (nur Macintosh): |
&H |
| Druckt das aktuelle Datum: |
&D |
| Druckt die aktuelle Zeit: |
&U |
| Druckt den Namen des Dokuments: |
&N |
| Druckt den Namen des Registers einer Arbeitsmappe: |
&B |
| Druckt die Seitenzahl: |
&S |
| Druckt die Seitenzahl zuzüglich der angegebenen Zahl: |
&S+Zahl |
| Druckt die Seitenzahl abzüglich der angegebenen Zahl: |
&S-Zahl |
| Druckt ein einzelnes kaufmännisches Und-Zeichen: |
&& |
Druckt die nachfolgenden Zeichen in der angegebenen Schriftart. Schriftart muß von
Anführungszeichen eingeschlossen sein: |
&"Schriftart" |
Druckt die nachfolgenden Zeichen im angegebenen Schriftgrad.
Geben Sie eine zweistellige Zahl an, um den Schriftgrad anzugeben: |
&nn |
| Druckt die Gesamtanzahl der Seiten eines Dokumentes: |
&A |
| Tabelle2: Formatcodes für die VBA-Programmierung |
| Richtet nachfolgende Zeichen links aus: |
&L |
| Zentriert das nachfolgende Zeichen: |
&C |
| Richtet nachfolgende Zeichen rechts aus: |
&R |
| Schaltet Doppelt Unterstreichen ein oder aus: |
&E |
| Schaltet Hochstellen ein oder aus: |
&X |
| Schaltet Tiefstellen ein oder aus: |
&Y |
| Schaltet Fettdruck ein oder aus: |
&B |
| Schaltet Kursivdruck ein oder aus: |
&I |
| Schaltet Unterstreichen ein oder aus: |
&U |
| Schaltet Durchstreichen ein oder aus: |
&S |
| Fügt das aktuelle Datum ein: |
&D |
| Fügt die aktuelle Zeit ein: |
&T |
| Fügt den Namen des Dokuments ein: |
&F |
| Fügt den Tabellenblattnamen ein: |
&A |
| Fügt die Seitenzahl ein: |
&P |
| Fügt ein einzelnes kaufmännisches Und-Zeichen ein: |
&& |
Formatiert die nachfolgenden Zeichen in der angegebenen Schriftart. Schriftart muß von
Anführungszeichen eingeschlossen sein: |
&"Schriftart" |
Formatiert die nachfolgenden Zeichen im angegebenen Schriftgrad.
Geben Sie eine zweistellige Zahl an, um den Schriftgrad anzugeben: |
&nn |
| Fügt die Gesamtanzahl der Seiten eines Dokumentes ein: |
&N |
| Fügt den Pfad des Dokuments ein: |
&Z |
Beispiel für die VBA-Programmierung:
Das folgende Beispiel trägt in der rechten Kopfzeile den Namen des Tabellenblattes in Fettdruck, in der linken Kopfzeile
das aktuelle Druckdatum und in der mittleren Fußzeile kursiv die Seitenzahl mit der Anzahl der Druckseiten (Seite von Seiten) ein:
Sub KopfUndFußzeile()
With ActiveSheet.PageSetup
.LeftHeader = "&B&F"
.RightHeader = "&D"
.CenterFooter = "&ISeite &P von &N"
End With
End Sub
|
[48]
In meiner Tabelle habe ich etliche Zellen mit weißer Schriftfarbe
versehen, um sie "unsichtbar" zu machen. Jetzt suche ich nach einer Möglichkeit, diese Zellen wiederzufinden.
Eine Möglichkeit besteht darin die Zellen mit Hilfe der Bedingten Formatierung zu markieren. Kopieren Sie dazu die folgende
Funktion in ein Standardmodul der betreffenden Arbeitsmappe (oder in die Personl.xls ):
Function FontWhite(rngZelle As Range) As Boolean
If rngZelle.Font.ColorIndex = 2 Then
FontWhite = True
Else
FontWhite = False
End If
End Function
Beispiel:
Abbildung 1 zeigt den markierten Bereich A1:D6, in dem die Zellen B2, B6 und D3 mit weißer Schriftfarbe versehen wurden.
Zelle A1 ist die aktive Zelle (weiß). Die Markierung bleibt erhalten, dann gehen Sie wie folgt weiter vor:
- Menü FORMAT | BEDINGTE FORMATIERUNG, Formel ist: =FontWhite(A1)
- Vergeben Sie jetzt ein deutlich erkennbares Format, z. B. Hintergrundfarbe Rot
- Klick Sie abschließend auf die Schaltfläche OK.
Abbildung 2 zeigt das Ergebnis der Bedingten Formatierung.
Wichtig: Die Formel wird für die aktive Zelle (hier A1) eingetragen. Der Zellbezug ist relativ.
 Abbildung 1: Markierter Bereich |
 |
 Abbildung 2: Ergebnis der Bedingten Formatierung |
|
[49]
Wie kann ich aus einer bestehenden Liste eine Liste ohne Dublikate in ein neues Tabellenblatt eintragen?
Kopieren Sie das folgende Makro in ein Standardmodul der aktiven Arbeitsmappe oder in die Personl.xls hinein
und weisen Sie ihm eine Symbolleistenschaltfläche zu.
Markieren Sie einen oder mehrere Bereiche in einem Tabellenblatt und starten Sie das Makro:
Sub KeineDublikate()
Dim rngBereich as Range
Dim rngZelle As Range
Dim NoDups As New Collection
Dim Item As Variant
'Bei Fehler weitermachen
'Fehler tritt bei schon vorhandenem 'Key' in der Collection auf
On Error Resume Next
For Each rngBereich in Selection.Areas
For Each rngZelle In rngBereich
'Key = CStr(rngZelle.Value) muß einmalig sein, sonst Fehler
'That's the trick!
NoDups.Add rngZelle.Value, CStr(rngZelle.Value)
Next
Next
'neues Blatt anlegen
Sheets.Add Before:=Sheets(1)
'jedes einmalige Element der Collection ausgeben
For Each Item In NoDups
ActiveCell.Value = Item
ActiveCell.Offset(1, 0).Select
Next
End Sub
|