www.xl-faq.de, homepage Eingangsseite / FAQ / Seite 7
Autor: Frank Arendt-Theilen


XLHome-Logo Die Power von Excel® nutzen und anwenden:
Wissen rund um Microsoft® Excel®

FAQ (Frequently Asked Questions) Seite 7

Seitenende
Liste ohne Dublikate erstellen [49]
Bestimmte Zellen mit Hilfe der Bedingten Formatierung ermitteln [48]
Formatcodes für die Kopf- und Fußzeile [47]
Quersumme einer Ganzzahl berechnen [46]
Datei-Eigenschaften auslesen und ändern [45]
Zeichnungsobjekte als GIF/TIF abspeichern [44]
Spaltenüberschrift zum größten Wert eines Bereichs ermitteln [43]

zur Seite:  1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9 |  10 | 

Index:

 
Frage? [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


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

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

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


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


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



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



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

Leiste
Frage? [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.

Leiste
Frage? [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
    
Leiste
Frage? [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)))
Leiste
Frage? [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
Leiste
Frage? [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

Leiste
Frage? [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
Leiste
Seitenanfang

Copyright © 2000 - 2009, by Frank Arendt-Theilen
eMail: Frank Arendt-Theilen, theilenf@gmx.de