Excel Tips

Transcription

Excel Tips
Inhaltsverzeichnis
ADD-IN IN ARBEITSMAPPE UMWANDELN ................................................................................................................ 4
AKTUELLES DATUM ALS DATEINAMEN ZUWEISEN ............................................................................................... 4
ALLE ARBEITSMAPPEN AUF EINMAL SPEICHERN ................................................................................................. 5
ALTERNATIVEN ZUM STANDARD-TABELLENSCHUTZ VON EXCEL...................................................................... 6
ANZAHL UNTERSCHIEDLICHER EINTRÄGE IN EINEM TABELLENBEREICH ERMITTELN................................... 8
ANZEIGE VON NULLWERTEN UNTERDRÜCKEN...................................................................................................... 9
ARBEITSMAPPEN-REGISTER ALPHABETISCH SORTIEREN ................................................................................ 10
AUSFÜLLEN PER DOPPELKLICK ............................................................................................................................. 11
AUTOMATISCHE ZAHLENUMWANDLUNG VERHINDERN...................................................................................... 11
AUTOMATISCHER TABELLENSCHUTZ PER MAUSKLICK..................................................................................... 12
BEDINGTE FORMATIERUNG MIT BEZÜGEN AUF ANDERE TABELLEN............................................................... 13
BEDINGTE FORMATIERUNG MIT MEHR ALS 3 BEDINGUNGEN ........................................................................... 15
BELIEBIGE SORTIERFOLGEN MIT BENUTZERDEFINIERTEN LISTEN ................................................................. 16
BELIEBIGES EXCEL-TABELLENBLATT FÜR SERIENDRUCK IN WORD............................................................... 17
BENUTZERNAMEN AUSLESEN (API) ....................................................................................................................... 18
BEREICH PER VBA KOPIEREN ................................................................................................................................. 19
BLATTREGISTER NACH FARBE SORTIEREN ......................................................................................................... 19
DATEN KOMFORTABEL ÜBERTRAGEN .................................................................................................................. 20
DATUMSFORMEL ODER WERT ................................................................................................................................ 21
DEZIMALZAHL ALS BRUCH ANZEIGEN................................................................................................................... 22
DEZIMALZAHLEN AM KOMMA AUSRICHTEN ......................................................................................................... 22
DIAGRAMMACHSEN IN KORREKTEN PROPORTIONEN SKALIEREN................................................................... 23
DIAGRAMME VOLL AUTOMATISCH AKTUALISIEREN ........................................................................................... 26
DIE DREI HÖCHSTEN WERTE SUMMIEREN ............................................................................................................ 27
DOPPELTE EINTRÄGE IN EINER SPALTE VERHINDERN....................................................................................... 28
DROPDOWN-FELDER IN ZELLEN MITEINANDER VERKNÜPFEN.......................................................................... 30
DRUCKBEREICH EINFACHER FESTLEGEN ............................................................................................................ 31
DRUCKEN VON ARBEITSMAPPEN VERHINDERN .................................................................................................. 31
DUPLIKATE IN ADRESSLISTEN FINDEN UND LÖSCHEN ...................................................................................... 32
DYNAMISCHE DIAGRAMME DURCH STEUERELEMENTE ..................................................................................... 35
DYNAMISCHER MAUSZEIGER, TEIL 2 ..................................................................................................................... 36
ECHTE ARBEITSTAGE............................................................................................................................................... 39
EINZELNE ZELLEN AUSBLENDEN ........................................................................................................................... 40
EXCEL-DATEN NACH WORD ÜBERNEHMEN.......................................................................................................... 41
EXTRAHIEREN VON ZELLINHALTEN MIT LEERZEICHEN TRENNUNG IN EXCEL (FORMEL)............................. 42
FEHLENDE DATENPUNKTE IN DIAGRAMMEN........................................................................................................ 42
FEHLERWERTE IN TABELLEN UNTERDRÜCKEN................................................................................................... 43
FLEXIBLES KOPIEREN IN EXCEL 97 UND 2000 ...................................................................................................... 44
FORMATIERTE ZELLEN MIT TEXT KOMBINIEREN ................................................................................................. 45
FORMEL OHNE ÄNDERUNG KOPIEREN.................................................................................................................. 45
FORMELN TEILWEISE BERECHNEN ........................................................................................................................ 46
GEBURTSTAGE UND ALTERSBERECHNUNG ........................................................................................................ 46
GEFUNDENE DATENSAETZE AUTOMATISCH LOESCHEN ................................................................................... 48
GESCHÜTZTE ZELLEN PER VBA BEARBEITEN ..................................................................................................... 50
GRAFIKEN IN EXCEL BEARBEITEN ......................................................................................................................... 50
GROßE TABELLENBEREICHE KOMFORTABEL MARKIEREN ............................................................................... 51
GRÖßTE WERTE AUS EINEM BEREICH ERMITTELN ............................................................................................. 52
INHALTSVERZEICHNIS FÜR ARBEITSMAPPEN AUTOMATISCH ANLEGEN........................................................ 52
INTEGRIERTE DIALOGE VON EXCEL....................................................................................................................... 53
INTERNET-TABELLEN GANZ EINFACH ÜBERNEHMEN......................................................................................... 54
KOMFORTABLE NAVIGATION MIT DER EXCEL-LUPE ........................................................................................... 54
KOMFORTABLER UMGANG MIT GROßEN MARKIERUNGEN ................................................................................ 59
KOPF- UND FUßZEILENTRICKS FÜR EXCEL .......................................................................................................... 59
LAUFENDE SUMME INNERHALB EINER ZELLE ..................................................................................................... 60
LAUFWERKE AUSLESEN IN VBA ............................................................................................................................. 62
LEERE ZELLE IN EINEM BEREICH FINDEN ............................................................................................................. 63
LETZTES SPEICHERDATUM IN ZELLE SCHREIBEN............................................................................................... 63
LINEARE GLEICHUNGSSYSTEME ............................................................................................................................ 64
LISTEN GRUPPIEREN UND DURCH SEITENWECHSEL TRENNEN........................................................................ 65
MAKROS UND FUNKTIONEN IMMER VERFÜGBAR. ............................................................................................... 66
MAXIMALE ANZAHL ZEILEN IN EXCEL.................................................................................................................... 68
MEHRERE DRUCKER KOMFORTABEL NUTZEN..................................................................................................... 68
MEHRFACHAUSWAHL IN VBA AUSWERTEN.......................................................................................................... 70
NACHNAMEN AUS EINER ZEICHENKETTE ERMITTELN........................................................................................ 71
NAMENSDEFINITIONEN IM ÜBERBLICK.................................................................................................................. 72
OPTIMALE SPALTENBREITE PER MAUSKLICK...................................................................................................... 72
PERFEKTER AUSDRUCK MIT DEM KOSTENLOSEN BERICHT-MANAGER.......................................................... 73
PRÜFEN AUF MARKIERTEN BEREICH..................................................................................................................... 74
QUARTALSNUMMER FÜR EIN DATUM BERECHNEN............................................................................................. 75
QUERSUMME BILDEN................................................................................................................................................ 75
RANGFOLGE MIT GEWICHTETEN KRITERIEN........................................................................................................ 75
REALLASTCELL FUNCTION...................................................................................................................................... 77
RECHNEN MIT UHRZEITEN ....................................................................................................................................... 77
RELATIVE BEREICHSNAMEN IN IHREN FORMELN ................................................................................................ 79
RUNDUNGSFORMEL AUF 0.05 (WÄHRUNG) ........................................................................................................... 80
RUNDUNGSFORMEL AUF BELIEBIGE WERTE ....................................................................................................... 81
SEITENUMBRÜCHE PRO KATEGORIEEBENE EINFÜGEN ..................................................................................... 81
SO LÖSEN SIE DIE VERKNÜPFUNG ZWISCHEN DIAGRAMM UND TABELLE ..................................................... 82
SPEICHERN VON ARBEITSMAPPEN VERHINDERN ............................................................................................... 84
STANDARD-DIALOG VON EXCEL PER VBA ANZEIGEN ........................................................................................ 85
STARTPOSITION BEIM ÖFFNEN EINER ARBEITSMAPPE...................................................................................... 85
STATUSMELDUNGEN WÄHREND DER MAKROAUSFÜHRUNG ............................................................................ 86
SUMMENFUNKTION MIT MEHR ALS 30 ARGUMENTEN......................................................................................... 86
SVERWEIS BEISPIEL SCHULNOTEN PER EXCEL-TABELLE ERMITTELN ........................................................... 87
TABELLEN KOMFORTABEL AUSWERTEN.............................................................................................................. 88
TABELLEN-BEREICHE KOMFORTABEL VERGLEICHEN ....................................................................................... 89
TABELLENBLATT VERBERGEN ............................................................................................................................... 89
TABELLENBLÄTTER ABSOLUT SICHER VERSTECKEN........................................................................................ 90
TAGESSALDO KOMFORTABEL BERECHNEN ........................................................................................................ 90
TEXT- INS ZAHLENFORMAT UMWANDELN............................................................................................................. 91
TEXTWERTE MIT ZAHLEN ODER FORMELN KOMBINIEREN ................................................................................ 92
VBA-CODE PER KNOPFDRUCK AUS EINER EXCEL-DATEI ENTFERNEN............................................................ 93
VERKNÜPFUNGEN OPTIMAL IM GRIFF ................................................................................................................... 95
VERLAUFSBALKEN IN IHREN VBA-MAKROS ......................................................................................................... 96
VERWEIS AUF LETZTE ZEILE IN ANDEREM TABELLENBLATT (DYNAMISCH)................................................... 97
WERTE UND BEREICHE KOMFORTABEL ÜBERWACHEN .................................................................................... 97
WERTEANZAHL UND SUMME JE NACH AUSWAHLKRITERIUM ........................................................................... 99
WIEDERHOLEN-FORMATE...................................................................................................................................... 100
WORD 2002 VERLIERT ZAHLENFORMATIERUNGEN BEIM SERIENDRUCK...................................................... 100
ZÄHLENWENN MIT MEHREREN BEDINGUNGEN (273) ........................................................................................ 101
ZEICHENKETTEN KOMFORTABEL PER VBA VERARBEITEN ............................................................................. 102
ZEITANGABEN ÜBER 24 STUNDEN SUMMIEREN ................................................................................................ 104
ZELLINHALTE KOMPLETT LÖSCHEN .................................................................................................................... 104
ZIRKELBEZÜGE AUTOMATISCH AUFLISTEN ....................................................................................................... 105
ZUFALLSZAHLEN KOMFORTABEL ERZEUGEN ................................................................................................... 106
ZWEI ZELLEN ZUSAMMENFÜGEN MIT ZEILENWECHSEL................................................................................... 107
Home
Add-In in Arbeitsmappe umwandeln
Versionen: Excel 97, 2000 und 2002
FRAGE: In Ausgabe 4/2002 haben Sie Add-Ins als Möglichkeit zur flexiblen Speicherung von
Makros und VBA-Funktionen vorgestellt. Dabei wurde die Arbeitsmappe nach dem Erstellen des
Add-Ins ohne Speicherung geschlossen. Wie kann ich aus einem Add-In aber bei Bedarf wieder
einer Arbeitsmappe machen und auf die Tabellen sowie die Datei-Eigenschaften zugreifen?
Dazu müsste ich die zugrundeliegende XLS-Datei doch eigentlich sichern, oder?
K. Liebig
ANTWORT: Bis Excel 95 konnte ein Add-In tatsächlich nicht ohne weiteres wieder in eine
Arbeitsmappe umgewandelt werden. Ab Excel 97 gibt es eine einfache, wenn auch wenig
bekannte Möglichkeit:
1. Wechseln Sie in den VBA-Editor und öffnen Sie im Projekt-Explorer das VBA-Projekt des
gewünschten Add-Ins.
2. Öffnen Sie den Zweig "Microsoft Excel Objekte" und klicken Sie auf "Diese Arbeitsmappe".
3. Im Fenster "Eigenschaften - Diese Arbeitsmappe" finden Sie nun eine Eigenschaft "IsAddin",
die Sie einfach von "Yes" auf "No" setzen.
Daraufhin erscheint das Add-In sofort als normale Arbeitsmappe in Excel. Sie können die
Tabellenblätter bearbeiten und auf Wunsch die Datei-Eigenschaften verändern. Danach kehren
Sie dann wieder in die Entwicklungsumgebung zurück, ändern die Eigenschaft "IsAddin" wieder
auf "Yes" und schon steht Ihnen wieder ein Add-In mit den gewünschten Änderungen zur
Verfügung. Wichtig dabei: Bitte wählen Sie direkt danach das Menü Datei-<Name>.xla
speichern an, damit die aktuelle Version des Add-Ins gespeichert wird.
Aktuelles Datum als Dateinamen zuweisen
Versionen: Excel 97, 2000 und 2002
FRAGE: Um die Bearbeitungen einer Arbeitsmappe zu dokumentieren, weise ich ihr beim Speichern
immer das aktuelle Datum als Dateinamen zu. Kann ich diese Aufgabe nicht automatisieren?
U. Schneller
ANTWORT: Mit ein paar Zeilen VBA-Code ist das kein Problem. Die nachfolgenden Beispiele zeigen zwei
Varianten: Variante 1 speichert die aktuelle Datei ohne weitere Rückmeldungen unter dem aktuellen
Datum in einem vorgegebenen Ordner. Variante 2 nutzt das übliche Dialogfeld Speichern unter und
schlägt als Dateinamen automatisch das aktuelle Datum vor. Den Zielordner können Sie auf diese Weise
selbst bestimmen.
Variante 1 - Sofortiges Speichern:
Wechseln Sie mit Alt+F11 in den Visual Basic-Editor und öffnen Sie per Einfügen-Modul ein neues
Codefenster. Darin geben Sie folgende Prozedur ein:
Sub MitDatumSpeichern()
Dim strPfad As String
Dim strDateiname As String
Home
Home
strPfad = "C:\\Eigene Dateien\\"
strDateiname = Format(Now(), "ddmmyyyy")
ActiveWorkbook.SaveAs (strPfad & strDateiname)
End Sub
Um die Prozedur an Ihre Systemumgebung anzupassen, müssen Sie die Pfadangabe in der Zeile "strPfad
= ..." entsprechend ändern. Beachten Sie dabei, dass der Pfad mit einem "\" enden muss. Als
Datumsformat kommen hier zweistellige Tages- und Monatsangaben sowie eine vierstellige Jahreszahl
zum Einsatz. Wenn Sie eine andere Formatierung wünschen, bearbeiten Sie einfach das Datumsformat
"ddmmyyyy".
Variante 2 - Speichern per Dialogfeld:
Gehen Sie wie in Variante 1 vor, um ein neues Codefenster im VB-Editor einzurichten, in das Sie die
folgende Prozedur einfügen. Alternativ können Sie den Prozedurcode auch direkt unter der ersten
Prozedur eingeben:
Sub SpeichernUnterDatum()
Dim strDateiname As String
strDateiname = Format(Now(), "ddmmyyyy")
Application.Dialogs(xlDialogSaveAs).Show (strDateiname)
End Sub
Für das Datumsformat gelten die selben Anmerkungen wie in Variante 1. Anstelle die aktuelle Datei sofort
zu speichern, lassen Sie hier aber das integrierte Dialogfeld Speichern unter anzeigen. Als Argument
übergeben Sie das aktuelle Datum, so dass es im Dialogfeld automatisch als Dateinamensvorgabe
erscheint.
Wenn Sie die Prozeduren ausführen wollen, drücken Sie in der Excel-Arbeitsmappe die
Tastenkombination Alt+F8. Anschließend genügt ein Doppelklick auf "MitDatumSpeichern" oder
"SpeichernUnterDatum". Probieren Sie aus, welche Variante Ihnen besser gefällt.
Alle Arbeitsmappen auf einmal speichern
Versionen: Excel 97, 2000 und 2002
FRAGE: Wenn ich die Umschalt-Taste festhalte und dann das Menü Datei öffne, stellt mir Excel zwar
den Befehl Alle schließen zur Verfügung. Ich möchte die geöffneten Arbeitsmappen aber nicht schließen,
sondern in einem Arbeitsgang speichern. Gibt es auch für diesen Zweck einen Shortcut?
M. Drexler
ANTWORT: Leider bietet Excel von Haus aus tatsächlich nur das gleichzeitige Schließen aller geöffneten
Dateien an. Wenn Sie alle Arbeitsmappen "in einem Rutsch" speichern wollen, ohne sie zu schließen,
müssen Sie mit einem VBA-Makro nachhelfen.
Home
Home
Wechseln Sie also mit Alt+F11 in den Visual Basic-Editor und richten Sie mit dem Befehl Einfügen-Modul
ein neues Codefenster ein. Geben Sie folgende Prozedur ein:
Public Sub AllesSpeichern()
Dim objMappe As Workbook
For Each objMappe In Application.Workbooks
If objMappe.Path <> "" Then
objMappe.Save
Else
objMappe.Activate
Application.Dialogs(xlDialogSaveAs).Show _
(objMappe.Name)
End If
Next objMappe
MsgBox "Speichervorgang beendet!"
End Sub
Die For-Schleife durchläuft alle geöffneten Arbeitsmappen, wobei sie prüft, ob die aktuelle Mappe bereits
eine Pfadangabe besitzt. Wenn das der Fall ist, wird die Datei gespeichert. Sollte keine Pfadangabe
vorhanden sein, bedeutet das, dass es sich um eine neue, bislang noch nicht gespeicherte Arbeitsmappe
handelt. Unter dieser Voraussetzung zeigt die Prozedur das eingebaute Dialogfeld Speichern unter an. So
haben Sie Gelegenheit, die Datei unter einem Namen Ihrer Wahl zu speichern. Falls Sie im Dialogfeld auf
Abbrechen klicken, wird die Datei natürlich nicht gespeichert! Sobald alle Dateien abgearbeitet sind, weist
Sie ein Meldungsfenster auf das Ende des Speichervorgangs hin.
Aus Excel rufen Sie die Prozedur über das Dialogfeld Makro auf, das Sie am schnellsten mit der
Tastenkombination Alt+F8 öffnen. Das Makro "AllesSpeichern" steht so lange zur Verfügung, wie die
Datei mit dem Makrocode geöffnet ist.
Alternativen zum Standard-Tabellenschutz von Excel
Versionen: Excel 97, 2000 und 2002/XP
Normalerweise müssen Sie, um Zellen in einer Tabelle zu schützen, die komplette Tabelle über den
Befehl Schutz-Blatt schützen aus dem Menü Extras schützen. Dabei kann ein Passwort vergeben werden,
das Sie sich gut merken müssen. Wie schnell gerät ein Passwort beispielsweise nach einem längeren
Urlaub in Vergessenheit. Meine heutige Kolumne beschäftigt sich mit dem Thema, welche Alternativen
Ihnen zur Verfügung stehen, um einzelne Zellen oder ganze Bereiche zu schützen, ohne auf den
Passwortschutz der Tabelle zurückgreifen zu müssen.
Variante 1: Anlage einer ScrollArea
In der ersten Lösung wird in einer Tabelle eine so genannte ScrollArea definiert. Sie können also
bestimmte Teile einer Tabelle festlegen, in denen sich der Anwender aufhalten darf. Dieser Bereich muss
zusammenhängend sein, so dass Sie nicht mehrere Bereiche schützen können. Im folgenden Beispiel
wird der Zellenbereich außerhalb des Bereiches "A1:D25" in der "Tabelle1" geschützt. Um die ScrollArea
Home
Home
einzustellen, gehen Sie folgendermaßen vor:
1. Klicken Sie das Register von "Tabelle1" mit der rechten Maustaste an und rufen Sie das
Kontextmenü Code anzeigen auf. Damit gelangen Sie direkt in die Entwicklungsumgebung von
Excel.
2. Im Project-Explorer führen Sie einen Doppelklick auf den Eintrag "DieseArbeitsmappe" durch.
3. Im Code-Fenster markieren Sie im ersten Dropdown den Eintrag "Workbook". Damit wird
automatisch das Ereignis "Workbook_Open" eingestellt, das immer dann ausgeführt wird, wenn
Sie die Arbeitsmappe öffnen.
4. Ergänzen Sie das Ereignis wie folgt:
Private Sub Workbook_Open()
Worksheets(1).ScrollArea = "A1:D25"
End Sub
Alle Zellen außerhalb dieses Bereiches können nun nicht mehr markiert und damit auch nicht mehr editiert
werden können. Um die ScrollArea wieder aufzuheben, bzw. zu erweitern muss das Ereignis
"Workbook_Open" im Codefenster gelöscht bzw. angepasst werden.
Variante 2: Zellschutz über Markierungsschutz einstellen
Die zweite Variante erlaubt gleich mehrere Zellen bzw. auch Bereiche zu schützen, ohne eine ScrollArea
einzurichten. In der folgenden Aufgabe wird auf der "Tabelle2" in der Spalte C keine Eingabe zugelassen.
Dabei wird von Anfang an verhindert, dass diese Spalte für eine Eingabe markiert wird. Um diesen Schutz
einzustellen, verfahren Sie wie folgt:
1. Klicken Sie das Register von "Tabelle2" mit der rechten Maustaste an und rufen Sie das
Kontextmenü Code anzeigen auf. Damit gelangen Sie direkt in die Entwicklungsumgebung von
Excel.
2. Im Code-Fenster wählen Sie aus dem ersten Dropdown den Eintrag "Worksheet" aus. Damit wird
automatisch das Ereignis "Worksheet_SelectionChange" eingestellt, das immer dann ausgeführt
wird, wenn Sie die eine beliebige Zelle auf dieser Tabelle markieren.
3. Ergänzen Sie dieses Ereignis wie folgt:
Private Sub Worksheet_SelectionChange(ByVal Target _
As Range)
Application.EnableEvents = False
If Target.Column = 3 Then
If Range("D1").Value <> "OK" Then
Range("A1").Activate
End If
End If
Application.EnableEvents = True
End Sub
Sobald Sie nun eine Zelle auf "Tabelle2" markieren, wird die Ereignissteuerung über die Anweisung
Application.EnableEvents=False ausgeschaltet. Danach erfolgt die Prüfung, ob gerade eine beliebige
Zelle in Spalte C markiert wurde. Wenn ja, dann wird der Mauszeiger direkt in Zelle A1 gesetzt und
dadurch eine Eingabe in Spalte C verhindert. Danach wird die Ereignissteuerung wieder eingeschaltet.
Um eine Eingabe in Spalte C trotzdem zuzulassen, können Sie eine bestimmte Zelle bestimmen, die Sie
Home
Home
als Schalter verwenden. Wenn in dieser Zelle der Text "OK" steht, dürfen auch in Spalte C Eingaben
vorgenommen werden. Wird dieser Eintrag wieder gelöscht, ist der Schutz wieder eingestellt.
Variante 3: Eingaben sofort wieder entfernen
In der letzten Variante werden Eingaben in einem bestimmten Bereich sofort wieder automatisch entfernt.
In der folgenden Beschreibung werden in "Tabelle3" die Zeilen 6-8 auf diese Weise geschützt:
1. Klicken Sie auf der "Tabelle3" den Tabellenreiter mit der rechten Maustaste an und wählen Sie
Code anzeigen an.
2. Im Code-Fenster wählen Sie aus dem ersten Dropdown den Eintrag "Worksheet" aus.
3. Im zweiten Dropdown markieren Sie den Eintrag "Change" ein. Damit wird das Ereignis
"Worksheet_Change" eingestellt, das immer dann automatisch ausgeführt wird, wenn Sie eine
Änderung in "Tabelle3" vornehmen. Das Ereignis wird allerdings nicht bei
Formatierungsänderungen ausgelöst! Ergänzen Sie dieses Ereignis wie folgt:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 5 And Target.Row < 9 Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Else
End If
End Sub
Bei einer Eingabe in Tabelle3 wird geprüft, ob die Eingabe im zu schützenden Bereich liegt. Wenn ja,
dann schalten Sie die Ereignissteuerung von Excel temporär aus, widerrufen die Eingabe mit der
Anweisung "Application.Undo" und schalten danach die Ereignissteuerung wieder ein.
Anzahl unterschiedlicher Einträge in einem Tabellenbereich ermitteln
Versionen: Excel 97, 2000 und 2002
FRAGE: Gibt es eine Möglichkeit herauszufinden, wie viele unterschiedliche Einträge ein Tabellenbereich
enthält? Ich organisiere gerade ein Radrennen und möchte anhand der Starterliste ermitteln, aus wie
vielen verschiedenen Ländern die Fahrer stammen.
S. Hartmann
ANTWORT: Sie können die Liste mit Hilfe einer Arrayformel analysieren. Wenn die Daten, die Sie
auswerten wollen, zum Beispiel im Bereich C3:C100 stehen, geben Sie in der Zelle, in der Sie die Anzahl
unterschiedlicher Einträge ausgeben lassen wollen, folgende Formel ein:
=SUMME(1/ZÄHLENWENN(C3:C100;C3:C100))
Schließen Sie die Eingabe aber nicht einfach mit Return ab, sondern drücken Sie
Strg+Umschalt+Return. Das ist die Tastenkombination zur Eingabe einer Arrayformel. Excel trägt den
Ausdruck daraufhin mit geschweiften Klammern ein, sodass Sie in der Bearbeitungszeile folgendes
sehen:
{=SUMME(1/ZÄHLENWENN(C3:C100;C3:C100))}
Home
Home
Zur Funktionsweise: die ZÄHLENWENN-Funktion vergleicht den zu analysierenden Bereich mit sich
selbst, sodass Sie ein Array erhalten, in dem die Häufigkeiten jedes einzelnen Eintrags stehen. Wenn ein
Eintrag zum Beispiel fünf Mal auftaucht, steht an jeder Position dieses Eintrags eine "5". Ein Wert, der nur
einmal vorkommt, erhält das ZÄHLENWENN-Ergebnis "1".
Indem Sie 1 durch die einzelnen Häufigkeiten teilen, weisen Sie den Arraywerten gewissermaßen eine
Wertigkeit zu. Bei einem ZÄHLENWENN-Ergebnis von "5" ist beispielsweise jeder einzelne nur ein Fünftel
wert und alle zusammen ergeben "1". Die Summe aller Wertigkeiten entspricht somit der Anzahl der
unterschiedlichen Listeneinträge.
Die Formel hat jedoch einen Haken: sie funktioniert nur, wenn der zu analysierende Bereich keine leeren
Zellen enthält. Dann liefert ZÄHLENWENN den Wert "0", sodass es im Ergebnisarray zu einer Division
durch Null (Fehler #DIV/0!) kommt, was auch als Gesamtergebnis der oben genannten Arrayformel
ausgegeben wird.
Sie können den Fehler aber mit einer Erweiterung der ersten Formel abfangen. Wenn Sie wieder den
Bereich C3:C100 untersuchen wollen, geben Sie folgenden Ausdruck als Arrayformel
(Strg+Umschalt+Return) ein:
=SUMME(1/WENN(ZÄHLENWENN(C3:C100;C3:C100)=0;1;
ZÄHLENWENN(C3:C100;C3:C100)))-ANZAHLLEEREZELLEN(C3:C100)
Nutzen Sie diese komplexere Variante, wenn Sie nicht ausschließen können, dass der zu analysierende
Tabellenbereich Leerzellen enthält.
Mit der Formel schließen Sie eine Division durch Null aus. Im Ergebnisarray erscheint aber an jeder
Leerzellenposition ein Wert von "1". Da diese Zellen aber gar nicht gezählt werden sollen, ziehen Sie am
Ende die Anzahl der leeren Zellen des Bereichs wieder ab.
Anzeige von Nullwerten unterdrücken
Versionen: Excel 97, 2000 und 2002
FRAGE: In meinem Kalkulationsmodell möchte ich die Anzeige von Nullen als Formelergebnis
unterdrücken. Bisher erweitere ich die Formeln dazu immer um eine entsprechende WENNAbfrage, aber geht es nicht einfacher?
C. Schürer
ANTWORT: Für dieses Problem gibt es gleich mehrere Lösungswege:
·
·
Home
Am einfachsten ist es, das Menü Extras-Optionen anzuwählen, auf die Registerkarte
"Ansicht" zu wechseln und das Kontrollkästchen Nullwerte auszuschalten. Damit sind
dann allerdings alle Nullen aus der kompletten Tabelle verschwunden.
Um das Ausblenden von Nullwerten nur auf bestimmte Zellen zu beschränken, können
Sie eine bedingte Formatierung einsetzen. Dazu markieren Sie die gewünschten Zellen
und wählen das Menü Format-Bedingte Formatierung an. Legen Sie dann die Bedingung
Home
·
"Zellwert ist gleich 0" fest und setzen Sie die Schriftfarbe im Format-Dialog auf "Weiß"
(oder die von Ihnen verwendete Farbe für den Zellhintergrund).
Eine weitere Alternative wäre die Anpassung des Zahlenformats. Dazu muß man wissen,
daß sich jedes Zahlenformat in Excel in vier Bereiche teilt:
<Positive Werte>;<Negative Werte>;<Nullwerte>;<Text>
Um Nullwerte auszublenden, müssen Sie lediglich dafür sorgen, daß der Abschnitt für
Nullwerte leer ist. Dazu löschen Sie zum Beispiel die komplette Definition hinter dem
zweiten Semikolon:
_-* #.##0 DM_-;-* #.##0 DM_-;;_-@_Sind in dem Zahlenformat nur Formate für positive und negative Werte vorhanden, reicht
es, ein zweites Semikolon ohne weitere Zeichen an das Ende der Definition zu hängen:
#.##0 DM;-#.##0 DM;
Arbeitsmappen-Register alphabetisch sortieren
Versionen: Excel 97, 2000 und 2002
FRAGE: Auch wenn Excel verschiedene Möglichkeiten bietet, sich in umfangreichen Arbeitsmappen
zurecht zu finden, verliert man dennoch mit steigender Anzahl von Tabellenblättern schnell die Übersicht.
In vielen Fällen würde sich eine alphabetische Sortierung der Blätter als Orientierungshilfe anbieten, aber
wie kann man das automatisieren.
ANTWORT: Die folgende kleine VBA-Prozedur hilft weiter:
Sub RegisterSortieren()
If MsgBox("Möchten Sie die Blätter der aktuellen " & _
"Arbeitsmappe alphabetisch sortieren?", vbQuestion + _
vbOKOnly, "SmartTools Excel Weekly") = vbNo _
Then GoTo Ende
' Gesamtzahl der Tabellenblätter ermitteln
AnzahlRegister = Sheets.Count
For I = 1 To AnzahlRegister - 1
X=I
For Zähler = I + 1 To AnzahlRegister
If UCase$(Sheets(Zähler).Name) < _
UCase$(Sheets(X).Name) Then
X = Zähler
End If
Next Zähler
If X > I Then Sheets(X).Move Sheets(I)
Home
Home
Next I
Ende:
End Sub
Geben Sie die Prozedur am besten in Ihre persönliche Makro-Arbeitsmappe PERSONL.XLS ein, die über
das Menü Fenster-Einblenden sichtbar gemacht werden kann.
So erreichen Sie, daß Ihnen diese nützliche Funktion jederzeit zur Verfügung steht und Sie nicht erst ein
Add-In oder eine bestimmte Arbeitsmappe öffnen müssen. Nach der Eingabe der Prozedur, empfiehlt sich
das Erstellen eines Menüpunkts oder eines Symbol, über das Sie schnellen Zugriff auf die Prozedur
"RegisterSortieren" haben. Anschließend blenden Sie die persönliche Makro-Arbeitsmappe wieder aus
und können die neue Funktion einem ersten Test unterziehen: Öffnen Sie eine beliebige Arbeitsmappe mit
mehreren Blättern und starten Sie die Prozedur. Nach wenigen Augenblicken steht Ihnen dann eine
Arbeitsmappe mit einem alphabetisch sortierten Register zur Verfügung.
Ausfüllen per Doppelklick
Versionen: Excel 97, 2000 und 2002/XP
Mit dem Ausfüllkästchen können Sie bekanntlich Formeln und Datenreihen schnell und komfortabel in Ihre
Tabellen einfügen. Wenig bekannt ist allerdings der folgende Trick: Bei einem Doppelklick auf das
Ausfüllkästchen, analysiert Excel die aktuelle Markierung und versucht, eine passende Datenreihe nach
unten auszufüllen. Dabei wird eine nebenstehende Spalte als Orientierungspunkt für das Ende der Reihe
verwendet. Probieren Sie es einfach an einem kleinen Beispiel:
·
Geben Sie in die Zellen B2 bis B10 beliebige Werte ein. Wir nehmen einmal an, dass es sich
dabei um verschiedene Nettopreise handelt, zu denen Sie den Bruttopreis ermitteln möchten.
· Klicken Sie in die Celle C2 und geben Sie ein:
= B2*1,16
·
Bei markierter Zelle C2 führen Sie nun einen Doppelklick auf das Ausfüllkästchen aus. Excel füllt
dann automatisch den Bereich C3 bis C10 mit der gewünschten Formel aus.
Nach diesem Prinzip können Sie jede beliebige Datenreihe per Doppelklick einfügen, die Sie auch
normalerweise mit dem Ausfüllkästchen erstellen könnten. In unserem Beispiel würde es auch
beispielsweise reichen, in Zelle A2 das Wort "Januar" anzugeben, um dann die Zellen A3 bis A10 per
Doppelklick auf das Ausfüllkästchen mit den nachfolgenden Monatsnamen zu füllen.
Automatische Zahlenumwandlung verhindern
Versionen: Excel 97, 2000 und 2002
FRAGE: Als Angestellter einer Baufirma werte ich Leistungsbeschreibungen mit Excel aus und erstelle
Übersichten und auch das Aufmass mit Excel. Dabei kommt es ständig vor, dass Excel Ordnungszahlen
wie z.B. 01.02.03 in ein Datum umwandelt. Wie kann hier Abhilfe geschaffen werden?
Peter Langheim
Home
Home
ANTWORT: Diese Frage wird in den unterschiedlichsten Variationen immer wieder an uns gestellt.
Grundsätzlich versucht Excel nach jeder Eingabe, den neuen Zellinhalt zu interpretieren und dann
entsprechend auch zu formatieren. Das ist in den meisten Fällen wünschenswert, führt aber in einigen
Situationen zu unerwünschten Ergebnissen. Wenden Sie daher einen einfachen Trick an, wenn Sie etwas
eingeben möchten, das Excel irrtümlicherweise als Datum interpretieren würde: Stellen Sie der Eingabe
ein einfaches Hochkomma (') voran. Das Hochkomma erscheint nicht in der Tabelle, aber es teilt Excel
mit, dass die nachfolgende Zeichenkette nicht weiter interpretiert, sondern einfach als Text in die Zelle
eingetragen werden soll. Also zum Beispiel:
'01.02.03
Automatischer Tabellenschutz per Mausklick
Versionen: Excel 97, 2000 und 2002/XP
Wenn Sie eine Tabelle so einrichten möchten, dass andere Anwender möglicht komfortabel damit
arbeiten können, nutzen Sie den Tabellenschutz von Excel. Dabei schützen Sie gezielt die Zellen mit
Formeln, so dass das versehentliche Ändern oder Löschen verhindert wird. Für Änderungen freigegeben
sind ausschließlich Zellen mit Zahlen.
Leider ist das Schutzkonzept von Excel etwas umständlich, denn nach dem Anwählen des Menüs ExtrasSchutz-Blatt schützen werden alle Zellen geschützt, für die der Status "Gesperrt" aktiviert wurde
(Dialogfeld Format-Zellen, Register "Schutz"). Standardmäßig ist das aber bei allen Zellen der Fall, so
dass Sie zunächst einmal gezielt die Zellen auswählen müssen, die nicht geschützt werden sollen. Dann
wählen Sie das Menü Format-Zellen an, wechseln auf das Register "Schutz" und schalten das
Kontrollkästchen Gesperrt aus.
Damit Sie sich diesen Aufwand in Zukunft ersparen können, möchten wir Ihnen in diesem Tipp der Woche
ein interessantes Makro vorstellen:
Sub procFormelzellenSchuetzen()
Dim rngAktiveZelle As Range
If MsgBox("Möchten Sie alle Formelzellen in diesem " & _
"Blatt schützen? Der Schutz für Zellen mit Zahlen " & _
"wird aufgehoben.", vbQuestion + vbYesNo, _
"Kno hilft: Formeln schützen") = vbNo Then Exit Sub
On Error GoTo Fehler
ActiveSheet.Unprotect
For Each rngAktiveZelle In ActiveSheet.UsedRange
If Not rngAktiveZelle.HasFormula And _
Not TypeName(rngAktiveZelle.Value) = "Date" And _
Home
Home
Application.IsNumber(rngAktiveZelle) Then
rngAktiveZelle.Locked = False
rngAktiveZelle.Font.ColorIndex = 5
Else
rngAktiveZelle.Locked = True
rngAktiveZelle.Font.ColorIndex = _
xlColorIndexAutomatic
End If
Next
ActiveSheet.Protect
Exit Sub
Fehler:
MsgBox "Der folgende Fehler ist aufgetreten: " & _
Err.Number & " - " & Err.Description, vbCritical + _
vbOKOnly, "Kno hilft: Formelzellen schützen"
End Sub
Nachdem Sie das Makro eingegeben haben, können Sie ein neues Kalkulationsmodell jederzeit per
Mausklick so vorbereiten, dass es an andere Anwender weitergegeben werden kann: Der ausgefüllte
Bereich der Tabelle wird Zelle für Zelle geprüft. Bei Zellen mit Formeln oder Datumsangaben wird der
Schutz aktiviert und bei Zellen mit Zahlen ausgeschaltet. Zusätzlich werden die ungeschützten Zellen in
blau formatiert, so dass auf den ersten Blick zu sehen ist, an welchen Stellen Daten verändert werden
können.
Bedingte Formatierung mit Bezügen auf andere Tabellen
Versionen: Excel 97, 2000 und 2002/XP
FRAGE: Ich versuche gerade, folgende Aufgabe zu lösen: Monatsumsätze werden in separaten Tabellen
einer Arbeitsmappe erfasst. Die jeweiligen Auswertungen befinden sich immer am Anfang einer Tabelle
und auch immer in den gleichen Zellen. Der Gesamtumsatz steht beispielsweise in jedem Blatt in Zelle
C5, die Lohnkosten in C9 usw. Jetzt möchte ich die aktuellen Tabellendaten mit dem jeweiligen Vormonat
vergleichen, sodass man möglichst sofort erkennt, ob die Zahlen besser oder schlechter sind. Ideal wäre
der Einsatz der "bedingten Formatierung". Doch leider erlaubt diese Funktion keine Bezüge auf andere
Tabellen. Wie kann ich das Problem lösen?
V. Moosleitner
Home
Home
ANTWORT: Ein kleiner Trick überlistet die Einschränkung der "bedingten Formatierung": Indem Sie
Namen definieren, denen Sie geeignete Formeln zuweisen, stehen Ihnen die Daten aus anderen Tabellen
auch bei der bedingten Formatierung zur Verfügung. Das Ganze gestaltet sich wie folgt:
1. Öffnen Sie die Arbeitsmappe, in der Sie Vergleiche zwischen verschiedenen Tabellen anstellen
wollen.
2. Rufen Sie Einfügen-Name(n)-Festlegen respektive Definieren auf (die genauen Befehlsnamen
variieren in den einzelnen Excel-Versionen).
3. Geben Sie im Feld Namen in der Arbeitsmappe die Bezeichnung "AktuellerZellwert" ein.
4. In das Feld Bezieht sich auf tragen Sie keine Zelladresse sondern folgende Formel ein:
=INDIREKT("ZS";FALSCH)
Diese Formel liefert den Wert der jeweils aktuellen Zelle, was bei Eingabe in einer Tabelle natürlich einen
Zirkelbezug verursachen würde. - Hier läuft es aber ohne Fehler ab.
·
·
Schließen Sie die Namensdefinition mit einem Klick auf Ok ab.
Wiederholen Sie die Schritte 2 und 3, wobei Sie als Namen dieses Mal "WertInVorigemBlatt"
eingeben.
· In das Feld Bezieht sich auf tragen Sie wieder eine Formel ein, und zwar mit folgendem Aufbau:
=INDIREKT(INDEX(ARBEITSMAPPE.ZUORDNEN(1);
DATEI.ZUORDNEN(87)-1)&"!"&ADRESSE(ZEILE();SPALTE()))
Die Formel nutzt zwei Excel4-Makrofunktionen: ARBEITSMAPPE.ZUORDNEN(1) gibt eine Matrix mit den
Namen aller Tabellenblätter zurück und DATEI.ZUORDNEN(87) liefert den Index (die Position) des
aktuellen Blatts. Wenn Sie von diesem Wert die Zahl 1 abziehen, erhalten Sie die Position des vorherigen
Blatts. Den Namen dieses Blatts ermitteln Sie per INDEX-Funktion, die in der Matrix aus der ersten
Excel4-Makrofunktion nach dem passenden Eintrag sucht.
Den so gefundenen Blattnamen verknüpfen Sie mit der Adresse der aktuellen Zelle (ZEILE und SPALTE
ohne Argumente), womit Sie die entsprechende Adresse aus dem vorherigen Tabellenblatt erhalten. Per
INDIREKT-Funktion lassen Sie sich den Inhalt ausgeben.
·
·
Bestätigen Sie die Eingabe des zweiten Bereichsnamen wieder mit Ok.
Damit können Sie zur bedingten Formatierung übergehen. Markieren Sie den Bereich, auf den sie
angewendet werden soll und rufen Sie Format-Bedingte Formatierung auf.
· Im Kriterienbereich wählen Sie im ersten Dropdown-Feld die Option "Formel ist" aus.
· Rechts daneben steht Ihnen daraufhin nur noch ein Eingabefeld zur Verfügung, in das Sie
folgende Vergleichsformel eintragen:
=AktuellerZellwert>WertInVorigemBlatt
Welchen Vergleich die Funktion anstellt, erkennen Sie an den verwendeten Namen. Wenn Sie wollen
können Sie natürlich auch den Vergleichsoperator "<" einsetzen, um zu prüfen, ob der aktuelle Wert
kleiner ist, als der aus dem vorherigen Tabellenblatt. - Oder Sie definieren zwei Kriterien, denen Sie
unterschiedliche Formatierungen zuweisen...
Home
Home
·
Legen Sie die gewünschten Formate für das Kriterium fest und schließen Sie die Eingabe der
bedingten Formatierung mit Ok ab.
Wenn Ihre Tabelle schon Werte enthält, sehen Sie sofort das Ergebnis der aufgeführten Schritte.
So praktisch das Verfahren ist, es hat einen kleinen Schönheitsfehler, der normalerweise aber leicht zu
beheben ist: Der Dateiname der Arbeitsmappe darf keine Leerzeichen enthalten; ansonsten liefern die
Excel4-Makrofunktionen Fehlerwerte, sodass die bedingte Formatierung nicht zum Einsatz kommt. Keine
Probleme bereiten dagegen lange Dateinamen.
Bedingte Formatierung mit mehr als 3 Bedingungen
Versionen: Excel 97, 2000 und 2002
Bei der bedingten Formatierung haben Sie die Möglichkeit, in Abhängigkeit von Eingaben die Zellen
automatisch formatieren zu lassen. So können Sie z.B. definieren, dass eine Zelle sich automatisch Rot
einfärbt, wenn ein bestimmter Wert eingegeben wird.
Mit Hilfe der bedingten Formatierung lassen sich allerdings standardmäßig nur Formatierungen für drei
unterschiedliche Bedingungen einstellen. Mehr ist leider über diese Funktion nicht möglich. Mit einem
kleinen Ereignismakro können Sie sich aber behelfen. Nehmen wir einmal an, dass Sie nach den
folgenden Regeln 6 verschiedene Zellenformatierungen für die Zahlen 1 bis 6 vornehmen möchten:
·
·
1 - Schwarz
2 - Weiß
·
·
·
·
3 - Rot
4 - Grün
5 - Blau
6 - Gelb
Diese Vorgaben setzen Sie folgendermaßen um:
1. Drücken Sie die Tastenkombination Alt+F11, um in die Entwicklungsumgebung von Excel zu
gelangen.
2. Im Projekt-Explorer führen Sie einen Doppelklick auf die Tabelle durch, in der Sie die erwähnte
automatische Formatierung vornehmen möchten.
3. Geben Sie das folgende Makro ein:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Select Case Target.Value
Case 1
Target.Interior.ColorIndex = 1
Case 2
Target.Interior.ColorIndex = 2
Case 3
Target.Interior.ColorIndex = 3
Case 4
Target.Interior.ColorIndex = 4
Case 5
Home
Home
Target.Interior.ColorIndex = 5
Case 6
Target.Interior.ColorIndex = 6
Case Else
Target.Interior.ColorIndex = xlColorIndexNone
End Select
End Sub
Wenn Sie danach in Ihrer Tabelle die Zahlen 1 bis 6 eingeben, werden die zugeordneten Farben
daraufhin sofort zugewiesen. Geben Sie eine andere Zahl oder einen Text ein, unterbleibt die
Formatierung des Zellenhintergrundes, da in dem Makro der Eigenschaft ColorIndex die Konstante
xlColorIndexNone zugewiesen wird.
Beliebige Sortierfolgen mit benutzerdefinierten Listen
Versionen: Excel 97, 2000 und 2002
FRAGE: Ich bin in der Textilbranche tätig und verwalte den Warenverkauf in einer ExcelTabelle. Zu statistischen Zwecken möchte ich die Verkäufe nach den Konfektionsgrößen
"Small", "Medium", "Large" usw. sortieren. Das lässt sich weder in einer alphabetischen noch in
einer numerischen Reihenfolge umsetzen. Muss ich die Tabelle nach einer normalen
(alphabetischen) Sortierung immer erst mit manuellen Kopiervorgängen in die gewünschte
Reihenfolge bringen oder gibt es auch eine einfachere Lösung?
F. Schomakers
ANTWORT: In Ihrem Fall sind "benutzerdefinierte Listen" genau das Richtige. Schon von Haus
aus bringt Excel einige solcher Listen mit: zum Beispiel "Januar, Februar, März" usw. oder
"Montag, Dienstag" usw. Sie können die Auswahl beliebig erweitern, unter anderem auch durch
Listen mit Konfektionsgrößen.
"Benutzerdefinierte Listen" haben zwei Vorteile: Zum einen können sie zur individuellen
Sortierung von Tabellendaten benutzt werden; und zum anderen lassen sie sich zusammen mit
dem "Ausfüllkästchen" (dem kleinen Rechteck in der unteren rechten Ecke einer Zellmarkierung)
einsetzen, um Tabellenbereiche automatisch mit einer Wertefolge zu füllen. Gehen Sie wie folgt
vor, um beispielsweise eine benutzerdefinierte Liste mit Konfektionsgrößen anzulegen:
1. Öffnen Sie ein leeres Tabellenblatt und geben Sie die gewünschte Wertereihe in
untereinander stehenden Zellen ein.
2. Bringen Sie die Werte manuell in die passende Reihenfolge. In Ihrem Fall bedeutet das
etwa, dass Sie in die Zellen A1 bis A5 diese Daten eingeben: S, M, L, XXL, XXXL
3. Markieren Sie die gesamte Wertereihe - im Beispiel also die Zellen A1:A5.
4. Wählen Sie das Menü Extras-Optionen an und wechseln Sie auf die Registerkarte
AutoAusfüllen (Excel 97/2000) bzw. Benutzerdefinierte Listen (Excel 2002).
5. Der Bezug auf die markierten Zellen erscheint automatisch im Feld Liste aus Zellen
importieren. Überprüfen Sie die Eingabe: im Beispielfall muss "$A$1:$A$5" in dem Feld
stehen. Wenn alles korrekt ist, klicken Sie auf die Schaltfläche Importieren.
Home
Home
6. Excel nimmt die neue Liste daraufhin in das linke Listenfeld des Dialogfelds auf und zeigt die
einzelnen Elemente in der rechten Liste. Sie brauchen das Ergebnis nur noch mit Ok zu
bestätigen.
Ab sofort können Sie Tabellendaten auf Basis der eben erstellten Liste sortieren, so dass Sie
Ihre Verkaufszahlen zum Beispiel in Abhängigkeit von der Konfektionsgröße analysieren
können. Das erreichen Sie mit folgenden Schritten:
1. Aktivieren Sie das Tabellenblatt mit dem Bereich, den Sie sortieren wollen.
2. Markieren Sie die zu sortierenden Zellen. Excel erkennt automatisch, ob über den Spalten
eine Zeile mit Überschriften steht oder nicht.
3. Wählen Sie das Menü Daten-Sortieren an und bestimmen Sie die Spalte mit den
Konfektionsgrößen (oder mit den Angaben aus einer anderen benutzerdefinierten Liste) als
erstes Sortierkriterium.
4. Klicken Sie auf die Schaltfläche Optionen. Per Dropdown-Feld haben Sie jetzt die
Möglichkeit, die Benutzerdefinierte Sortierreihenfolge auf die oben angelegte
benutzerdefinierte Liste einzustellen. Im Beispielfall müssten Sie also den Eintrag "S, M, L,
XL, XXL" auswählen. Anschließend klicken Sie auf Ok.
5. Wenn Sie auch den Sortierdialog mit Ok bestätigen, erhalten Sie genau die Sortierung, die
Sie sich vorgestellt haben.
Beliebiges Excel-Tabellenblatt für Seriendruck in Word
Versionen: Excel 97 und 2000
FRAGE: Ich möchte aus einer Excel-Tabelle Adressinformationen an einen Word-Serienbrief
übergeben. Wenn ich in Word den Seriendruck-Manager aufrufe und die Excel-Datei als
Datenquelle einbinde, kann ich aber nur auf das erste Tabellenblatt der Arbeitsmappe zugreifen.
Es gelingt mir nicht, die Daten aus dem zweiten, dritten usw. Tabellenblatt in die
Seriendruckfelder einfließen zu lassen. Was muss ich tun, damit die Datenübergabe in dieser
Form funktioniert?
B. Hinnen
ANTWORT: Zwei Bedingungen müssen erfüllt sein, damit Sie in Word-Seriendokumenten mit
anderen als den ersten Tabellenblättern einer Excel-Arbeitsmappe arbeiten können;
·
Sie müssen in der Excel-Datei allen Bereichen mit Adressinformationen Namen
zuweisen
· Sie müssen die Excel-Daten per ODBC an Word übergeben
Als erstes müssen Sie deshalb die Excel-Datei mit den Informationen für den Serienbrief öffnen.
Darin markieren Sie den ersten Bereich mit Adressinformationen inklusive der zugehörigen
Spaltenüberschriften. Wählen Sie dann Einfügen-Namen-Festlegen (Excel 97) bzw. EinfügenName-Definieren (Excel 2000) an, um dem Bereich per Dialogfeld einen aussagekräftigen
Namen zuzuweisen. Anschließend wiederholen Sie die Namensvergabe in den anderen
Tabellenblättern mit Adressinformationen. Vergessen Sie am Ende nicht, die Änderungen zu
speichern.
Den Word-Serienbrief richten Sie nun wie folgt ein:
Home
Home
1. Starten Sie Word mit einem neuen, leeren Dokument.
2. Rufen Sie das Menü Extras-Seriendruck auf, um den Seriendruck-Manager zu öffnen.
3. Klicken Sie auf die Schaltfläche Erstellen und wählen Sie die gewünschte Option an –
beispielsweise Serienbriefe. Da Sie mit einem leeren Dokument begonnen haben,
können Sie auf Aktives Fenster anklicken.
4. Bestimmen Sie die Datenquelle, indem Sie auf Daten importieren und anschließend auf
Datenquelle öffnen klicken.
5. Geben Sie als Dateityp "MS Excel-Arbeitsblätter" an und suchen Sie die gewünschte
Datei mit den Adressdaten auf Ihrer Festplatte oder im Netzwerk.
6. Bestätigen Sie die Dateiauswahl aber nicht sofort mit Öffnen, sondern aktivieren Sie
vorher das Kontrollfeld Importweise auswählen (97) bzw. Import wählen (2000).
7. Wenn Sie jetzt die Datenquellendatei öffnen, erscheint ein Dialogfeld mit verschiedenen
Importoptionen. Markieren Sie den Eintrag "Excel-Dateien über ODBC" und bestätigen
Sie die Auswahl mit Ok.
8. Ein weiteres Dialogfeld präsentiert Ihnen nun die in der Arbeitsmappe definierten Namen.
Es werden alle Namen aufgeführt, egal in welchem Tabellenblatt sie sich befinden.
Wählen Sie den gewünschten Bereichsnamen aus und fahren Sie mit Ok fort.
9. Wie gewohnt können Sie nun nach einem Klick auf Hauptdokument bearbeiten die
Seriendruckfelder sowie den Text des Serienbriefs einfügen. An den
Platzhalterpositionen werden genau die Adressdaten erscheinen, die Sie gerade
benötigen.
Benutzernamen auslesen (API)
Versionen: Excel 97, 2000 und 2002
FRAGE: Gibt es in Excel eine Möglichkeit, den Namen des derzeit angemeldeten Benutzers auszulesen,
um ihn beim Drucken eines Tabellenblatts in die Kopfzeile einzutragen?
S. Herzig
ANTWORT: Sie lösen die Aufgabe mit einem VBA-Makro und einer Windows-API-Funktion. Dieser Weg
ist zuverlässiger als der Einsatz von "Application.UserName", womit Sie nur den Namen ermitteln, der in
den Excel-Optionen auf der Registerkarte Allgemein eingetragen ist. Dieser Name hat aber nicht
unbedingt etwas mit dem aktuell angemeldeten Benutzer zu tun.
Um eine Excel-Arbeitsmappe entsprechend vorzubereiten, gehen Sie wie folgt vor:
· Wechseln Sie aus der Mappe, in der Sie die Kopfzeile mit Benutzer- und Computernamen
einrichten wollen, per Alt+F11 in den Visual Basic-Editor.
· Legen Sie mit dem Befehl EINFÜGEN-MODUL ein neues Modul an.
· Geben Sie in das zugehörige Codefenster folgende VBA-Anweisungen ein:
Private Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, _
nSize As Long) As Long
Public Function UserName() As String
Dim Buffer As String * 100
Dim BuffLen As Long
BuffLen = 100
Home
Home
GetUserName Buffer, BuffLen
UserName = Left(Buffer, BuffLen - 1)
End Function
·
Nun müssen Sie die Namen beim Drucken nur noch in der Kopfzeile ausgeben lassen. Dazu
lassen Sie sich im Projekt-Explorer des Visual Basic-Editors die untergeordneten Zweige des
VBA-Projekts zur aktuellen Datei anzeigen. Doppelklicken Sie danach auf das Objekt
"DieseArbeitsmappe".
· Damit öffnen Sie ein weiteres Codefenster, in dem Sie folgende Prozedur eingeben:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Blatt As Object
For Each Blatt In ThisWorkbook.Sheets
Blatt.PageSetup.LeftHeader = UserName
Next Blatt
End Sub
"Workbook_BeforePrint" gehört zu den Standard-Ereignisprozeduren, die Sie auch über die beiden
Dropdown-Felder am oberen Rand des Codefensters anlegen können. - In diesem Fall sorgt die Prozedur
dafür, dass Excel bei einem Druckvorgang den "UserNamen" in den linken Kopfzeilenbereich einfügt. Die
Informationen erhält die Druckprozedur durch die in Schritt 3 angelegten benutzerdefinierten Funktionen.
Bereich per VBA kopieren
Versionen: Excel 97, 2000 und 2002
FRAGE: Ich habe den Makro-Rekorder von Excel unter anderem eingesetzt, um einen Bereich
automatisch kopieren zu lassen. Für einen einzigen Kopiervorgang werden dabei vier Befehle benötigt.
Geht das nicht kürzer und einfacher?
A. Müller
Ein Makro wählt also zunächst den Quellbereich aus, kopiert ihn, wählt dann den Zielbereich und fügt ihn
ein. Schneller und einfacher ist der folgende Befehl:
Range("A1").Copy Range("F30")
Diese Zeile führt exakt zu demselben Ergebnis wie die von dem Makro-Rekorder aufgezeichneten
Befehle.
Blattregister nach Farbe sortieren
Versionen: Excel 97, 2000 und 2002
FRAGE: Seitdem wir ein Update auf Excel 2002 durchgeführt haben, nutzen wir unter anderem die neue
Funktion, Register einer Arbeitsmappe farbig zu kennzeichnen. Obwohl unterschiedliche Farben eine
überaus nützliche Orientierungshilfe sind, ließe sich die Arbeit noch weiter vereinfachen, wenn Excel die
Blattregister automatisch nach Farbtönen sortieren würde. Gibt es dafür eine Lösung?
Home
Home
M. Kunze
ANTWORT: In der Tat ist es praktisch, Blattregistern Farben zuzuweisen, indem Sie sie mit der rechten
Maustaste anklicken und anschließend den Kontextmenübefehl Registerfarbe anwählen.
Es ist allerdings nicht möglich, diese Befehlsauswahl zu überwachen, um in Abhängigkeit davon eine
farbliche Sortierung vorzunehmen. Anbieten können wir Ihnen aber eine halbautomatische Lösung, bei
der Sie die Sortierung von einem VBA-Makro durchführen lassen. Das Makro müssen Sie dann jedes Mal
per Hand aufrufen. Hier die Schritte zur fertigen Lösung:
·
·
·
·
Öffnen Sie die Arbeitsmappe mit den farbigen Blattregistern.
Drücken Sie Alt + F11, um den Visual Basic-Editor zu starten.
Legen Sie ein neues Codefenster an, indem Sie Einfügen-Modul anwählen.
Geben Sie folgende Sortierprozedur ein:
Sub Farbsortierung()
Dim i As Long, j As Long
For i = 1 To Worksheets.Count - 1
For j = i To Worksheets.Count
If Worksheets(j).Tab.ColorIndex = _
Worksheets(i).Tab.ColorIndex Then
Worksheets(j).Move After:=Worksheets(i)
End If
Next j
Next i
End Sub
·
Verlassen Sie den Visual Basic-Editor über das Menü Datei und den Befehl Schließen und zurück
zu Microsoft Excel.
· Rufen Sie in Excel Extras-Makro-Makros auf.
· Markieren Sie den Makronamen "Farbsortierung" und starten Sie das Makro mit der Schaltfläche
Ausführen.
Daraufhin sortiert Excel die Register nach Farben. Register mit dem gleichen Farbton werden aber nicht
weiter sortiert.
Daten komfortabel übertragen
Versionen: Excel 97, 2000 und 2002
Eine sehr oft an mich gestellt Frage dreht sich um den Inhalt, wie man Daten aus einer Tabelle möglichst
schnell und elegant auf eine andere Tabelle übertragen kann. Somit haben Sie die Möglichkeit eine
Sicherung auf einer anderen Tabelle anzulegen, um beispielsweise vor größeren Änderungen notfalls
noch auf die Kopie zugreifen zu können.
Diese Aufgabe lösen Sie, indem Sie folgendes Makro einsetzen:
Sub WerteÜbertragen()
Home
Home
Dim Blatt1 As Worksheet
Dim Blatt2 As Worksheet
Dim i As Integer
Dim e As Integer
Set Blatt1 = Sheets("Tabelle1")
Set Blatt2 = Sheets("Tabelle2")
Blatt1.Select
For i = 1 To ActiveSheet.UsedRange.Rows.Count
For e = 1 To ActiveSheet.UsedRange.Columns.Count
Blatt2.Cells(i, e) = Blatt1.Cells(i, e)
Next e
Next i
End Sub
Im ersten Schritt definieren Sie die benötigten Variablen. Danach weisen Sie mit der Anweisung Set
jeweils das Quell- sowie das Zieltabellenblatt zu. Diese Vorgehensweise ermöglicht Ihnen später, daß Sie
bei der Datenübertragung nicht von einem Tabellenblatt auf das andere und zurück springen müssen. In
der ersten Schleife ermitteln Sie die Anzahl der gefüllten Zeilen des Quelltabellenblatts. In der zweiten
Schleife ermitteln Sie die Anzahl der gefüllten Spalten des Quelltabellenblattes. Innerhalb der zweiten
Schleife übertragen Sie nun die einzelnen Zellen.
Diesen Vorgang können Sie aber auch automatisieren. So könnten Sie beispielsweise dafür sorgen, daß
vor dem Speichern einer Arbeitsmappe dieses Makro automatisch abläuft. Um diese Aufgabe
umzusetzen, gehen Sie wie folgt vor:
·
·
·
Wechseln Sie mit der Tastenkombination Alt+F11 in die Entwicklungsumgebung von Excel.
Im Projekt-Explorer klicken Sie den Eintrag "DieseArbeitsmappe" doppelt an.
Erfassen Sie danach folgendes Ereignismakro:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI _
As Boolean, Cancel As Boolean)
WerteÜbertragen
End Sub
Das Makro "WerteÜbertragen" wird automatisch immer dann ausgeführt, wenn Sie die Arbeitsmappe
speichern.
Datumsformel oder Wert
Wir nutzen in unserem Rechnungsformular die folgende Formel, um das aktuelle Datum automatisch
vorzugeben:
=HEUTE()
Das funktioniert grundsätzlich, aber wenn man die Datei später noch einmal öffnet, findet sich in dieser
Zelle wiederum das aktuelle Datum und nicht das tatsächliche Rechnungsdatum. Wie kann man dieses
Home
Home
Problem beheben, ohne das Datum manuell eingeben zu müssen?
ANTWORT: Das beschriebene Verhalten von Excel zeigt, daß Sie die Funktion HEUTE nicht zum
automatischen Einfügen eines Rechnungsdatums verwenden können, denn sie liefert grundsätzlich immer
das aktuelle Systemdatum. Sie könnten der Problematik durch ein Makro aus dem Weg gehen, das das
Datum für Sie eingibt, aber ein anderer wenig bekannte Trick ist folgender: Klicken Sie in die Zelle, in der
das aktuelle Datum festgeschrieben werden soll und betätigen Sie die Tastenkombination STRG+.
(Punkt). Excel fügt daraufhin das aktuelle Datum ohne Formel in die aktuelle Zelle ein, Sie müssen nur
noch mit Return bestätigen.
Dezimalzahl als Bruch anzeigen
Versionen: Excel 97, 2000 und 2002/XP
FRAGE: Gibt es in Excel eine Möglichkeit, Zahlen mit Nachkommastellen als Bruch
anzuzeigen? Aus 1,25 sollte beispielsweise 5/4 werden oder aus 2,4 die Bruchzahl 12/5.
K. Merschmann
ANTWORT: Für solche Zwecke bietet Excel sogar ein eingebautes Zahlenformat, das Sie
bequem mit dem Befehl Format-Zellen und den Einstellungen auf der Registerkarte Zahlen
zuweisen können.
Markieren Sie in der Liste der Kategorien den Eintrag "Bruch" und wählen Sie anschließend in
der Typ-Liste die gewünschte Genauigkeit aus – beispielsweise "Zweistellig". Excel stellt einen
Wert wie 1,25 daraufhin als 1 1/4 oder einen Wert wie 1,45 als 1 9/20 dar. Beachten Sie die
Rundungsunterschiede zwischen den Genauigkeiten. Wenn Sie 1,45 als "einstelligen" Bruch
anzeigen lassen, erscheint der Wert 1 4/9 in der Tabelle.
Falls Sie den ganzzahligen Anteil ebenfalls in den Bruch einschließen möchten, damit statt 1 1/4
nur der Bruch 5/4 auftaucht, müssen Sie das Zahlenformat manuell anpassen. Rufen Sie dazu
erneut Format-Zellen mit der Registerkarte Zahlen auf. Markieren Sie in der Kategorienliste jetzt
aber den Eintrag "Benutzerdefiniert".
In der rechten Dialogfeldhälfte geben Sie dann die Formatdefinition "?/?" für einstellige
Genauigkeit oder "??/??" für zweistellige Genauigkeit oder eine andere Rundungspräzision ein.
Auf diese Weise stellt Excel keine ganzen Zahlen sondern nur noch reine Brüche dar.
Wenn Sie vorher schon ein Standardformat für Brüche aktiviert hatten, werden Sie bemerkt
haben, dass der ganzzahlige Anteil ansonsten durch ein #-Symbol repräsentiert wird. Die
Formatdefinition des einstelligen Standard-Bruchformats ist zum Beispiel "# ?/?".
Dezimalzahlen am Komma ausrichten
Versionen: Excel 97, 2000 und 2002
FRAGE: Wie kann ich eine Spalte mit Dezimalzahlen so formatieren, dass die Werte alle am Komma
ausgerichtet sind? Das Problem dabei ist, dass die Anzahl der Dezimalstellen in der Spalte variiert. Dabei
sollen die Werte aber nicht auf eine feste Anzahl von Nachkommastellen festgeschrieben sein. Und es
sollen auch keine Nullen aufgefüllt werden, wenn die eine Zahl beispielsweise nur 2 Stellen hat, während
Home
Home
eine andere 5 signifikante Nachkommastellen aufweist. Dass man diesen Effekt mit den
Symbolleistenschaltflächen Dezimalstelle hinzufügen bzw. Dezimalstelle löschen erzielen kann, ist mir
bekannt. Mein Ziel ist es, Werte wie "1,5", "2,123456" und "3,039" in genau dieser Schreibweise am
Dezimalkomma auszurichten.
M. Hornbach
ANTWORT: Für die gewünschte Ausrichtung müssen Sie ein benutzerdefiniertes Zahlenformat einrichten.
Dazu markieren Sie die Spalte mit den Dezimalzahlen und wählen Format-Zellen an. Auf der
Registerkarte Zahlen markieren Sie die Kategorie "Benutzerdefiniert". Nun geben Sie im Feld unter Typ
folgendes Format ein:
0,0?????????
Nach einem Klick auf Ok ist Ihre Tabellenspalte genau so formatiert, wie Sie es sich vorgestellt haben.
Zur Erläuterung: Der Platzhalter "?" steht für eine beliebige Ziffer. Falls es sich dabei um eine nicht
signifikante Null handelt, unterdrückt Excel die Anzeige, lässt aber entsprechenden Platz für die Stelle. So
schaffen Sie im oben aufgeführten Beispiel hinter dem Komma Platz für 10 Nachkommastellen. Diese
werden aber nur angezeigt, wenn sie tatsächlich benötigt werden. Ansonsten füllt Excel die Stellen mit
Leerzeichen auf, sodass die Dezimalkommata in der gesamten Spalte untereinander stehen.
Der Platzhalter "0" sorgt dafür, dass direkt vor und hinter dem Komma auf jeden Fall eine Ziffer steht,
auch wenn es sich um eine Null handelt. So erscheint etwa der Wert "3" als "3,0" und "0,123456" wird mit
der führenden Null angezeigt.
Natürlich können Sie das Format beliebig an Ihre Bedürfnisse anpassen. Wenn Sie eine höhere
Genauigkeit benötigen, fügen Sie zum Beispiel hinter dem Komma weitere "?" hinzu. Oder definieren Sie
das Format so, dass vor dem Komma im Bedarfsfall ein Tausenderpunkt erscheint:
#.##0,0?????????
Der Platzhalter "#" hat übrigens einige Ähnlichkeit mit dem "?". Falls die Stelle nicht signifikant ist, fügt
Excel aber keine Leerstelle ein.
Diagrammachsen in korrekten Proportionen skalieren
Versionen: Excel 97, 2000 und 2002/XP
FRAGE: Ich benötige Diagramme, deren Achsen genau gleich skaliert sind. Wenn ich meine
Tabellenwerte jedoch mit dem Diagramm-Assistenten grafisch darstellen lasse, erhalte ich immer
verzerrte Abbildungen, weil die Skalierung der x-Achse größer dimensioniert ist als die Skalierung der yAchse - oder umgekehrt. Das ist offenbar abhängig vom Maximalwert der Achsen. Leider führt das
manuelle Anpassen der Achsenskalierung nicht zum gewünschten Erfolg, da Excel die Breite des
Diagramms beibehält. Mit viel Geduld könnte ich die Breite des Diagramm-Objekts mit der Maus passend
einrichten. Aber das kann doch wohl nicht die optimale Lösung sein, um Diagramme mit korrekt
proportionierten Achsenskalierungen zu erhalten. Wissen Sie eine Lösung?
R. Schöttler
Home
Home
ANTWORT: Sie haben Recht; der Diagramm-Assistent bevorzugt Darstellungen, die "in die Breite gehen".
Selbst wenn die Maximalwerte beider Achsen identisch sind, erhalten Sie normalerweise ein Diagramm,
dessen Breite größer ist als die Höhe. Das bedeutet dann auch, dass ein Wert von "1" auf der x-Achse
optisch größer ist als ein Wert von "1" auf der y-Achse. Wenn Sie Skalierungen benötigen, die auf beiden
Achsen gleich groß sind, kommen Sie mit einem VBA-Makro am schnellsten ans Ziel. Betrachten Sie
dazu das folgende Beispiel.
Angenommen, Sie hätten folgende Werte in "Tabelle1" einer Arbeitsmappe eingegeben:
|AB
--------1|xy
2|11
3|16
4|66
5|61
6|11
Wenn Sie diese Werte in einem Punktdiagramm abtragen und die Punkte mit Linien verbinden, sollte sich
bei gleicher Achsenskalierung ein Quadrat ergeben. Aber schauen Sie, was Excel macht. Dazu markieren
Sie den Bereich A1:B6 und rufen über die Standard-Symbolleiste den Diagramm-Assistenten auf. Im
ersten Dialogfeld des Assistenten aktivieren Sie den Diagrammtyp "Punkt (XY)" und zusätzlich den
Untertyp "Punkte mit Linien". Auf allen weiteren Seiten übernehmen Sie die Standardeinstellungen. Am
Ende lassen Sie das Diagramm als Objekt in das aktuelle Tabellenblatt einfügen.
Obwohl die Maximalwerte der Datenreihen identisch sind, verwendet Excel für x- und y-Achse
unterschiedliche Skalierungen, sodass das Diagramm weit davon entfernt ist, ein Quadrat anzuzeigen.
Abhilfe schafft nur ein Makro:
1. Wechseln Sie aus der aktuellen Arbeitsmappe mit Alt + F11 in den Visual Basic-Editor.
2. Rufen Sie Einfügen-Modul auf, um ein neues Codefenster zu öffnen.
3. Darin geben Sie folgende VBA-Prozedur ein:
Sub DiagrammSkalieren()
Dim objBlatt As Worksheet
Dim objDiagramm As ChartObject
Dim lngMaxWert As Long
Dim lngMinWert As Long
Set objBlatt = ActiveSheet
Set objDiagramm = objBlatt.ChartObjects(1)
lngMaxWert = 7
lngMinWert = 0
With objDiagramm.Chart
.Axes(1).MaximumScale = lngMaxWert
Home
Home
.Axes(1).MinimumScale = lngMinWert
.Axes(2).MaximumScale = lngMaxWert
.Axes(2).MinimumScale = lngMinWert
.PlotArea.Height = .ChartArea.Height
.PlotArea.Width = .PlotArea.Height
End With
End Sub
·
Verlassen Sie den Visual Basic-Editor, indem Sie Datei-Schließen und zurück zu Microsoft Excel
anwählen.
· Starten Sie das VBA-Makro über den Befehl Extras-Makro-Makros und einen anschließenden
Doppelklick auf den Makronamen "DiagrammSkalieren".
Der Programmcode stellt die Maximal- und Minimalwerte beider Achsen auf die vorgegebenen Werte "7"
respektive "0" ein. Außerdem passt er die Höhe der Zeichnungsfläche an die Höhe der Diagrammfläche
an und danach setzt er die Breite der Zeichnungsfläche auf denselben Wert wie die Höhe.
Wenn Sie das Makro für Ihre Zwecke nutzen wollen, müssen Sie lediglich die Variablenzuweisungen am
Anfang des Prozedurcodes an Ihre Umgebung anpassen.
Ein Problem bleibt aber auch mit dieser VBA-Lösung bestehen: die Diskrepanz zwischen
Bildschirmdarstellung und Druckausgabe. Selbst wenn das Diagramm nach Ausführung des Makros auf
dem Bildschirm ein Quadrat anzeigt, kann es sein, dass auf dem Papier ein Rechteck herauskommt. Sie
müssen sich dann entscheiden, welche Darstellung wichtiger für Sie ist. Wenn Sie mehr Wert auf exakte
Druckresultate legen, müssen Sie das oben aufgeführte Makro leicht modifizieren:
Erstellen Sie zunächst einen Probeausdruck mit dem alten Programmcode. Dann messen Sie die
Achsenlängen mit einem Lineal und errechnen das Verhältnis von x-Achse (Breite) zu y-Achse (Höhe) beispielsweise "5,8 cm" zu "4,9 cm" = ca. "1,2".
Dieses Seitenverhältnis verwenden Sie im Makrocode, um die Breite der Zeichnungsfläche an die
Druckproportionen anzupassen. Dazu ändern Sie die letzte Codezeile in
.PlotArea.Width = .PlotArea.Height / <Seitenverhältnis>
Bei dem genannten Seitenverhältnis von "1,2" lautet die Zeile also
.PlotArea.Width = .PlotArea.Height / 1.2
Beachten Sie die Schreibweise mit Dezimalpunkt statt -komma!
Auf diese Weise erhalten Sie exakte Achsenproportionen auf dem Papier. Auf dem Bildschirm erscheint
das Diagramm aber womöglich leicht verzerrt.
Home
Home
Diagramme voll automatisch aktualisieren
Versionen: Excel 97, 2000 und 2002/XP
FRAGE: Ich möchte tagesaktuell ein Diagramm mit dem Kursverlauf eines Wertpapiers anlegen, und
zwar immer nur über die letzten 30 Tage. Die entsprechenden Datumsangaben und Börsennotierungen
erfasse ich fortlaufend in zwei Tabellenspalten. Ich habe es bislang nicht geschafft, das Diagramm
dynamisch auf Basis der letzten 30 Tabellenzeilen zu erstellen. So muss ich es jeden Tag neu anlegen
und immer wieder die festen Zelladressen für den 30-Tage-Zeitraum eingeben. Ist es nicht möglich, die
Zellen mit den Diagrammdaten automatisch zu ermitteln - beispielsweise mithilfe eines dynamischen
Bereichsnamens? G. Alles
ANTWORT: Das ist tatsächlich möglich, wenn Sie Bereichsnamen als Formeln definieren und wenn Sie
die DATENREIHE-Funktion des Diagramms entsprechend anpassen. Auf diese Weise erhalten Sie ein
Diagramm, das sich bei jeder neuen Kurseingabe selbstständig aktualisiert und immer automatisch die
letzten 30 Notierungen anzeigt.
Im Anschluss erfahren Sie Schritt für Schritt, wie Sie vorgehen. Ausgangspunkt ist eine ExcelArbeitsmappe mit Standard-Tabellenblättern. "Tabelle1" enthält die Datumsangaben und Kurswerte,
wobei Zelle A1 die Überschrift "Datum" und Zelle B1 die Überschrift "Werte" enthält. Die eigentlichen
Daten folgen ab Zeile 2.
·
Beginnen Sie nun zuerst mit einem herkömmlichen Diagramm. Dazu markieren Sie die
vorhandenen Daten in "Tabelle1" inklusive Zeile 1 mit den beiden Überschriften.
· Rufen Sie per Symbolleisten-Schaltfläche den Diagramm-Assistenten auf. Richten Sie das
Diagramm so ein, wie Sie es sich vorstellen, wobei für dieses Beispiel ein einfaches
Liniendiagramm mit den Standardeinstellungen genügt. Es spielt keine Rolle, ob Sie das
Diagramm in einem neuen Blatt oder als Objekt in der aktuellen Tabelle anlegen.
· Aktivieren Sie anschließend eine beliebige Zelle in der Tabelle mit den Zahlenwerten und wählen
Sie im Menü Einfügen erst Name(n) und dann Festlegen (Excel 97) bzw. Definieren (Excel
2000/2002) an. Wichtig ist nun, dass Sie für jede Wertereihe einen eigenen Namen festlegen. Das
bedeutet in diesem Fall, dass Sie einen Namen für die Datumsangaben (in Spalte A) und einen
für die Börsenwerte (in Spalte B) benötigen. Außerdem müssen Sie dem eigentlichen
Bereichsnamen den aktuellen Blattnamen (hier: "Tabelle1") voranstellen. Um der Datumsspalte
einen Namen zuzuweisen, geben Sie deshalb im Feld Namen in der Arbeitsmappe die
Bezeichnung "Tabelle1!Datumswerte" ein.
· Damit dieser Bereichsname dynamisch zugewiesen wird, tragen Sie im Feld Bezieht sich auf
keine Zelladresse sondern eine Formel ein. Für die Datumswerte, die sich hier in Spalte A von
"Tabelle1" befinden, lautet sie:
=WENN(ANZAHL2(Tabelle1!$A:$A)>30;
BEREICH.VERSCHIEBEN(Tabelle1!$A$1;
ANZAHL2(Tabelle1!$A:$A)-30;0;30;1);
BEREICH.VERSCHIEBEN(Tabelle1!$A$1;1;0;
ANZAHL2(Tabelle1!$A:$A)-1;1))
Beachten Sie, dass mit dieser Formel immer die letzten 30 Einträge in der Spalte zurückgegeben werden.
Ersetzen Sie die Zahl "30" gegebenenfalls durch den für Sie zutreffenden Wert.
Home
Home
Außerdem berücksichtigt die Formel den Fall, dass die Tabelle momentan weniger als 30 Einträge enthält,
weshalb am Anfang eine WENN-Abfrage steht.
Im Übrigen basiert die Formel auf einer BEREICH.VERSCHIEBEN-Funktion, die ausgehend von Zelle
$A$1 einen versetzten Bereich zurückgibt, dessen Größe sich an den insgesamt in Spalte A
eingegebenen Daten orientiert. Wenn genügend Werte vorhanden sind, handelt es sich dabei immer um
die letzten 30 Zellen.
·
·
Bestätigen Sie Namensvergabe und Formelzuweisung mit Ok.
Wiederholen Sie die Schritte 3 bis 5 für die Spalte mit den Kurswerten. Weisen Sie als Namen in
der Arbeitsmappe die Bezeichnung "Tabelle1!Kurswerte" zu und geben Sie im Feld Bezieht sich
auf folgende Formel ein:
=WENN(ANZAHL2(Tabelle1!$A:$A)>30;
BEREICH.VERSCHIEBEN(Tabelle1!$A$1;
ANZAHL2(Tabelle1!$A:$A)-30;1;30;1);
BEREICH.VERSCHIEBEN(Tabelle1!$A$1;1;1;
ANZAHL2(Tabelle1!$A:$A)-1;1))
Die Formel unterscheidet sich kaum von der ersten. Lediglich das dritte Argument der Funktion
BEREICH.VERSCHIEBEN ist hier nicht "0" sondern "1". Das bedeutet, dass der Bereich um eine Spalte
nach rechts versetzt wird. Der ansonsten identische Formelaufbau sorgt dafür, dass die Datums- und
Kursbereiche immer gleich groß sind.
·
Aktivieren Sie nun das Diagramm und markieren Sie die Diagrammdaten, indem Sie zum Beispiel
in einem Liniendiagramm direkt auf die Linie klicken. Excel hebt die einzelnen Datenpunkte hervor
und zeigt in der Bearbeitungszeile eine DATENREIHE-Funktion an. Das könnte im Beispiel
ungefähr so aussehen:
=DATENREIHE(Tabelle1!$B$1;Tabelle1!$A$2:$A$17;Tabelle1!$B$2:$B$17;1)
·
Damit das Diagramm seine Werte aus den dynamisch angepassten Tabellenbereichen bezieht,
müssen Sie jetzt nur noch die Argumente 2 und 3 der DATENREIHE-Funktion ändern.
Ersetzen Sie das zweite Argument durch den Bereichsnamen für die Datumswerte und das dritte
Argument durch den Namen für die Kurswerte. Die fertige Formel lautet:
=DATENREIHE(Tabelle1!$B$1;Tabelle1!Datumswerte;Tabelle1!Kurswerte;1)
Ab sofort können Sie Ihre Tabelle beliebig erweitern. Im Diagramm sehen Sie immer den Kursverlauf über
die letzten 30 Tage, - es sei denn, es sind noch nicht genügend Werte vorhanden
Die drei höchsten Werte summieren
Versionen: Excel 97, 2000 und 2002
FRAGE: Ich möchte gerne die drei größten Werte aus einem Bereich von 100 Zellen summieren. Das
Problem dabei ist, dass die Werte nicht sortiert sind, so dass der Einsatz einer einfachen Summenformel
ausscheidet. Haben Sie einen Lösungsvorschlag?
V. Schröter
Home
Home
ANTWORT: Die Spitzenwerte eines Tabellenbereichs können Sie mit der Funktion KGRÖSSTE ermitteln.
Die Funktion erwartet als ersten Parameter die Adresse des zu durchsuchenden Bereichs und als zweiten
Parameter eine Zahl, die angibt, der welchen Wert Sie genau suchen.
Wenn sich Ihre Werte zum Beispiel im Bereich A1:A100 befinden, liefert folgende Formel den höchsten
Wert:
=KGRÖSSTE(A1:A100;1)
Die Summe aus dem "höchsten", dem "zweithöchsten" und dem "dritthöchsten Wert erhalten Sie mit
folgender Formel:
=KGRÖSSTE(A1:A100;1)+KGRÖSSTE(A1:A100;2)+
KGRÖSSTE(A1:A100;3)
Verkürzen lässt sich der Ausdruck mit einer Arrayformel:
=SUMME(KGRÖSSTE(A1:A100;{1;2;3}))
Zur Eingabe einer Arrayformel schließen Sie den Ausdruck mit Strg+Umschalt+Return ab, so dass Excel
die Formel automatisch mit geschweiften Klammern umgibt. Die geschweiften Klammern im zweiten
Parameter der KGRÖSSTE-Funktion müssen Sie allerdings selbst eingeben.
Da es sich um eine Arrayformel handelt, berechnet Excel das Ergebnis der KGRÖSSTE-Funktion für alle
Parameterwerte, die Sie durch das in geschweifte Klammern gesetzte Datenfeld definieren - hier also für
die drei höchsten Werte. Mit der Summenfunktion werden die Ergebnisse addiert.
Obwohl diese Schreibweise kompakter ist als die zuvor genannte mit dem +-Operator, wird die Eingabe
immer mühseliger, je mehr Spitzenwerte summiert werden sollen. Wenn Sie etwa die fünf höchsten Werte
des Bereichs addieren wollen, müssten Sie schon "{1;2;3;4;5}" als Parameterarray eingeben.
Übersichtlicher und flexibler ist folgende Formel (hier für fünf Spitzenwerte):
=SUMME(KGRÖSSTE(A1:A100;ZEILE(INDIREKT("1:5"))))
Auch diese Formel müssen Sie per Strg+Umschalt+Return als Arrayformel eingeben. Wenn Sie jetzt
aber eine andere Summe - beispielsweise aus den zehn höchsten Werten - benötigen, müssen Sie nur
noch den zweiten Wert der INDIREKT-Funktion anpassen, indem Sie statt "5" den Wert "10" eintragen.
Doppelte Einträge in einer Spalte verhindern
Versionen: Excel 97, 2000 und 2002
Für viele Anwendungen müssen Sie sicherstellen, dass keine doppelten Werte in eine Spalte eingetragen
werden. Das gilt zum Beispiel für Rechnungs-, Kunden- oder Artikelnummern, die in jedem Fall immer
eindeutig vergeben werden müssen. Mit wenig Aufwand können Sie dafür sorgen, dass Excel diese
Prüfung für Sie übernimmt und doppelte Eingaben automatisch verhindert. Dazu möchten wir Ihnen im
Home
Home
folgenden zwei Varianten vorstellen. Bei der ersten Lösung gehen wir davon aus, dass Sie die Zahlen in
einer Spalte untereinander eingeben und neue Zahlen immer am Ende anfügen:
·
Markieren Sie die komplette Spalte, in der die Eingabe von doppelten Zahlen verhindert werden
soll (zum Beispiel Spalte B).
· Wählen Sie das Menü Daten-Gültigkeit an.
· Markieren Sie in der Liste Zulassen den Eintrag "Benutzerdefiniert" und geben Sie dann den
folgenden Ausdruck in das Feld Formel ein (ersetzen Sie dabei "B" durch den Buchstaben der
Spalte, die Sie in Ihrer Tabelle markiert haben):
=VERGLEICH(B1;$B:$B;0)=ZEILE(B1)
·
Wechseln Sie auf das Register "Fehlermeldung" und legen Sie Inhalt und Aussehen der
Dialogbox fest, die den Anwender auf die Eingabe eines doppelten Wertes aufmerksam machen
soll.
· Bestätigen Sie Ihre Einstellungen mit Ok.
Ab sofort ist die Eingabe von doppelten Werten in der markierten Spalte nicht mehr möglich. Der
eigentliche Trick bei dieser Technik ist die Formel, die Sie als Gültigkeitskriterium eingeben. Dazu muss
man folgendes wissen:
·
Excel zeigt verhindert immer dann die Eingabe eines Wertes, wenn der von Ihnen eingegebene
Ausdruck das Ergebnis FALSCH liefert.
· Ein relativer Bezug in der Gültigkeitsformel wird immer automatisch auf jede Zelle des markierten
Bereiches angepasst. In der Zelle B10 wendet Excel also beispielsweise folgende
Gültigkeitsformel an:
=VERGLEICH(B10;$B:$B;0)=ZEILE(B10)
In der Formel passiert nun folgendes: Der Inhalt der aktuellen ZELLE wird mit Hilfe der Funktion
VERGLEICH mit dem übrigen Inhalt der Spalte verglichen. Als Ergebnis erhalten Sie die Nummer der
Zeile in Spalte B, in der die Funktion fündig wurde. Handelt es sich nicht um eine doppelte Eingabe,
entspricht diese Zeilennummer der Zeile, in die Sie etwas eingegeben haben. In diesem Fall ist das
Funktionsergebnis WAHR und Excel lässt die Eingabe zu. Ist der eingegebene Wert bereits vorhanden,
liefert VERGLEICH eine andere Zeilennummer, so dass das Ergebnis FALSCH ist und die Eingabe
verhindert wird.
Daraus ergibt sich, dass diese Formel nur in den Fällen funktioniert, in denen Sie die Zahlen
untereinander eingeben, denn Excel kann nur die Werte über der aktuellen Zelle zuverlässig prüfen.
Wenn Sie Zahlen an beliebigen Positionen in der Spalte eingeben oder nachträglich ändern möchten,
ändern Sie die Technik leicht ab und verwenden die folgende Gültigkeitsformel (hier ist "D" durch den
Buchstaben der von Ihnen verwendeten Spalte zu ersetzen):
=ZÄHLENWENN($D:$D;D1)<2
Über die Funktion ZÄHLENWENN können Sie ermitteln, wie oft der Inhalt einer Zelle in der kompletten
Spalte vorkommt. Nur wenn das Ergebnis "<2" ist, liegt keine Doppeleingabe vor und Excel nimmt den
Wert an.
Home
Home
Dropdown-Felder in Zellen miteinander verknüpfen
Versionen: Excel 97, 2000 und 2002
FRAGE: Ich habe mit dem Befehl Daten-Gültigkeit eine Dropdown-Liste angelegt, damit Benutzer der
Tabelle problemlos die zulässigen Werte auswählen können. Jetzt möchte ich eine zweite Dropdown-Liste
einrichten, deren Inhalte von der Auswahl in der ersten Zelle abhängig sein sollen. Wie schaffe ich es,
dass die Dropdown-Liste nicht nur statische Einträge enthält, sondern dynamisch mit dem anderen
Dropdown-Feld verknüpft ist?
W. Holzbrink
ANTWORT: Da die von Ihnen beschriebene Funktion vielleicht nicht allen Lesern bekannt ist, zunächst
ein kurzer Überblick: Mit dem Befehl Daten-Gültigkeit können Sie nicht nur generell die Benutzereingaben
überprüfen und gegebenenfalls eine Fehlermeldung ausgeben lassen. Darüber hinaus können Sie eine
Dropdown-Liste in einer Zelle einrichten, ohne dafür irgendwelche Formularfelder oder Steuerelemente
einbetten zu müssen. Sobald Sie die Zelle aktivieren, blendet Excel einen Dropdown-Pfeil ein, mit dem
Sie den Zellwert bequem aus einer Liste auswählen können.
Sie definieren eine solche Dropdown-Liste, indem Sie die Eingabezelle markieren und dann DatenGültigkeit aufrufen. Auf der Registerkarte Einstellungen wählen Sie unter Zulassen den Eintrag "Liste"
aus. Nun geben Sie im Feld Quelle entweder eine durch Semikolons getrennte Werteliste (z. B.
"Blau;Gelb;Grün") oder die Adresse eines Tabellenbereichs (z. B. "=$A$1:$A$3") ein. Der Tabellenbereich
muss die Werte enthalten, die in der Dropdown-Liste erscheinen sollen.
Nun zu dem von Ihnen geschilderten Problem mit zwei verknüpften Dropdown-Listen. Die Lösung besteht
darin, anstelle von statischen Wertelisten oder Zelladressen mit benannten Bereichen zu arbeiten. Excel
wertet Namen wie normale Tabellenbereiche aus, die Sie mit Spaltenbuchstaben und Zeilennummern
angeben. Excel geht sogar noch einen Schritt weiter: Als Quelle einer Dropdown-Liste akzeptiert Excel
auch eine Formel, die den Namen eines benannten Bereichs zurückgibt. So ist es nur noch ein kleiner
Sprung bis zur fertigen Verknüpfung der beiden Dropdown-Listen. Hier die Vorgehensweise im Detail:
·
·
·
·
Home
Geben Sie die Werte ein, die in den Dropdown-Feldern erscheinen sollen. Angenommen etwa,
Sie wollten zuerst ein Land auswählen und dann in Abhängigkeit davon eine Stadt aus dem
betreffenden Land. Geben Sie dafür zum Beispiel "Deutschland", "Frankreich" und "Italien" in die
Zellen A1:A3 eines Tabellenblatts ein. In den Bereich B1:B3 tragen Sie Orte aus Deutschland ein
– beispielsweise "Hamburg", "Berlin", "München". Ebenso verfahren Sie mit den französischen
und italienischen Städten, die Sie in C1:C3 bzw. D1:D3 eingeben. Suchen Sie sich irgendwelche
Beispielorte aus.
Weisen Sie den einzelnen Bereichen Namen zu (Befehl Einfügen-Namen-Festlegen (Excel 97)
oder Einfügen-Name(n)-Definieren (Excel 2000/2002)). Wie Sie die Liste für das erste DropdownFeld benennen, ist relativ egal; geben Sie dem Bereich A1:A3 zum Beispiel den Namen "Staaten".
Wichtig ist die Namensgebung der abhängigen Bereiche! Die Namen müssen exakt mit den
vorgesehenen Listeneinträgen übereinstimmen – hier also "Deutschland", "Frankreich" sowie
"Italien".
Setzen Sie den Cursor in die Zelle, in der die erste Dropdown-Liste zur Länderauswahl
erscheinen soll. Hier könnte das beispielsweise Zelle A5 auf demselben Tabellenblatt sein.
Wählen Sie Daten-Gültigkeit an und aktivieren Sie auf der Registerkarte Einstellungen im Feld
Zulassen den Eintrag "Liste".
Home
·
Geben Sie im Feld Quelle einen Bezug in der folgenden Form ein:
=<ErsterBereichsname>
·
·
Im Beispiel müssen Sie also "=Staaten" eingeben.
Achten Sie darauf, dass das Kontrollkästchen Zellendropdown aktiviert ist und bestätigen Sie die
Einstellungen mit Ok.
· Setzen Sie den Cursor in die Zelle, in der das verknüpfte Dropdown-Feld erscheinen soll; hier
etwa Zelle B5.
· Rufen Sie erneut Daten-Gültigkeit auf und stellen Sie wie in Schritt 4 das Listenformat ein.
· Als Quelle tragen Sie jetzt aber keinen Bereichsnamen ein, sondern eine Formel nach folgendem
Muster:
=INDIREKT(<VerknüpfteZelle>)
·
Da sich die übergeordnete Dropdown-Liste des Beispiels in Zelle A5 befindet, müssen Sie in
diesem Fall die Formel "=INDIREKT(A5)" eingeben.
· Quittieren Sie die Änderungen mit Ok. Dass Excel daraufhin eine Fehlermeldung ausgibt, muss
Sie nicht stören. Grund dafür ist, dass bislang noch kein Land ausgewählt wurde. Fahren Sie
einfach mit Ja fort.
Damit haben Sie die Verknüpfung eingerichtet. Probieren Sie es aus, indem Sie ein Land aus der
Dropdown-Liste in Zelle A5 auswählen. Sobald Sie den Cursor in B5 setzen und per Dropdown-Pfeil die
zugehörige Gültigkeitsliste öffnen, werden Sie feststellen, dass nur noch Städte aus dem betreffenden
Land auftauchen.
Druckbereich einfacher festlegen
Versionen: Excel 97, 2000 und 2002
Wenn Sie gezielt nur einen bestimmten Bereich einer Tabelle ausdrucken möchten, müssen Sie
dazu einen entsprechenden Druckbereich definieren. Normalerweise verwenden Sie dazu das
Menü Datei-Druckbereich-Druckbereich festlegen, aber es geht auch noch schneller: Klicken Sie
mit der rechten Maustaste in eine beliebige Symbolleiste und wählen Sie das Kontextmenü
Anpassen an. Wechseln Sie auf die Registerkarte "Befehle" und wechseln Sie in die Kategorie
"Datei". Daraufhin finden Sie in der Liste Befehle ein Symbol "Druckbereich festlegen", das Sie
nun ganz einfach mit der Maus an die gewünschte Position ziehen. In Zukunft müssen Sie nur
noch einen beliebigen Tabellenbereich markieren und auf das neue Symbol klicken, um einen
Druckbereich festzulegen.
Drucken von Arbeitsmappen verhindern
Versionen: Excel 97, 2000 und 2002
In der letzten Ausgabe der Excel-Kolumne habe ich Ihnen eine Lösung vorgestellt, mit der Sie die Anzahl
der Druckseiten bereits vor dem eigentlichen Druckvorgang ermitteln können. In der heutigen Ausgabe
der Excel-Kolumne verrate ich Ihnen, wie Sie verhindern können, daß eine bestimmte Tabelle gedruckt
werden kann.
Im folgenden Praxisbeispiel wird dem Anwender, der versucht die Tabelle 1 auszudrucken eine
Warnmeldung angezeigt. Um diese Funktionalität zu programmieren, wenden Sie ein Ereignismakro von
Home
Home
Excel an. Dabei gehen Sie wie folgt vor:
1. Wechseln Sie mit der Tastenkombination Alt+F11 in die Entwicklungsumgebung von Excel.
2. Im Projekt-Explorer klicken Sie den Eintrag "DieseArbeitsmappe" doppelt an.
3. Erfassen Sie danach folgendes Ereignismakro:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "Tabelle1" Then
MsgBox "Sie dürfen diese Tabelle nicht drucken!"
Cancel = True
End If
Exit Sub
End Sub
Über die Eigenschaft "Names" können Sie den Namen der aktiven Tabelle ermitteln. In Abhängigkeit
davon können Sie dann entweder den Druckvorgang fortsetzen oder eben die Warnmeldung ausgeben.
Die Abfrage können Sie natürlich erweitern, wenn Sie beispielsweise ein ganz Reihe von Tabellen haben,
die nicht gedruckt werden dürfen. Das Ereignismakro für diesen Fall sieht dann wie folgt aus:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Select Case ActiveSheet.Name
Case "Tabelle1", "Tabelle2"
MsgBox "Sie dürfen diese Tabelle nicht drucken!"
Cancel = True
Case Else
Exit Sub
End Select
End Sub
Über die Case-Struktur haben Sie mehr Möglichkeiten, verschiedene Fälle zu behandeln als durch die
Schachtelung mehrere IF-Strukturen. In dieser Struktur könnten Sie sogar unterschiedliche Meldungen
auf dem Bildschirm ausgeben, je nach dem von welcher Tabelle versucht wird zu drucken.
Möchten Sie generell verhindern, daß in dieser Arbeitmappe eine Tabelle gedruckt werden kann, dann
setzen Sie folgendes Ereignismakro ein:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
Exit Sub
End Sub
Indem Sie das Argument "Cancel" auf den Wert "True" setzen, verhindern Sie für diese Arbeitsmappe
jeglichen Ausdruck. Mit der Anweisung "Exit Sub" beenden Sie danach das Ereignismakro.
Duplikate in Adresslisten finden und löschen
Versionen: Excel 97, 2000 und 2002/XP
Home
Home
Excel wird in vielen Fällen zur Verwaltung von Adressen verwendet. Ein immer wieder auftauchendes
Problem betrifft dabei unerwünschte Duplikate, die beispielsweise durch Doppeleingaben oder das
Zusammenführen mehrerer Listen entstehen können. Nun bietet Excel natürlich nicht dieselben
Möglichkeiten zur Duplikatssuche, wie eine Datenbank, aber mit einigen Tipps und Kniffen kommen Sie
dennoch zum Ziel. Da uns an der Helpline immer wieder Anfragen rund um das Thema "Duplikate"
erhalten, werden wir in den nächsten Wochen in loser Folge verschiedene Möglichkeiten vorstellen, um
den lästigen Dubletten in Excel auf die Spur zu kommen. In dieser Woche geht es zunächst einmal um die
Nutzung der "Bordmittel" von Excel ohne den Einsatz von Makros oder externen Programmen.
So steht Ihnen bei dem so genannten "Spezialfilter" von Excel bereits standardmäßig eine Option Keine
Duplikate zur Verfügung, die zumindest in einigen Fällen bereits weiterhelfen kann. Grundsätzlich können
Sie mit dem Spezialfilter alle Datensätze aus einer Liste herausfiltern, die beliebigen von Ihnen
festgelegten Kriterien entsprechen. Wenn Sie bei diesem Vorgang die Funktion Keine Duplikate
verwenden, unterdrückt Excel in dem Ergebnis automatisch doppelte Datensätze. Das Problem dabei:
Excel erkennt einen Datensatz nur dann als Duplikat, wenn wirklich alle Feldinhalte übereinstimmen.
Selbst kleine Unterschiede wie "Mozart Weg 67" und "Mozartweg 67" würden bereits dazu führen, dass
Excel den Datensatz nicht als Duplikat identifiziert.
Der Spezialfilter sollte daher vor allem dann zum Einsatz kommen, wenn Sie nur nach exakten
Duplikaten, wie sie beispielsweise durch das Zusammenführen von Listen entstehen können. Und so
gehen Sie dazu vor:
1. Klicken Sie in eine beliebige Zelle der Liste, aus der Excel die Duplikate herausfiltern soll.
2. Wählen Sie das Menü Daten-Filter-Spezialfilter an.
3. Excel versucht nun, Ihre Adressliste basierend auf der aktuellen Markierung auszuwählen. Der
entsprechende Bezug wird dann in das Feld Listenbereich eingetragen. Prüfen Sie, ob wirklich
Ihre komplette Liste samt Spaltenbeschriftungen ausgewählt ist und korrigieren Sie den Bezug
gegebenenfalls.
4. Aktivieren Sie die Option An eine andere Stelle kopieren, damit Excel die Liste nicht nur filtert,
sondern das Ergebnis in einen anderen Tabellenbereich schreibt. Nur dann funktioniert die
Duplikatssuche!
5. Lassen Sie das Feld Kriterienbereich leer und klicken Sie in das Feld Kopieren nach.
6. Geben Sie hier den Bezug der linken oberen Ecke des Zielbereiches ein, in den Excel die Liste
ohne Duplikate kopieren soll. Hier bietet sich beispielsweise der Bereich unter der Originalliste an.
7. Aktivieren Sie das Kontrollkästchen Keine Duplikate und starten Sie den Vorgang mit Ok.
8. Im Zielbereich finden Sie nun eine Kopie der Originalliste ohne doppelte Einträge.
Wenn Sie es allerdings mit einer Adressliste zu tun haben, in der Duplikate sich nicht durch die komplette
Übereinstimmung aller Felder identifizieren lassen, kommen Sie mit diesem Verfahren nicht weiter. Eine
übliche Lösung für dieses Problem ist der Einsatz eines so genannten "Matchcodes". Dabei setzt man für
jeden Datensatz eine Zeichenkette aus Informationen zusammen, mit deren Hilfe sich Dubletten auch bei
kleinen Unterschieden möglichst sicher erkennen lassen. Ein möglicher Matchcode wäre beispielsweise:
·
·
·
Home
Die ersten fünf Zeichen des Firmen- oder Nachnamens
Die ersten fünf Zeichen des Straßennamens
Die Postleitzahl
Home
Kombiniert man diese drei Informationen, erhält man einen Matchcode, der beispielsweise
folgendermaßen aussieht:
SchneMozar10982
Dieser Matchcode würde sich beispielsweise aus der folgende Adresse ergeben:
Schneider & Söhne, Mozartweg 123, 10982 Berlin
Der Nutzen des Matchcodes wird deutlich, wenn Sie sich die folgende Adresse ansehen:
Schneider & Söhne GmbH, Mozart Weg 123, 10982 Berlin
Es handelt sich hier natürlich um dieselbe Adresse, aber bei einem direkten Vergleich könnte Excel das
Duplikat nicht erkennen. Der Matchcode hilft hier weiter, denn die beiden Adressvarianten liefern dasselbe
Ergebnis:
SchneMozar10982
Und so können Sie Duplikate mit Hilfe des Matchcodes aus einer Adressliste löschen:
1. Fügen Sie in Ihre Adressliste eine neue Spalte für den Matchcode ein.
2. Die Zusammensetzung des Matchcodes können Sie natürlich individuell für Ihre Liste bestimmen.
Für unser oben angegebenes Beispiel könnte er für die erste Adresse folgendermaßen aussehen:
=Links(A2;5)&Links(B2;5)&E5
·
Kopieren Sie die Formel des Matchcodes in die Zeilen der übrigen Datensätze, so dass er für jede
Adresse ermittelt wird.
· Sie müssen nun im nächsten Schritt alle Zeilen mit einem Matchcode ermitteln, der mehr als
einmal vorkommt. Mit der folgenden Formel, die Sie in eine neue Spalte des ersten Datensatzes
eingeben, markieren Sie alle Duplikate mit einem Sternchen "*":
=WENN(ISTZAHL(VERGLEICH(B2;BEREICH.VERSCHIEBEN($B$1;0;0; Zeile(B2)-1;1);0));"*";"")
Passen Sie dabei die folgenden Bezüge an Ihre jeweilige Liste an:
·
·
B2 ist der erste zu prüfende Matchcode
$B$1 ist die Zelle über dem ersten Matchcode (in der Regel die Spaltenbeschriftung). Wichtig ist,
dass Sie in jedem Fall einen absoluten Bezug verwenden!
· In dem Ausdruck "Zeile(B2)-1" muss die Zahl 1 durch die "Nummer der Tabellenzeile mit dem
ersten Listeneintrag minus 1" ersetzt werden. Also beispielsweise: "Zeile(A3)-2" oder "Zeile(H67)66".
Wenn Sie diese Formel nun in der Spalte nach unten bis an das Ende der Liste ausfüllen, erscheint ein
Sternchen neben jedem Matchcode, der mehr als einmal vorkommt. Sie haben nun zwei Möglichkeiten:
·
Home
Sie sortieren Ihre Adressliste alphabetisch nach dem Matchcode. Mit Hilfe der Markierungen
prüfen Sie dann die Datensätze, die mehrfach vorkommen und entscheiden, welche Adressen
Home
·
gelöscht werden sollen. Dieses Verfahren bietet sich vor allem bei überschaubaren
Adressbeständen an.
Alternativ dazu sortieren Sie die Adressliste nach der Liste mit der Markierung und können dann
alle mit einem Sternchen versehenen Datensätze ganz einfach in einem Schritt löschen.
Dynamische Diagramme durch Steuerelemente
Versionen: Excel 97, 2000 und 2002/XP
Die grafische Darstellung von umfangreichen Tabellen ist nicht immer besonders übersichtlich. Nehmen
wir beispielsweise eine Tabelle, in der für sieben Filialen das Budget nach Monaten aufgelistet wird. Da
sich diese Datenmenge schwer in einem einzigen Diagramm darstellen lässt, wäre es sinnvoll, gezielt nur
die Kosten eines Quartals zu vergleichen. Sie könnten nun vier separate Diagramme erstellen, aber es
geht auch einfacher: Ziel ist es, ein Drehfeld-Steuerelement in das Diagramm einzufügen, mit dessen Hilfe
Sie die Darstellung ganz einfach per Mausklick von einem Quartal zum nächsten umschalten können. Mit
ein paar Tricks kein Problem:
1. Markieren Sie die Werte des ersten Quartals. In unserer Beispieltabelle ) entspricht das dem Bereich
B4:E11.
2. Wählen Sie das Menü Einfügen-Diagramm an und erstellen Sie mit Hilfe des Diagrammassistenten
ein einfaches zweidimensionales Säulendiagramm. Legen Sie dabei im letzten Schritt des Assistenten
fest, dass das Diagramm auf einem neuen Blatt erstellt werden soll.
3. Blenden Sie die Symbolleiste "Formular" ein und fügen Sie an einer beliebigen Stelle des Diagramms
ein neues Drehfeld (das Symbol mit einem nach oben und einem nach unten gerichteten Pfeil) ein.
4. Nachdem Sie das Drehfeld mit der rechten Maustaste angeklickt haben, rufen Sie das Kontextmenü
Steuerelement formatieren auf und nehmen auf der Registerkarte "Steuerung" die folgenden
Einstellungen vor:
Aktueller Wert: 0
Minimalwert: 0
Maximalwert: 3
Schrittweite: 1
Ausgabeverknüpfung: Budget2003!$C$14
Auf diese Weise beschränken Sie die Werte, die über das Drehfeld eingestellt werden können auf Zahlen
zwischen 0 und 3. Außerdem erreichen Sie, dass Excel den jeweils aktuellen Wert in die Zelle C14 des
Tabellenblatts "Budget2003" einträgt.
·
Der eigentliche Trick besteht nun darin, auf dem Tabellenblatt Namen zu definieren, deren
zugeordnete Bereiche sich automatisch dem aktuellen Inhalt von C14, also dem über das
Drehfeld beeinflussten Wert, anpassen. Wählen Sie dazu das Menü Einfügen-Namen-Festlegen
an und erstellen Sie die folgenden Namen zur Bestimmung der Beschriftung jeder Datenreihe:
Monat1:
=BEREICH.VERSCHIEBEN(Budget2004!$C$4;0;
Budget2003!$C$14*3;1;1)
Monat2:
=BEREICH.VERSCHIEBEN(Budget2004!$D$4;0;
Budget2003!$C$14*3;1;1)
Home
Home
Monat3:
=BEREICH.VERSCHIEBEN(Budget2004!$E$4;0;
Budget2003!$C$14*3;1;1)
·
Anschließend erstellen Sie die folgenden Namen, die die Bereiche mit den darzustellenden Daten
bestimmen:
Daten1:
=BEREICH.VERSCHIEBEN(Budget2004!$C$5;0;
Budget2003!$C$14*3;7;1)
Daten2:
=BEREICH.VERSCHIEBEN(Budget2004!$D$5;0;
Budget2003!$C$14*3;7;1)
Daten3:
=BEREICH.VERSCHIEBEN(Budget2004!$E$5;0;
Budget2003!$C$14*3;7;1)
·
Zu guter letzt stellen Sie sicher, dass die Datenreihen des Diagramms keine festen Bezüge,
sondern stattdessen die soeben definierten Namen verwenden. Klicken Sie dazu auf eine
beliebige Säule des Monats Januar, so dass die zugehörige Datenreihen-Formel in der
Bearbeitungszeile sichtbar wird. Ersetzen Sie sie durch die folgende Formel:
=DATENREIHE(budget.xls!Monat1;Budget2004!$B$5:$B$11;
budget.xls!Daten1;1)
· Nach demselben Prinzip bestimmen Sie die Datenreihen-Formeln für Februar und März:
=DATENREIHE(budget.xls!Monat2;budget2004!$B$5:$B$11;
budget.xls!Daten2;2)
=DATENREIHE(budget.xls!Monat3;Budget2004!$B$5:$B$11;
budget.xls!Daten3;3)
Sie haben nun die Möglichkeit, durch einfaches Klicken auf das Drehfeld die grafische Darstellung von
einem Quartal auf das nächste umzuschalten. Auch die Legende wird dabei automatisch angepasst!
Dynamischer Mauszeiger, Teil 2
Versionen: Excel 97, 2000 und 2002
Unser Kolumnist Bernd Held hat mit seinem "Dynamischen Mauszeiger" aus Ausgabe 47/2001 eine kleine
Lawine losgetreten, denn es folgte eine Flut von Leseranfragen. Viele hatten schon lange nach genau so
einer Lösung gesucht, aber sie waren mit der Umsetzung noch nicht so ganz zufrieden. Wir haben uns die
Anregungen zu Herzen genommen und möchten Ihnen in dieser Ausgabe eine optimierte Version des
dynamischen Mauszeigers vorstellen, die unter tatkräftiger Mitwirkung von Günther Abel und Bernd Held
zustande gekommen ist.
Home
Home
Kurz zur Erinnerung: der dynamische Mauszeiger sorgt dafür, daß Excel automatisch die Zeile in der
aktuellen Tabelle gelb hinterlegt, in der sich der Zellzeiger zur Zeit befindet. Die Orientierung in
umfangreichen Kalkulationsmodellen und Listen wird damit zum Kinderspiel. Im wesentlichen gab es
dabei zwei Probleme:
·
·
Vorhandene Schattierungen in der Tabelle gingen verloren
Die Funktionen zum Kopieren und Ausschneiden stehen nicht zur Verfügung
Die neue Lösung wurde daher so konzipiert, daß sie vor dem Markieren einer Zeile die vorhandenen
Schattierungen speichert und später wiederherstellt. Außerdem läßt sich die Funktion jetzt nach Belieben
ein- und wieder ausschalten. Kopieren Sie dazu den folgenden Code in ein neues Modul der
Arbeitsmappe, in der Sie die Funktion nutzen möchten:
Dim ranAltBereich As Range
Dim lngColorIndex(1 To 256) As Long
Dim bolDynMauszeiger As Boolean
Sub MarkierungEin(ByVal Target As Excel.Range)
Dim ranZelle As Range
Dim x As Integer
If bolDynMauszeiger = False Then Exit Sub
If Not ranAltBereich Is Nothing Then
x=0
On Error Resume Next
For Each ranZelle In ranAltBereich
x=x+1
ranZelle.Interior.ColorIndex = lngColorIndex(x)
Next
End If
Set ranAltBereich = _
Range("A" & Target.Row & ":IV" & Target.Row)
x=0
For Each ranZelle In ranAltBereich
x=x+1
lngColorIndex(x) = _
ranZelle.Interior.ColorIndex
Next
Target.EntireRow.Interior.Color = RGB(255, 255, 200)
End Sub
Home
Home
Sub MarkierungAus()
Dim x As Integer
Dim ranZelle As Range
If Not ranAltBereich Is Nothing Then
x=0
For Each ranZelle In ranAltBereich
x=x+1
ranZelle.Interior.ColorIndex = lngColorIndex(x)
Next
End If
End Sub
Sub MauszeigerEinschalten()
bolDynMauszeiger = True
End Sub
Sub MauszeigerAusschalten()
MarkierungAus
bolDynMauszeiger = False
End Sub
Die Prozedur "MarkierungEin" sorgt dafür, daß dieSchattierungen der bisherigen Zeile wiederhergestellt,
die Einstellungen der neuen Zeile gespeichert und die gelbe Hinterlegung zugewiesen wird.
"MarkierungAus" kommt beim Deaktivieren der Funktion und beim Schließen der Arbeitsmappe zum
Einsatz: die alten Schattierungen werden wiederhergestellt.
Das Ein- und Ausschalten des Mauszeigers steuert die globale Variable "bolDynMauszeiger", die über die
beiden kleinen Prozeduren am Ende des Listings gesetzt wird. Damit schließlich die Markierung bei jedem
Verschieben des Mauszeigers neu gesetzt und beim Schließen der Arbeitsmappe entfernt wird,
verwenden Sie die beiden folgenden Prozeduren, die unbedingt in das Modul von "DieseArbeitsmappe"
eingefügt werden müssen:
Private Sub Workbook_SheetSelectionChange(ByVal sh _
As Object, ByVal Target1 As Excel.Range)
MarkierungEin Target1
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
MarkierungAus
End Sub
Home
Home
Zum schnellen Zugriff auf den dynamischen Mauszeiger erstellen Sie nun noch zwei neue Symbole, die
die Prozeduren "MauszeigerEinschalten" und "MauszeigerAusschalten" aufrufen".
Echte Arbeitstage
Versionen: Excel 97, 2000 und 2002/XP
FRAGE: In einer Tabelle erfassen wir Auftragsdaten. Dazu zählen unter anderem der Tag der
Auftragsannahme und der Tag der Fertigstellung. In der Statistik sollen nun die tatsächlich benötigten
Arbeitstage ausgegeben werden. Es geht also nicht einfach nur um die Differenz zwischen Anfangs- und
Enddatum, sondern um die wirkliche Arbeitsdauer unter Berücksichtigung von Wochenenden und
Feiertagen. Ist so etwas überhaupt in Excel möglich?
F. Schulte
ANTWORT: Funktionen zur Berechnung der "Nettoarbeitstage" finden Sie im Add-In "AnalyseFunktionen". Dieses Add-In gehört zum Lieferumfang von Excel, wird beim ersten Programm-Setup aber
nur auf Kommando installiert. Und selbst wenn Sie es bei der Excel-Installation eingerichtet haben, ist es
nicht automatisch aktiviert.
Überprüfen Sie also zunächst, ob die "Analyse-Funktionen" überhaupt schon zur Verfügung stehen. Dazu
wählen Sie im Excel-Menü Extras je nach Programmversion den Befehl Add-In-Manager (97), Add-InsManager (2000) oder Add-Ins (2002) an. In der Liste verfügbarer Add-Ins sollten Sie einen Eintrag
namens "Analyse-Funktionen" finden. Wenn dem so ist, versehen Sie ihn per Mausklick mit einem
Häkchen und bestätigen Sie das Laden des Add-Ins mit Ok.
Wenn Sie die "Analyse-Funktionen" nicht in der Add-In-Liste finden, müssen Sie noch einmal das SetupProgramm von Excel/Office starten und eine Wartungsinstallation durchführen. Suchen Sie dann in den
Installationsoptionen von Excel nach dem Analyse-Add-In und installieren Sie es nach. Anschließend
aktivieren Sie das Add-In mit den im letzten Absatz beschriebenen Schritten.
In Zukunft können Sie in Ihren Tabellenblättern zwei leistungsfähige Funktionen zur Berechnung der
"echten" Arbeitstage einsetzen: NETTOARBEITSTAGE und ARBEITSTAG.
In Ihrem Fall, in dem Anfangs- und Enddatum vorliegen, nutzen Sie die Funktion NETTOARBEITSTAGE.
Sie rechnet automatisch die Wochenenden (Samstag und Sonntag) aus einer Datumsdifferenz heraus.
Damit darüber hinaus auch Feiertage berücksichtigt werden, können Sie per Funktionsparameter
entsprechende Datumswerte angeben. Die generelle Funktionssyntax lautet:
=NETTOARBEITSTAGE(<Anfangsdatum>;<Enddatum>; <Matrix der Feiertage>)
In den meisten Fällen definieren Sie die "Matrix der Feiertage", indem Sie die Datumswerte in einen
Tabellenbereich eingeben und dann den Zellbezug als Funktionsparameter einfügen.
Konkret könnte das wie folgt aussehen: Beginnen Sie mit der Eingabe der Feiertage. Am besten eignet
sich dafür ein separates Tabellenblatt mit allgemeinen Berechnungsgrundlagen, das vielleicht schon in
Ihrer Arbeitsmappe vorhanden ist. Angenommen, dieses Blatt hätte den Namen "Stammdaten". Darin
geben Sie die Namen der Feiertage in Spalte A ein; die eigentlichen Datumswerte ("1.1.2003" für Neujahr
usw.) stehen dann in Zelle B1 und darunter.
Home
Home
Wenn die Feiertage definiert sind, können Sie sich der Arbeitsdauerberechnung zuwenden. Wir gehen
davon aus, dass dies in einem anderen Tabellenblatt geschehen soll. Wechseln Sie also in eine andere
Tabelle und tragen Sie das Anfangsdatum in Zelle B1 ein und das Enddatum in Zelle B2. Die "echten"
Arbeitstage ermitteln Sie dann in Zelle B3 mit einer Formel wie dieser:
=NETTOARBEITSTAGE(B1;B2;Stammdaten!$B$1:$B$11)
Die Bereichsadresse in der Tabelle "Stammdaten" hängt natürlich von der Anzahl Ihrer Feiertage ab. Das
Ergebnis der Formel ist auf jeden Fall genau der Wert, den Sie für Ihre Statistik gesucht haben.
Vielleicht ist für Sie auch die Funktion ARBEITSTAG interessant. Sie geht von einem Anfangsdatum und
einer vorgegebenen Nettoarbeitsdauer (in Tagen) aus und teilt Ihnen mit, an welchem Tag das Ende des
Zeitraums erreicht ist. Wenn Sie dieselben Basisdaten wie im letzten Beispiel zugrunde legen, können Sie
mit der Formel
=ARBEITSTAG(B1;10;Stammdaten!$B$1:$B$11)
berechnen, welcher Tag 10 "echte" Arbeitstage nach dem Datum aus Zelle B1 liegt.
Einzelne Zellen ausblenden
Wie blende ich eine Zelle aus?
Das Verfahren ist nahezu identisch mit dem Entsperren von Zellen, nur dass Sie dieses Mal die
Eigenschaft einschalten müssen:
1.
2.
3.
4.
5.
Falls Sie den Blattschutz schon eingeschaltet haben, heben Sie ihn wieder auf.
Markieren Sie die Zelle(n), die Sie ausblenden wollen.
Wählen Sie Format-Zellen an.
Wechseln Sie auf die Registerkarte Schutz.
Aktivieren Sie das Kontrollkästchen Formel ausblenden (97) bzw. Ausgeblendet (2000/2002)
und bestätigen Sie die Änderung mit Ok.
Wie zuvor wird die Eigenschaft "Ausgeblendet" erst wirksam, nachdem Sie den Blattschutz
eingeschaltet haben.
Zellen bleiben sichtbar
Ich habe einige Zellen ausgeblendet, kann sie nach Einschalten des Blattschutzes aber immer
noch sehen. Was mache ich falsch?
"Ausgeblendet" bedeutet nicht, dass die Zelle vom Bildschirm verschwindet. "Ausgeblendet"
heißt nur, dass die Zellinhalte nicht in der Bearbeitungszeile erscheinen. Sinnvoll ist das
Ausblenden von Zellen also vornehmlich für Formelzellen, wenn Sie nicht wollen, dass andere
Anwender die Berechnungsgrundlage sehen können. Es ist quasi ein Schutz Ihres
"Gedankenguts".
Home
Home
Excel-Daten nach Word übernehmen
Versionen: Excel 97, 2000 und 2002
FRAGE: Ich möchte mit einem Makro voll automatisch Daten aus Excel nach Word übernehmen. Der
Makrorekorder scheitert hier. Wie könnte eine solche Lösung aussehen?
D. Lülker
ANTWORT: Da sich Word bequem per Automation aus Excel heraus steuern lässt, gibt es für die
Datenübernahme viele mögliche Lösungen. Die folgende Prozedur zeigt das grundsätzliche Prinzip:
Sub ExcelTabelleNachWordZwischenablage()
Dim WordObj As Object
Dim WordDoc As Object
Dim i As Integer
Sheets("Tabelle1").Activate
i = ActiveSheet.UsedRange.Rows.Count
Range("A1:D" & i).Copy
On Error Resume Next
Set WordObj = GetObject(, "word.application.9")
If Err.Number = 429 Then
Set WordObj = CreateObject("word.application.9")
Err.Number = 0
End If
WordObj.Visible = True
Set WordDoc = WordObj.Documents.Add
WordObj.Selection.Paste
Application.CutCopyMode = False
Set WordObj = Nothing
Set WordDoc = Nothing
End Sub
Nachdem die Prozedur die Anzahl der ausgefüllten Zeilen in "Tabelle1" der aktuellen Arbeitsmappe
ermittelt hat, wird der Bereich A1:Dx (x=Anzahl der ausgefüllten Zeilen) in die Zwischenablage kopiert.
Dann setzen wir die Referenz auf ein Word-Objekt, erstellen hier ein neues Dokument und fügen den
Inhalt der Zwischenablage ein. Bitte beachten Sie:
·
·
·
Home
Passen Sie bei den Anweisungen "GetObject" und "CreateObject" gegebenenfalls die Nummer
der von Ihnen eingesetzten Word-Version an (8 = Word 97, 9 = Word 2000 oder 10 = Word 2002).
Wenn Sie immer einen Tabellenbereich aus der aktuellen Tabelle übernehmen möchten, können
Sie auf das Aktivieren des Blattes "Tabelle1" verzichten.
In der Prozedur wird nur der aktuelle Bereich bis Spalte D kopiert. Passen Sie den Bereichsbezug
gegebenenfalls an Ihre Tabelle an.
Home
Extrahieren von Zellinhalten mit Leerzeichen Trennung in Excel
(Formel)
Beispiel Zelle A1 Hans Huber
Formel für Vorname:
=Teil(A1;1;Finden(„ „;A1;1)-1)
Formel für Nachname: =Teil(A1;Suchen(„ „;A1;1)+1;50)
die Zahl 50 steht für die Anzahl Zeichen ab der gefundenen Position, und sollte mindestens so
gross sein, wie der Zellinhalt.
Fehlende Datenpunkte in Diagrammen
Versionen: Excel 97, 2000 und 2002
Ein häufig in Fragen an unsere Helpline angesprochenes Problem betrifft die Behandlung von fehlenden
Datenpunkten in Liniendiagrammen. Wenn Sie ein Diagramm beispielsweise auf Basis von Umsatzzahlen
erstellen, die noch nicht komplett vorliegen, lässt Excel einfach die Linienabschnitte für die Werte weg, die
Sie bisher noch nicht eingegeben haben. Die Eingabe von Nullwerten ist keine Lösung, weil die Linien
dann zwar durchgehend gezeichnet, aber ungerechtfertigten "Knicken" auf die X-Achse erscheinen
würden. Wenig bekannt ist die Tatsache, dass Sie diesen unerwünschten Effekt vermeiden und die Linien
auch über fehlende Datenpunkte hinweg weiterführen können. Zu diesem Zweck klicken Sie einfach das
entsprechende Diagramm an und rufen das Dialogfeld Extras-Optionen auf. Wechseln Sie hier auf die
Registerkarte "Diagramm" und markieren unter Leere Zelle die Option werden interpoliert. Nachdem Sie
mit Ok bestätigt haben, vervollständig Excel automatisch alle Linien auf Basis der vorhandenen Zahlen.
In einigen Fällen werden Sie allerdings feststellen, dass Excel Ihnen die Option zum Interpolieren von
Datenpunkten nicht anbietet. Das Problem tritt in der Regel bei Kombinationsdiagrammen auf, in denen
Sie beispielsweise eine Datenreihe in Form von Säulen und die anderen als Linien darstellen. Obwohl Sie
auch diese Linien eigentlich interpolieren können, ist das entsprechende Kontrollkästchen unter ExtrasOptionen deaktiviert. Hier hilft ein kleines Makro weiter, das Sie im VBA-Editor eingeben:
Sub DiagrammInterpolieren()
ActiveChart.DisplayBlanksAs = xlInterpolated
End Sub
Danach können Sie ein Diagramm anklicken und das Makro über Extras-Makro-Makros aufrufen.
Daraufhin wird die Option Leere Zellen werden interpoliert eingeschaltet, obwohl Sie im Dialogfeld ExtrasOptionen eigentlich nicht zur Verfügung steht.
In diesem Zusammenhang noch ein nützlicher Tipp: Haben Sie die gewünschte Option einmal in einem
Kombinationsdiagramm eingeschaltet, bietet es sich an, das Diagramm als Mustervorlage zu speichern.
Dazu wählen Sie das Menü Diagramm-Diagrammtyp an, wechseln auf die Registerkarte
"Benutzerdefinierte Typen" und klicken unter "Auswählen aus" auf die Option Benutzerdefiniert. Daraufhin
erscheint eine Schaltfläche Hinzufügen, über die Sie die Formate und Einstellungen des aktuellen
Diagramms als Vorlage hinterlegen können. Beim Anlegen eines neuen Kombinationsdiagramms wählen
Sie dann diese Vorlage aus und auch in dem neuen Diagramm wird die Option Leere Zellen werden
Home
Home
interpoliert bereits automatisch aktiviert sein.
Fehlerwerte in Tabellen unterdrücken
Versionen: Excel 97, 2000 und 2002
FRAGE: Wie kann ich verhindern, dass in den Ergebniszellen meines Tabellenmodells Fehlerwerte
angezeigt werden, solange ich noch nicht alle Zellen ausgefüllt habe, auf denen das Ergebnis beruht?
H. Stremmler
ANTWORT: Prinzipiell ist es natürlich sinnvoll, fehlerhafte Formeln kenntlich zu machen. Anhand von
Fehlerwerten wie "#BEZUG!", "#WERT!" oder "#DIV/0!" sehen Sie sofort, woran es hapert.
Manchmal ergeben sich Fehlerwerte aber nur deshalb, weil bestimmte Zellen noch nicht mit Inhalten
gefüllt worden sind. Dann sollte der Benutzer natürlich nicht durch Standard-Fehlerwerte irritiert werden,
zumal sie ohnehin verschwinden, wenn alle Eingabezellen mit Werten belegt sind.
Dazu ein einfaches Beispiel: Stellen Sie sich vor, Sie würden in Zelle B5 den Umsatz des laufenden
Jahres erfassen und in Zelle B6 die Anzahl der Monate, in denen der Umsatz erwirtschaftet wurde. Zelle
B8 soll anschließend den durchschnittlichen monatlichen Umsatz ausgeben, und zwar mit folgender
Formel:
=B5/B6
Solange Sie weder den Umsatz noch die Anzahl der Monate oder solange Sie nur den Umsatz
eingetragen haben, liefert die Formel den Fehlerwert "#DIV/0!". Das ist logisch, denn ohne die
Monatsanzahl handelt es sich um eine Division durch Null. Wenn aber klar ist, dass die Monate
eingegeben werden müssen, können Sie auf die Ausgabe des Fehlerwertes verzichten.
Das erreichen Sie mit einer WENN-Abfrage, in der Sie das Formelergebnis auf Fehler überprüfen. Sollte
ein Fehler auftreten, lassen Sie die WENN-Funktion entweder eine leere Zeichenfolge oder einen
beschreibenden Text ausgeben. Ansonsten lassen Sie die Formel normal berechnen. In diesem Fall
unterdrücken Sie den Standard-Fehlerwert wie folgt:
=WENN(ISTFEHLER(B5/B6);"";B5/B6)
Oder wenn Sie den Benutzer auf die noch fehlende Eingabe hinweisen wollen:
=WENN(ISTFEHLER(B5/B6);"Berechnungsgrundlage fehlt";B5/B6)
Die Funktion ISTFEHLER liefert bei allen auftretenden Fehlern den logischen Wert "wahr", egal ob es sich
um eine Division durch Null, um fehlerhafte Bezüge oder etwas anderes handelt.
Beachten Sie bei dieser Form der Fehlerunterdrückung nur, dass die Formel sehr lang werden kann, da
Sie die Originalformel (hier: "B5/B6") immer zwei Mal eintragen müssen - nach dem generellen Muster:
Home
Home
=WENN(ISTFEHLER(<Originalformel>);<Wert bei Fehler>;
<Originalformel>)
Flexibles Kopieren in Excel 97 und 2000
Versionen: Excel 97 und 2000
In Ausgabe 39/2001 haben wir in einem Tip für Excel 2002 gezeigt, wie Sie Zellen und Bereiche
mit Hilfe von SmartTags noch flexibler kopieren können. Uns haben zahlreiche Anfragen von
Lesern erreicht, die die neue Excel-Version noch nicht einsetzen und wissen möchten, ob es
ähnliche Möglichkeiten auch in Excel 97 und 2000 gibt. Tatsächlich kommen Sie auch ohne
Update in den meisten Fällen zum Ziel, aber SmartTags gibt es natürlich nicht und es wird daher
ein wenig umständlicher.
Also: Markieren Sie einen beliebigen Tabellenbereich, wählen Sie das Menü BearbeitenKopieren an und probieren Sie dann aus:
Alle Formate der Ursprungszellen beibehalten
Sowohl Inhalte als auch Formate der markierten Zellen werden übertragen und überschreiben
alle Inhalte und Einstellungen im Zielbereich. In Excel 97/2000 drücken Sie dazu an der
Zielposition einfach Strg+V oder wählen das Menü Bearbeiten-Einfügen an.
Formatierung der Zielzellen übernehmen
Nur Inhalte (Werte und Formeln) kopieren. Die Formatierung im Zielbereich bleibt erhalten.
Wählen Sie in Excel 97/2000 das Menü Bearbeiten-Inhalte einfügen an, markieren Sie die
Option Formeln und bestätigen Sie mit Ok.
Werte und Zahlenformate
Inhalte und Formate werden übertragen. Bei Formeln fügt Excel nur die aktuellen Ergebnisse
ein. In Excel 97/2000 geht das nur in zwei Durchgängen: Wählen Sie zunächst das Menü
Bearbeiten-Inhalte einfügen an, markieren Sie die Option Werte und bestätigen Sie mit Ok.
Direkt im Anschluß wiederholen Sie den Vorgang noch einmal; diesmal verwenden Sie
allerdings die Option Formate.
Breite der Ursprungsspalte beibehalten
Neben Inhalten und Formaten werden auch die Einstellungen für die Spaltenbreite übertragen.
Auch das geht in Excel 97/2000 nur in zwei Schritten: Nachdem Sie die Markierung ganz normal
mit Bearbeiten-Einfügen eingefügt haben, rufen Sie direkt danach das Dialogfeld BearbeitenInhalte einfügen auf, markieren die Option Spaltenbreite und bestätigen mit Ok.
Nur Formatierung
Kopiert nur die Formateinstellungen und überschreibt keine Zellinhalte. In Excel 97/2000 wählen
Sie dazu das Menü Bearbeiten-Inhalte einfügen an, aktivieren Sie die Option Formate und
klicken Sie auf Ok.
Zellen verknüpfen
Kopiert die Formate und fügt anstelle der Zellinhalte Verknüpfungen auf die entsprechenden
Home
Home
Zielzellen in die Tabelle ein. Wählen Sie das Menü Bearbeiten-Inhalte einfügen an und klicken
Sie auf Verknüpfen.
Formatierte Zellen mit Text kombinieren
Versionen: Excel 97, 2000 und 2002
FRAGE: Ich benutze in Excel häufig die Möglichkeit, eine Zahl oder Formel mit Text zu verknüpfen, z.B.:
="Das Ergebnis ist: " & SUMME(A2:A4)
Wie kann ich die Zahl im Ergebnis in dieser Zelle formatieren? Die normale Zahlenformatierung wirkt ja
nicht mehr, da sich Text in der Zelle befindet.
E. von Göler
ANTWORT: Das Problem in diesem Fall besteht tatsächlich darin, dass der Zellinhalt von Excel als
Zeichenkette behandelt wird und normale Zahlenformate daher nicht verwendet werden können. Mit
einem kleinen Trick kommen Sie aber dennoch zum Ziel, denn Excel bietet genau für diese Fälle die
Funktion TEXT an. Mit ihrer Hilfe können Sie eine Zahl formatieren und dann in eine Zeichenkette
umwandeln. Zu diesem Zweck übergeben Sie der Funktion einmal die gewünschte Zahl und zum anderen
das Zahlenformat in der Form, in der es auch im Dialogfeld Format-Zellen auf der Registerkarte "Zahlen"
angegeben wird. Also zum Beispiel:
="Das Ergebnis ist: " & TEXT(SUMME(A2:A4);"#.##0,00 EUR")
In der Tabelle erscheint das Ergebnis dann zum Beispiel so:
Das Ergebnis ist: 2.389,90 EUR
Formel ohne Änderung kopieren
Versionen: Excel 97, 2000 und 2002
FRAGE: Wenn ich eine Formel kopiere, paßt Excel automatisch alle relativen Bezüge auf die
neue Zelle an. In den meisten Fällen ist das auch wünschenswert, aber manchmal möchte ich
das Ergebnis einer Berechnung ganz einfach nur in einer anderen Zelle darstellen und dann
zerstört die automatische Anpassung die komplette Formel. Kann man diese automatischen
Änderungen irgendwie unterbinden?
T. Rollfs
ANTWORT: Da es gerade Sinn und Zweck relativer Bezüge ist, daß sie von Excel automatisch
angepaßt werden, können Sie diese Funktion nicht unterbinden. Es gibt aber zwei mögliche
Lösung für Ihr Problem:
·
Home
Sie wandeln alle relativen Bezüge in so einer Formel in absolute Bezüge um. Dazu
müssen Sie die Formel im Bearbeitungsmodus (F2) markieren und dann F4 drücken.
Excel kennzeichnet daraufhin jede Spalten- und Zeilenbezeichnung durch ein
Dollarzeichen. Sie können die Formel dann beliebig verschieben, ohne daß sich die
Bezüge ändern.
Home
·
Schneller und eleganter ist die folgende Methode: Markieren Sie die Formel im
Bearbeitungsmodus (F2) und drücken Sie Strg+C. In der Zielzelle drücken Sie dann
einfach Strg+V und die Formel wird ohne Änderungen eingefügt. Dabei bleiben auch die
relativen Bezüge erhalten, so daß man sie noch nutzen kann, wenn Sie die Formel
erneut kopieren möchten.
Formeln teilweise berechnen
Versionen: Excel 97, 2000 und 2002
Wenn Sie den Fehler in einer Formel nicht durch Syntax-Prüfung finden können oder Ihnen bei
einer bereits angenommenen Formel das Ergebnis verdächtig vorkommt, gibt es eine wenig
bekannte, aber sehr effektive Methode, um einem Fehler auf die Spur zu kommen:
1. Wenn die Formel bereits angenommen, also mit Return abgeschlossen und berechnet
wurde, setzen Sie den Cursor auf die entsprechende Zelle und wechseln mit F2 in den
Bearbeitungsmodus. Bei einer Formel, die noch nicht von Excel angenommen wurde, sollten
Sie sich noch im Modus "Bearbeiten" befinden.
2. Sie können nun gezielt bestimmte Teile der Formel berechnen und auf diese Weise
herausfinden, wo sich ein Fehlerwert ergibt bzw. eine falsche Zahl geliefert wird. Zu diesem
Zweck wird der entsprechende Ausdruck einfach markiert. Sie wählen ihn also bei
gedrückter linker Maustaste mit dem Mauszeiger aus oder markieren ihn über die Tastatur
mit Umschalt+Cursor links.
3. Drücken Sie anschließend F9. Excel berechnet daraufhin nur den ausgewählten Teil der
Formel und ersetzt die Markierung durch das Ergebnis.
4. Sie können ohne weiteres noch weitere Teile der Formel markieren und sie mit F9
berechnen lassen.
5. Wichtig ist, daß Sie den Vorgang auf jeden Fall mit Esc und nicht mit Return abschließen,
weil Excel die Formel andernfalls ohne die Ausdrücke, sondern lediglich mit den
Ergebnissen annehmen würde.
Diese nützliche Tip zur Fehlersuche in Formeln funktioniert in allen Excel-Versionen. Mit Excel
2002 steht Ihnen allerdings eine noch komfortablere Funktion zur Verfügung: die
Formelauswertung, die Sie über das Menü Extras-Formelüberwachung starten können. Eine
genaue Beschreibung finden Sie im Bonus-Tip unserer Ausgabe 28/2001.
Geburtstage und Altersberechnung
Versionen: Excel 97, 2000 und 2002/XP
Wir haben uns in Excel Weekly bereits mehrfach mit Berechnungen rund um Datumsangaben beschäftigt.
Ein Thema, das aber immer wieder in der Helpline auftaucht, betrifft den Umgang mit Geburtstagen und
Altersberechnungen. Wir möchten Ihnen im Folgenden daher einige nützliche Tipps geben, um effektiver
mit Geburtstagslisten und ähnlichen Tabellen zu arbeiten. Das grundsätzliche Problem mit Geburtstagen
in Excel besteht darin, dass Sie sie nicht ohne weiteres sinnvoll sortieren können, um eine
Geburtstagsliste zu erstellen.
Wenn Sie den Geburtstag als Sortierkriterium verwenden, entspricht die Reihenfolge lediglich dem Alter
der entsprechenden Personen und nicht der Abfolge der Geburtstage während des Jahres. Der
"12.12.1956" erscheint also logischerweise vor dem "3.1.1967". Mit einigen kleinen Tricks können Sie die
Home
Home
Geburtstagsliste aber dennoch richtig nutzen. Die erste Möglichkeit besteht darin, einen aktuellen
Geburtstag durch eine entsprechende Formatierung hervorzuheben:
·
·
·
·
Markieren Sie die Zellen, in die Sie die Geburtstage eingegeben haben.
Wählen Sie das Menü Format-Bedingte Formatierung an.
Markieren Sie in der ersten Dropdown-Liste den Eintrag "Formel ist".
Geben Sie die folgende Formel ein (ersetzen Sie dabei C5 durch den Bezug der ersten
markierten Zelle mit Geburtsdaten):
=HEUTE()-DATUM(JAHR(HEUTE());MONAT(C5);TAG(C5))=0
·
Klicken Sie auf Format und legen Sie die Formatierung fest, mit der ein anstehender Geburtstag
hervorgehoben werden soll. Anbieten würde sich beispielsweise ein roter Zellhintergrund.
· Bestätigen Sie die Einstellungen mit Ok und verlassen Sie das Dialogfeld "Bedingte
Formatierung".
In Zukunft genügt es, die Geburtstagsliste einmal am Tag aufzurufen. Die hervorgehobene Markierung
zeigt automatisch, welchem Kunden, Freund oder Verwandten Sie heute gratulieren müssen. Sie können
diese Technik noch erweitern, wenn Sie beispielsweise drei Tage vor dem Geburtstag vorgewarnt werden
möchten. Fügen Sie dann im Dialog "Bedingte Formatierung" mit Hinzufügen ein weiteres Kriterium hinzu.
Wählen Sie eine andere Formatierung aus (beispielsweise einen grünen Hintergrund) und verwenden Sie
die folgende Formel:
=HEUTE()-DATUM(JAHR(HEUTE());MONAT(C5);TAG(C5))=3
Möchten Sie die Liste dennoch so sortieren, dass die Geburtstage in der richtigen Reihenfolge angezeigt
werden, können Sie sich mit einer Zusatzspalte behelfen. In dieser Spalte berechnen Sie ganz einfach mit
der folgenden Formel das Geburtstagsdatum im aktuellen Jahr:
=DATUM(JAHR(JETZT());MONAT(C5);TAG(C5))
Ersetzen Sie dabei C5 durch die Zelle mit dem ersten Geburtstag und kopieren Sie die Formel in die
übrigen Zeilen der Liste. Danach führen Sie eine Sortierung nach dieser Spalte durch und schon haben
Sie eine Geburtstagsliste, die Sie beispielsweise ausdrucken und neben den Kalender hängen können.
Bevorzugen Sie stattdessen die elektronische Version der Geburtstagsliste, gibt es noch eine
interessantere Lösung: Erstellen Sie eine Zusatzspalte, in der für jede Person jeweils der nächste
Geburtstag berechnet wird. Nach dem Geburtstag des aktuellen Jahres wird also der Geburtstag des
nächsten Jahres berechnet, so dass beim Sortieren der Liste in jedem Fall der nächste anstehende
Geburtstag oben steht. Die Formel dazu sieht folgendermaßen aus:
=WENN(DATUM(JAHR(HEUTE());MONAT(C5);TAG(C5))
<HEUTE();DATUM(JAHR(HEUTE())+1;MONAT(C5);TAG(C5));
DATUM(JAHR(HEUTE());MONAT(C5);TAG(C5)))
Zu guter letzt möchten wir Ihnen noch eine kleine benutzerdefinierte Funktion vorstellen, die Ihnen bei der
Altersberechnung behilflich sein kann:
Function funcLebensalter(dtGeburtsdatum, _
Home
Home
Optional dtStichtag) As Integer
If IsNull(dtGeburtsdatum) Then
funcAltersberechnung = Null
Exit Function
End If
If IsMissing(dtStichtag) Then dtStichtag = Date
If DateSerial(Year(dtStichtag), Month(dtGeburtsdatum), _
Day(dtGeburtsdatum)) > dtStichtag Then
funcLebensalter = DateDiff("yyyy", dtGeburtsdatum, _
dtStichtag) - 1
Else
funcLebensalter = DateDiff("yyyy", dtGeburtsdatum, _
dtStichtag)
End If
End Function
Nachdem Sie die Funktion im VBA-Editor eingegeben haben, können Sie sie in Ihren Tabellen nutzen, um
das Alter einer Person auf Basis des Geburtstagsdatums zu berechnen. Dabei wird berücksichtigt, ob der
Geburtstag im aktuellen Jahr bereits statt gefunden hat oder nicht. Zum Beispiel (C5 ist die Zelle mit dem
Geburtsdatum):
=funcLebensalter(C5)
Interessant an der Funktion ist der zweite Parameter, den Sie auf Wunsch verwenden können:
Standardmäßig wird das Alter auf Basis des aktuellen Datums berechnet, aber Sie können auch einen
bestimmten Stichtag angeben. Zum Beispiel:
=funcLebensalter(C5;DATWERT("14.9.2002"))
Diese Formel liefert Ihnen das Alter der Person am 14.9.2002 (Geburtstdatum in C5).
Gefundene Datensaetze automatisch loeschen
-----------------------------------------Versionen: Excel 97, 2000 und 2002
Mit den Filterfunktionen von Excel koennen Sie Listen
schnell und komfortabel auswerten. Wenige Mausklicks
genuegen, um alle Eintraege ausfindig zu machen, die
bestimmten Kriterien entsprechen. Bei Bedarf koennen Sie die
Fundstellen sogar in einen anderen Bereich kopieren, aber es
gibt standardmaessig keine Moeglichkeit, die gefundenen
Listenzeilen zu loeschen. Wenn Sie beispielsweise eine
Home
Home
offene Posten-Liste fuehren und alle bezahlten Rechnungen
loeschen wollen, muessen Sie diesen Vorgang manuell
ausfuehren. Alternativ dazu koennen Sie auch die folgende
VBA-Prozedur verwenden, die Excel um die fehlende Funktion
zum Loeschen der Fundstellen erweitert:
Sub DatensaetzeLoeschen()
Antwort = MsgBox("Alle sichtbaren Zeilen loeschen?", _
vbYesNo, "Zeilen loeschen")
If Antwort = vbNo Then GoTo Ende
Application.ScreenUpdating = False
ErsteZeile = ActiveCell.CurrentRegion.Row + 1
ErsteSpalte = ActiveCell.CurrentRegion.Column
LetzteZeile = ErsteZeile + _
ActiveCell.CurrentRegion.Rows.Count - 2
LetzteSpalte = ErsteSpalte + _
ActiveCell.CurrentRegion.Columns.Count - 1
Set SichtbarerBereich = Range(Cells(ErsteZeile, _
ErsteSpalte), Cells(LetzteZeile, _
LetzteSpalte)).SpecialCells(xlVisible)
AnzahlBereiche = SichtbarerBereich.Areas.Count
For Zaehler = 1 To AnzahlBereiche
Range(SichtbarerBereich.Areas(1).Address).Delete _
Shift:=xlUp
Next
Application.ScreenUpdating = True
Ende:
End Sub
Nachdem Sie die Prozedur im VBA-Editor eingegeben haben,
koennen Sie sie folgendermassen einsetzen:
1. Definieren Sie einen Filter, so dass in der Liste nur
noch die Eintraege angezeigt werden, die Sie loeschen
wollen.
2. Klicken Sie auf eine beliebige Zelle in der Liste.
Home
Home
3. Starten Sie das Makro "DatensaetzeLoeschen" ueber das
Dialogfeld EXTRAS-MAKRO-MAKROS.
4. Nachdem die Sicherheitsabfrage mit JA bestaetigt haben,
werden die gefundenen Listenzeilen geloescht.
5. Auf dem Bildschirm ist daraufhin nur noch die erste
Listenzeile mit den Spaltenueberschriften zu sehen, aber
mit DATEN-FILTER-ALLE ANZEIGEN blenden Sie den Rest der
Liste wieder ein.
Kurz zur Funktionsweise des Makros: Nachdem die
Sicherheitsabfrage mit JA beantwortet wurde, ermittelt die
VBA-Prozedur zunaechst einmal die erste und letzte Zeile
sowie die erste und letzte Spalte des Datenbereiches.
Anschliessend werden alle sichtbaren Zellen des
Datenbereiches markiert. Da es sich um ein Filterergebnis
handelt, sind zwischen den sichtbaren Zeilen die nicht
passenden Eintraege ausgeblendet worden und die Markierung
besteht dementsprechend aus mehreren Bereichen. Die Anzahl
der Bereiche wird daraufhin mit "Areas.Count" ermittelt und
eine For-Next-Schleife loescht jeden Bereich mit "Delete".
Geschützte Zellen per VBA bearbeiten
Können gesperrte Zellen eines geschützten Tabellenblatts mit einem VBA-Makro manipuliert werden?
Ohne weiteres ist das nicht möglich. Aber es gibt einen Trick, mit dem der Anwenderschutz bestehen
bleibt, während VBA-Prozeduren uneingeschränkten Zugriff auf die Zellen des geschützten Blatts
erhalten. Der Trick besteht darin, die "Protect"-Methode zusammen mit dem Parameter
"UserInterfaceOnly" aufzurufen - zum Beispiel:
ActiveSheet.Protect UserInterfaceOnly:=True
Wenn Sie diese Zeile in Ihrem Makrocode einfügen, können Sie im nachfolgenden Programmcode in der
gewohnten Weise auf das Tabellenblatt zugreifen, so als wäre es gar nicht geschützt. Für den Anwender
ist das Blatt jedoch weiterhin geschützt.
Grafiken in Excel bearbeiten
Versionen: Excel 97, 2000 und 2002
FRAGE: Ich möchte ein eingescanntes Foto in ein Tabellenblatt einfügen. Im Prinzip klappt das
problemlos. Nur hat das Foto einen Rahmen, den ich gerne entfernen möchte. Wenn ich jedoch
die Eckpunkte der Grafik mit der Maus verschiebe, ändert sich nur die Größe, - das Foto selbst
bleibt gleich. Muss ich immer erst ein Grafikprogramm bemühen, um Bilder entsprechend
vorzubereiten oder kann ich das auch in Excel erledigen?
K. Wegener
Home
Home
ANTWORT: Wenn Sie ein Foto erst einmal eingescannt oder direkt von einer Digitalkamera
überspielt haben, können Sie die weitere Bearbeitung komplett in Excel erledigen. Natürlich
ersetzt Excel kein Grafikprogramm mit Effekt- und Retuschewerkzeugen. Dennoch sind die
Bearbeitungsfunktionen recht ansehnlich.
So lösen Sie auch Ihr Problem mit den unerwünschten Rahmen. Dafür nutzen Sie das
"Zuschneide-Tool" aus der Symbolleiste Grafik. Wenn diese Symbolleiste nach einem Mausklick
auf die Grafik nicht angezeigt wird, blenden Sie sie mit dem Befehl Ansicht-Symbolleisten-Grafik
ein.
Etwa in der Mitte der Symbolleiste finden Sie das Symbol Zuschneiden. Aktivieren Sie es per
Mausklick und zeigen Sie dann auf einen der Rahmenpunkte der Grafik. Der Mauszeiger nimmt
darüber dieselbe Form an wie das Symbol in der Symbolleiste. Wenn Sie den Rahmenpunkt
jetzt mit der Maus in Richtung Grafikmittelpunkt ziehen, entfernt Excel den entsprechenden
Bildbereich. Am besten sind dafür die mittleren Rahmenpunkte geeignet, da sie eine beliebige
Größenänderung erlauben. Ein "Zuschneiden" der Eckpunkte ist nur dann sinnvoll, wenn der zu
entfernende Bereich symmetrisch zu den Bildproportionen ist. Probieren Sie es aus, dann
werden Sie merken, was damit gemeint ist.
Um den Zuschneidemodus zu beenden, klicken Sie erneut auf das Symbol Zuschneiden in der
Grafik-Symbolleiste. Die Rahmenpunkte der Grafik funktionieren dann wieder in der
herkömmlichen Art und Weise: Sofern Sie die Eckpunkte mit der Maus ziehen, ändern Sie die
Größe unter Beibehaltung des Seitenverhältnisses; sofern Sie einen der Rahmenmittelpunkte
ziehen, stauchen oder dehnen Sie die Grafik in der entsprechenden Richtung.
Große Tabellenbereiche komfortabel markieren
Versionen: Excel 97, 2000 und 2003
Wenn Sie einen größeren Tabellenausschnitt mit der Maus auswählen möchte, wird die
Markierung mit hoher Geschwindigkeit erweitert, sobald der rechte oder untere Fensterrand
erreicht ist. Das ganze lässt sich schwer kontrollieren, denn auch der Versuch, die Markierung
zu verkleinern, läuft wieder mit hoher Geschwindigkeit ab. Für die Markierung von
umfangreichen Bereichen gibt es daher drei empfehlenswerte Techniken:
·
·
·
Home
Wenn Sie die Markierung im sichtbaren Tabellenausschnitt nur langsam spalten- oder
zeilenweise erweitern, erhöht sich die Geschwindigkeit nur geringfügig, sobald Sie an
den Fensterrand gelangt sind. So lässt sich sehr genau kontrollieren, welche Zellen
ausgewählt werden.
Eine wenig bekannte Technik sieht folgendermaßen aus: Klicken Sie auf die Zelle in der
linken oberen Ecke der gewünschten Markierung. Dann verwenden Sie die
Bildlaufleisten, um in die rechte untere Ecke der gewünschten Markierung zu scrollen.
Schließlich drücken Sie die Umschalt-Taste und halten sie gedrückt, während Sie in die
rechte untere Ecke der Markierung klicken.
Sollten Sie den genauen Bezug der Zelle in der rechten unteren Ecke der Markierung
kennen, geht es auch folgendermaßen: Klicken Sie auf die Zelle in der linken oberen
Ecke der Markierung. Dann drücken Sie F5, geben den Bezug der Zelle in der rechten
Home
unteren Ecke der gewünschten Markierung ein, drücken die Umschalt-Taste und halten
sie gedrückt, während Sie auf Ok klicken.
Größte Werte aus einem Bereich ermitteln
Versionen: Excel 97, 2000 und 2002
FRAGE: Ich möchte umfangreiche Datenmengen schnell auswerten. Gibt es beispielsweise eine schnelle
Methode, die fünf größten Werte aus einem bestimmten Bereich zu ermitteln?
J. Ulrich
ANTWORT: Dieses Problem läßt sich über die Tabellenfunktion KGRÖSSTE() lösen, also ohne jegliche
Programmierung. Nehmen wir einmal an, Sie haben Daten im Bereich A1:A100 eingegeben. Jetzt
möchten sie die fünf höchsten Werte ermitteln. Geben Sie dazu die folgenden Tabellenfunktionen ein:
=KGRÖSSTE($A$1:$A$100;1)
=KGRÖSSTE($A$1:$A$100;2)
=KGRÖSSTE($A$1:$A$100;3)
=KGRÖSSTE($A$1:$A$100;4)
=KGRÖSSTE($A$1:$A$100;5)
Im ersten Argument geben Sie den Bereich an, aus dem die Max-Werte ermittelt werden sollen. Im
zweiten Argument geben Sie den Rang an. Noch ein kleiner Tip: Natürlich gibt es auch eine
Tabellenfunktion, die die kleinsten Werte aus einem Bereich ermittelt. Sie heißt entsprechend:
KKLEINSTE()
Inhaltsverzeichnis für Arbeitsmappen automatisch anlegen
Versionen: Excel 97, 2000 und 2002/XP
Bei Arbeitsmappen mit sehr vielen Tabellen geht schnell mal der Überblick verloren. So muss die
gewünschte Tabelle erst in der ganzen Arbeitsmappe gesucht werden. Eine Hilfe dazu möchte ich Ihnen
in dieser Kolumne vorstellen. Dabei wird eine neue Tabelle mit den Namen "Inhalt" ganz zu Beginn der
Arbeitsmappe eingefügt. Danach werden die Namen aller Tabellen, die sich in der Arbeitsmappe
befinden, nacheinander in diese Tabelle geschrieben. Direkt im Anschluss an einen solchen Eintrag, wird
die jeweilige Zelle mit einem Hyperlink belegt, so dass Sie mit einem einzigen Mausklick auf die
gewünschte Tabelle wechseln können:
1. Drücken Sie die Tastenkombination Alt+F11, um in die Entwicklungsumgebung zu gelangen.
2. Wählen Sie aus dem Menü Einfügen den Befehl Modul. Erfassen Sie folgendes Makro:
Sub MappenInhaltZusammenstellen()
Dim Tabelle As Worksheet
Dim i As Integer
Worksheets.Add.Move before:=Worksheets(1)
ActiveSheet.Name = "Inhalt"
Cells(2, 2).Value = "Enthaltene Blätter"
Home
Home
i=3
For Each Tabelle In ActiveWorkbook.Worksheets
If Tabelle.Name <> "Inhalt" Then
Cells(i, 2).Value = Tabelle.Name
Tabelle.Hyperlinks.Add Anchor:=Cells(i, 2), _
Address:="", SubAddress:= Tabelle.Name & _
"!A1", ScreenTip:="Hyperlink klicken", _
TextToDisplay:=Tabelle.Name
i=i+1
End If
Next Tabelle
End Sub
Fügen Sie im ersten Schritt eine neue Tabelle über die Methode "Add" ein. Verschieben Sie diese neue
Tabelle über die die Methode "Move" an den Beginn Ihrer Arbeitsmappe. Geben Sie dabei die genaue
Position über das Auflistungsobjekt "Worksheets" und dem Index "1" an. Geben Sie der neu eingefügten
Tabelle über die Eigenschaft "Name" den Namen "Inhalt". Erfassen Sie jetzt eine Überschrift für diese
Tabelle, indem Sie das Auflistungsobjekt "Cells" ansprechen und dabei die genau Zeilen- (erstes
Argument) und Spaltenposition (zweites Argument) angeben.
Durchlaufen Sie danach eine Schleife, mit deren Hilfe Sie jede einzelne Tabelle der Arbeitsmappe
ansprechen und die Namen der einzelnen Tabelle in die Tabelle "Inhalt" übertragen. Im Anschluss daran
werden die eingetragenen Tabellennamen über die Methode "Add" verlinkt, die Sie auf das Objekt
"Hyperlinks" anwenden. So ist dann der direkte Sprung auf die gewünschte Tabelle möglich.
Integrierte Dialoge von Excel
Versionen: Excel 97, 2000 und 2002
Bei der Programmierung mit Dialogen müssen Sie nicht unbedingt eigene Dialoge erstellen. Oft reicht es
auch aus, wenn Sie bereits vorhandene Dialoge in Excel für Ihre eigenen Projekte nutzen. So müssen Sie
das Rad nicht neu erfinden.
Der am häufigst eingesetzte integrierte Dialog ist der Öffnen-Dialog. Normalerweise können Sie ExcelArbeitsmappen auch direkt mit einem Makro öffnen, ohne den Öffnen-Dialog einzusetzen. Stehen jedoch
mehrere Arbeitsmappen zur Auswahl, zwischen denen sich der Anwender entscheiden muss, verwenden
Sie den integrierten Öffnen-Dialog und lassen den Anwender die gewünschte Arbeitsmappe auswählen.
Der Vorteil liegt auf der Hand: Sie brauchen sich um bestimmte Dinge, wie das Anzeigen der
Arbeitsmappen im Dialog oder auch das Markieren und Öffnen der Mappen, nicht selbst zu kümmern. Die
gesamte Funktionalität ist schon vorhanden:
Sub DialogÖffnen()
Dim b As Boolean
b = Application.Dialogs(xlDialogFindFile).Show
MsgBox b
End Sub
Home
Home
Definieren Sie zuerst einmal eine Variable vom Typ Boolean, um zu ermitteln, ob eine Datei geöffnet
worden ist oder nicht. Wurde über den Öffnen-Dialog eine Datei geöffnet, steht in der Variablen b der Wert
Wahr. Wurde dagegen im Dialog Öffnen auf die Schaltfläche Abbrechen geklickt, meldet die Variable b
den Wert Falsch.
Ein weiteres Beispiel ist der Dialog Suchen, den Sie wie folgt aufrufen:
Sub DialogSuchen()
Application.Dialogs(xlDialogFormulaFind).Show
End Sub
Tipp: Wenn Sie sich informieren möchten, welche integrierten Dialoge es in Excel gibt, und wie sie
heißen, rufen Sie in der Entwicklungsumgebung den Objektkatalog auf und schauen unter der Rubrik
"xlBuiltinDialog" nach.
Internet-Tabellen ganz einfach übernehmen
Versionen: Excel 97, 2000 und 2002/XP
Zinssätze, Währungs- und Aktienkurse, Preislisten... Es gibt nichts, was Sie im Internet nicht
finden können. Interessant wäre eine schnelle und komfortable Methode, derartige
Informationen aus dem Internet Explorer direkt und ohne Umwege zur weiteren Bearbeitung
nach Excel zu übernehmen. Eine Drag & Drop-Technik in Excel 2000/2002 hilft weiter:
1. Starten Sie Excel und öffnen bzw. erstellen Sie die Arbeitsmappe für die Internetdaten.
2. Markieren Sie im Internet Explorer die Tabelle, die Sie nach Excel übernehmen möchten.
3. Bewegen Sie den Mauszeiger über die Markierung, drücken Sie die linke Maustaste und
halten Sie sie gedrückt, während Sie die Markierung in die Taskleiste auf das Excel-Symbol
ziehen.
4. Warten Sie, bis sich das Excel-Fenster geöffnet hat, bewegen Sie den Mauszeiger über die
linke obere Zelle des Zielbereichs und lassen Sie die Maustaste los. Die Daten aus dem
Explorer erscheinen daraufhin mit allen Formatierungen in Ihrer Excel-Arbeitsmappe.
Komfortable Navigation mit der Excel-Lupe
Versionen: Excel 97, 2000 und 2002
Excel bietet reichlich Platz für Ihre Daten. So sind Tabellen mit mehreren hundert Zeilen und
entsprechend vielen Spalten keine Seltenheit. Doch je größer ein Tabellenmodell wird, desto schwieriger
wird es auch, schnell zum gerade benötigten Bereich zu springen. Wenn Sie den Zoom-Faktor
verkleinern, können Sie die Zahlen nicht mehr lesen. Und wenn Sie mit der Originalgröße arbeiten, dauert
das Blättern ungebührlich lange.
Ein Ausweg aus dem Dilemma ist die Lupenfunktion, die wir in diesem Beitrag vorstellen. Damit teilen Sie
den Excel-Bildschirm in zwei Fenster auf. In dem einen Fenster sehen Sie Ihre Tabelle in einer
verkleinerten Darstellung, so dass Sie sich schnell zu einem bestimmten Zellbereich bewegen können. In
dem anderen Fenster erscheinen die gerade markierte Zelle sowie der umgebende Bereich in der
Home
Home
Originalgröße. So können Sie bequem die Zellinhalte lesen und/oder Eingaben vornehmen.
Um die Excel-Lupe einzurichten, gehen Sie folgendermaßen vor:
·
·
Legen Sie eine neue Excel-Datei an und wechseln Sie mit Alt+F11 in den Visual Basic-Editor.
Öffnen Sie mit Einfügen-Klassenmodul das Fenster eines neuen Klassenmoduls. Über das
Klassenmodul definieren Sie eine neue Objektklasse mit speziellen Eigenschaften und Methoden.
So können Sie später das aktuelle Tabellenblatt als Objekt an die Klasse übergeben und mit den
Eigenschaften und Methoden des Klassenmoduls manipulieren.
· Weisen Sie der neuen Klasse zuerst einen eindeutigen Namen zu, indem Sie im
Eigenschaftenfenster des Visual Basic-Editors im Feld "(Name)" die Bezeichnung "clsLupe"
eingeben.
· Danach setzen Sie den Cursor wieder in das Codefenster des Klassenmoduls und deklarieren
eine Objektvariable namens "objBlatt":
Public WithEvents objBlatt As Worksheet
·
Beachten Sie den Zusatz "WithEvents"! Er erlaubt die Überwachung von Ereignissen, die von
dem zugrunde liegenden Objekt, in diesem Fall von einem Tabellenblatt, ausgelöst werden. Mit
den weiteren Codezeilen des Klassenmoduls bestimmen Sie genau, was bei einem bestimmten
Ereignis passieren soll.
· Unter der Deklarationszeile legen Sie drei Konstanten fest. Sie bestimmen a) die Breite des
Lupenfensters, b) die Höhe des Lupenfensters und c) die Hintergrundfarbe, mit der die gerade
markierte Zelle hervorgehoben wird:
Const LUPENBREITE As Long = 200
Const LUPENHOEHE As Long = 200
Const CURSORFARBE = 36
·
Wenn Sie beim Praxiseinsatz feststellen, dass das Fenster zu breit oder hoch ist oder dass die
Hintergrundfarbe nicht zu Ihren eigenen Zellformatierungen passt, können Sie diese Werte
individuell anpassen.
· In die nächsten drei Zeilen tragen Sie Variablendeklarationen ein, die von mehreren Prozeduren
des Klassenmoduls benötigt werden. Sie müssen deshalb auf Modulebene deklariert werden.
Dim objZoomfenster As Window
Dim objAlteAuswahl As Range
Dim varZellfarbe As Variant
·
Es folgt die Prozedur, die beim Aufruf/Initialisieren der Klasse ausgeführt wird:
Private Sub Class_Initialize()
Dim objOriginal As Window
Dim lngExcelBreite As Long
lngExcelBreite = Application.UsableWidth
Set objOriginal = ActiveWindow
With objOriginal
.WindowState = xlNormal
.Left = 2
.Top = 2
Home
Home
.Width = lngExcelBreite-LUPENBREITE
.Height = Application.UsableHeight
.NewWindow
End With
Set objZoomfenster = ActiveWindow
With objZoomfenster
.WindowState = xlNormal
.Caption = "Blattlupe"
.Left = lngExcelBreite-LUPENBREITE
.Top = 2
.Width = LUPENBREITE
.Height = LUPENHOEHE
.Zoom = 100
End With
objOriginal.Activate
SetzeLupe Selection
End Sub
Der Prozedurcode dient in erster Linie dazu, die Fenster für das Tabellenblatt und den Lupenbereich
anzuordnen. Beim Lupenfenster handelt es sich um ein neues Fenster der aktuellen Mappe, das oben
rechts platziert wird und auf einen Zoomfaktor von 100% eingestellt wird.
Beachten Sie noch die letzte Zeile "SetzeLupe Selection". Damit rufen Sie eine Hilfsprozedur auf, die den
im Lupenfenster angezeigten Bereich gleich an die aktuelle Zellmarkierung im normalen Tabellenfenster
anpasst. Der genaue Prozedurcode folgt später.
·
Darunter fügen Sie die Prozedur ein, die beim Beenden der Klasse ausgeführt wird:
Private Sub Class_Terminate()
objZoomfenster.Close
If Not objAlteAuswahl Is Nothing Then
objAlteAuswahl.Interior.ColorIndex = varZellfarbe
End If
Application.ScreenUpdating = True
End Sub
·
·
Home
Die Prozedur schließt das Fenster mit der Blattlupe. Anschließend wird die Hintergrundfarbe der
zuletzt markierten Zelle wieder auf ihren ursprünglichen Zustand gesetzt (entsprechende
Vorarbeit leistet wiederum die Hilfsprozedur "SetzeLupe"). Und zuletzt aktualisieren Sie die
Bildschirmanzeige.
Mit der nächsten Prozedur steuern Sie die Aktualisierung des Lupenfensters. Darin soll immer die
Umgebung der im anderen Fenster markierten Zelle angezeigt werden. Der
programmiertechnische Aufwand ist erfreulich gering, da Sie auf die eingangs deklarierte
Objektvariable zurückgreifen können, die dank "WihtEvents" alle Ereignisse eines "Worksheet"Objekts (eines Tabellenblatts) zur Verfügung stellt. So lautet die Prozedur für die
Lupenaktualisierung:
Home
Private Sub objBlatt_SelectionChange_
(ByVal Target As Range)
SetzeLupe Target
End Sub
· Nun fehlt nur noch die schon häufiger herangezogene Hilfsprozedur "SetzeLupe":
Private Sub SetzeLupe(objAuswahl As Range)
Dim intZeile As Integer, intSpalte As Integer
If Not objAlteAuswahl Is Nothing Then
objAlteAuswahl.Interior.ColorIndex = varZellfarbe
End If
Set objAlteAuswahl = objAuswahl.Cells(1, 1)
If ActiveWindow.Caption <> objZoomfenster.Caption Then
varZellfarbe = _
objAuswahl.Cells(1, 1).Interior.ColorIndex
objAuswahl.Cells(1, 1).Interior.ColorIndex = _
CURSORFARBE
intZeile = objAuswahl.Row
intSpalte = objAuswahl.Column
With objZoomfenster
If intZeile > 2 Then
.ScrollRow = intZeile-2
Else
.ScrollRow = 1
End If
If intSpalte > 1 Then
.ScrollColumn = intSpalte-1
Else
.ScrollColumn = 1
End If
End With
Application.ScreenUpdating = True
objAuswahl.Select
End If
End Sub
Die erste If-Abfrage prüft, ob ein Objekt namens "objAlteAuswahl" gesetzt ist. Wenn das der Fall ist,
wurde bereits mit dem Lupenfenster gearbeitet. Dann muss bei einer neuen Zellmarkierung die
Hintergrundfarbe der vorherigen Zelle wieder hergestellt werden.
Danach speichert die Prozedur die momentane Auswahl in der global verfügbaren Variablen
"objAlteAuswahl". Mit der zweiten If-Abfrage stellen Sie fest, ob die Bearbeitung im Original- oder im
Lupenfenster erfolgt. Wenn Sie ohnehin in der vergrößerten Darstellung arbeiten, muss die Ansicht nicht
weiter angepasst werden. Nur wenn Sie in der Originaltabelle eine neue Zelle markieren, hebt die
Prozedur die Auswahl farblich hervor und merkt sich die bisherige Farbzuweisung in der Variablen
"varZellfarbe".
Home
Home
Im folgenden With-Block passen Sie mit ScrollRow- und ScrollColumn-Anweisungen den sichtbaren
Zellbereich im Lupenfenster an. Damit es nicht zu Fehlern kommt, testen If-Abfragen, ob Sie sich bereits
am linken oder oberen Rand der Tabelle befinden. Normalerweise ist die Blattlupe immer so eingestellt,
dass zwei Zeilen über und eine Spalte links neben der aktuellen Zelle zu sehen sind. Der Rest der
Prozedur bereinigt lediglich die Bildschirmanzeige.
Die Objektklasse für die Lupenfunktion ist damit fertig gestellt. Sie brauchen jetzt nur noch zwei
Prozeduren, die die Funktion ein- bzw. ausschalten. Dafür legen Sie mit dem Befehl Einfügen-Modul ein
neues Standardmodul an. Füllen Sie das zugehörige Codefenster mit folgenden Zeilen:
Dim objZoom As New clsLupe
Sub ZoomStart()
Set objZoom.objBlatt = ActiveSheet
End Sub
Sub ZoomEnde()
Set objZoom = Nothing
End Sub
Zu Beginn stellen Sie mit einer globalen Objektvariablen einen Verweis auf die "Lupenklasse" her. In der
Prozedur "ZoomStart" nutzen Sie die Eigenschaft "objBlatt", um Excel mitzuteilen, welche Ereignisse
überwacht werden sollen - hier also die Ereignisse des aktiven Blattes. Wenn Sie die Lupenfunktion nicht
mehr benötigen, rufen Sie die Prozedur "ZoomEnde" auf. Sie setzt die Objektvariable auf "Nothing", womit
die Klasse terminiert wird.
Beenden Sie den Visual Basic-Editor und speichern Sie die Datei mit dem eben eingefügten
Programmcode. In späteren Excel-Sitzungen müssen Sie dann nur dafür sorgen, dass diese Datei
geöffnet ist. Anschließend können Sie die Lupenfunktion in jeder anderen Arbeitsmappe nutzen.
Konkret setzen Sie die Lupenfunktion folgendermaßen ein:
1. Sorgen Sie - wie bereits erwähnt - dafür, dass die Datei mit der "Lupenklasse" geöffnet ist.
2. Öffnen Sie die Arbeitsmappe, in der Sie die Navigation mit Hilfe der Excel-Lupe vereinfachen wollen.
Verringern Sie, wenn das noch nicht der Fall ist, den Zoom-Faktor, damit möglichst viele Zellen
sichtbar sind.
3. Drücken Sie Alt+F8, um das Dialogfeld Makro anzuzeigen. In der Liste verfügbarer Makros finden Sie
auch die beiden Prozeduren zum Ein- oder Ausschalten der Lupenfunktion. Doppelklicken Sie je nach
Bedarf auf "ZoomStart" oder "ZoomEnde". Damit die Excel-Lupe keinen Fehler verursacht, muss der
Blattschutz der aktuellen Tabelle ausgeschaltet sein!
Tipp: Um den Zugriff auf das Lupenfenster zu beschleunigen, richten Sie eine neue Symbolleiste mit zwei
Schaltflächen ein, denen Sie die oben genannten Makros zuweisen. Danach steht Ihnen die Blattlupe
direkt per Mausklick zur Verfügung.
Home
Home
Komfortabler Umgang mit großen Markierungen
Versionen: Excel 97, 2000 und 2002
Wenn Sie einen umfangreichen Bereich in einer Tabelle markiert haben, ist die nachträgliche
Überprüfung der ausgewählten Zellen etwas mühselig, wenn Sie die aktuelle Markierung
erhalten möchten. Eine Möglichkeit besteht im Einsatz der Rollbalken, aber es gibt auch wenig
bekannten Shortcut: drücken Sie Strg+Umsch+', um im Uhrzeigersinn nacheinander in die vier
Ecken der aktuellen Markierung zu springen.
Kopf- und Fußzeilentricks für Excel
Versionen: Excel 97, 2000 und 2002
Viele Fragen, die uns bei der Helpline von SmartTools Publishing erreichen, drehen sich rund um das
Thema Kopf- und Fußzeilen. Im folgenden einige Tipps zur Lösung der häufigsten Probleme:
Kompletten Pfad einer Arbeitsmappe ausgeben
Die Ausgabe des Speicherortes einer Excel-Datei ist ab Version 2002 endlich über den speziellen
Platzhalter "&[Pfad]" möglich. In Excel 97 und 2000 müssen Sie sich noch mit einigen Tricks behelfen. Am
komfortabelsten dabei ist der Einsatz des kostenlosen "Jwalk Pfadinfo-Assistenten", den Sie unter der
folgenden Adresse herunterladen können:
http://www.add-in-world.com/katalog/pfadinfo2001/
Nach der Installation steht Ihnen eine neue Funktion zur Verfügung, über die Sie den aktuellen Pfad
automatisch in die Kopf- oder Fußzeile einfügen lassen können.
Start-Seitenzahl bestimmen
Die Seitennummerierung, die Sie über das Platzhalterzeichen "&[Seite]" festlegen, beginnt in Excel immer
mit "1". Eine einfache Möglichkeit, um wie in Word eine beliebige andere Start-Seitenzahl zu verwenden
(um beispielsweise mehrere Arbeitsmappen zusammenzuführen), gibt es leider nicht. Aber Sie können ein
undokumentiertes Feature von Excel nutzen, denn in der Kopf- und Fußzeilendefinition ist die
Verwendung von Plus- und Minuszeichen erlaubt. Soll beispielsweise die Nummerierung mit "10"
beginnen, geben Sie ein:
&[Seite]+10
Möchten Sie die ersten drei Seiten zwar ausdrucken, die Nummerierung aber erst auf der vierten Seite mit
"1" beginnen verwenden Sie die folgende Definition:
&[Seite]-3
Achtung: Leider funktioniert dieser Tipp nicht in Excel 2002!
Kopf- und Fußzeile für die komplette Arbeitsmappe
Wenn Sie das Menü Datei-Seite einrichten anwählen und die gewünschten Kopf- und Fußzeilen
definieren, wirkt sich das immer nur auf das aktuelle Tabellenblatt aus und nicht wie viele Anwender
Home
Home
meinen, auf die komplette Arbeitsmappe. Möchten Sie auf jedem Blatt dieselben Kopf- und Fußzeilen
verwenden, nutzen Sie einfach den folgenden Trick:
1. Wechseln Sie auf das Tabellenblatt mit der Kopf- und Fußzeile, die Sie für die komplette
Arbeitsmappe übernehmen möchten.
2. Drücken Sie die Strg-Taste und halten Sie sie gedrückt, während Sie nacheinander auf die auf die
Register der Tabellen klicken, die dieselbe Kopf- und Fußzeile erhalten sollen.
3. Wählen Sie das Menü Datei-Seite einrichten an und bestätigen Sie einfach mit Ok.
4. Excel übernimmt daraufhin die Kopf- und Fußzeilen der aktuellen Tabelle für alle markierten Blätter.
Kopf- und Fußzeilen-Standard definieren
Sie haben es satt, nach dem Anlegen einer neuen Arbeitsmappe, jedes Mal wieder die gleiche Kopf- oder
Fußzeile definieren zu müssen? Mit wenig Aufwand erreichen Sie, dass neue Arbeitsmappen in Zukunft
immer sofort die gewünschten Kopf- und Fußzeilen aufweisen:
1. Legen Sie eine neue Arbeitsmappe an und passen Sie die Kopf- und Fußzeilen an. Entweder für die
komplette Datei oder auf Wunsch auch für jedes Blatt individuell.
2. Sichern Sie die Datei unter dem Namen MUSTER.XLT im Verzeichnis XLSTART. Wichtig dabei:
Markieren Sie vorher im Speichern-Dialog als Dateityp den Eintrag "Mustervorlage".
Wenn Sie danach eine neue Datei anlegen, erstellt Excel eine Kopie der MUSTER.XLT und Sie können in
Ihrer Arbeitsmappe sofort mit den vordefinierten Kopf- und Fußzeilen arbeiten.
Laufende Summe innerhalb einer Zelle
Versionen: Excel 97, 2000 und 2002
Für viele Anwendungsbereiche wäre es nützlich, wenn Excel eine laufende Summe innerhalb einer
bestimmten Zelle führen könnte. Wenn also beispielsweise die Zelle C10 den Wert 100 enthält und Sie
hier noch einmal die Zahl 100 eingeben, sollte nach Return automatisch der Wert 200 erscheinen.
Standardmäßig hat Excel leider keine entsprechende Funktion zu bieten, aber mit Hilfe entsprechender
VBA-Prozeduren können Sie sie "nachbauen".
·
Öffnen Sie die Arbeitsmappe, in der Sie eine oder mehrere laufende Summe innerhalb einer Zelle
führen wollen.
· Wechseln Sie mit Alt+F11 in die VBA-Entwicklungsumgebung und fügen Sie ein neues Modul zur
aktuellen Arbeitsmappe hinzu.
· Geben Sie hier die folgenden Prozeduren ein:
Sub procLaufendeSummeErstellen()
Dim intReturn As Integer
With ActiveCell
If .Comment Is Nothing Then
.AddComment
Else
intReturn = MsgBox("Die Zelle enthält bereits " & _
"einen Kommentar. Möchten Sie ihn überschreiben?", _
vbYesNo + vbQuestion, "SmartTools Excel Weekly")
If intReturn = vbNo Then Exit Sub
Home
Home
End If
.Comment.Text "LS_" & Str(ActiveCell.Value)
End With
End Sub
Sub procLaufendeSummeLoeschen()
With ActiveCell
If .Comment Is Nothing Then Exit Sub
.Comment.Delete
End With
End Sub
·
Suchen Sie im Projekt-Explorer nach dem Namen Ihrer Arbeitsmappe und dann in der Kategorie
"Microsoft Excel Objekte" nach dem Namen der Tabelle für die laufenden Summen.
· Wenn Sie den Tabellennamen per Doppelklick auswählen, öffnet Excel automatisch das Modul zu
dieser Tabelle. Hier geben Sie die folgende Prozedur ein:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strAlteNotiz As String
Dim lngAlterWert As Long
With Target
If .Comment Is Nothing Then Exit Sub
If Left(.Comment.Text, 3) = "LS_" Then
strAlteNotiz = .Comment.Text
lngAlterWert = Val(Right(strAlteNotiz, _
Len(strAlteNotiz) - 3))
Application.EnableEvents = False
.Value = .Value + lngAlterWert
.Comment.Text "LS_" & Str(.Value)
Application.EnableEvents = True
End If
End With
End Sub
Sie können die Arbeitsmappe nun mit Strg+S speichern, die VBA-Entwicklungsumgebung schließen und
nach Excel zurückkehren. Um nun die laufende Summe innerhalb einer (oder mehrerer Zellen)
einzusetzen, gehen Sie folgendermaßen vor:
Home
Home
1. Klicken Sie auf die Zelle, in der Sie die laufende Summe führen möchten.
2. Rufen Sie das Menü Extras-Makro-Makros auf, markieren Sie den Eintrag
"procLaufendeSummeErstellen" und klicken Sie auf Ausführen. Wiederholen Sie diesen Schritt mit
jeder Zelle, in der eine laufende Summe geführt werden soll.
3. Die Arbeitsmappe ist damit fertig eingerichtet. Sobald Sie einen Wert in eine der im zweiten Schritt
markierten Zellen eingeben, wird er zum aktuellen Zellinhalt hinzuaddiert. Um nachträglich zusätzliche
Zellen für eine laufende Summe zu verwenden, führen Sie einfach das Makro
"procLaufendeSummeErstellen" aus, während die entsprechende Zelle markiert ist. Um zu
verhindern, dass eine laufende Summe in einer Zelle weitergeführt wird, klicken Sie diese Zelle an
und starten das Makro "procLaufendeSummeLoeschen".
Kurz zur Funktionsweise unseres Tricks: Im ersten Schritt wird das erwähnte Makro für jede Zelle
aufgerufen, in dem eine laufende Summe geführt werden soll. Dabei wird dieser Zelle eine Notiz
zugewiesen, die mit dem Kürzel "LS_" beginnt. Direkt hinter dem Kürzel erscheint der augenblicklich in die
Zelle eingetragene Wert. Enthält die Zelle beispielsweise den Wert 100, weist die Prozedur eine Notiz mit
dem Inhalt "LS_100" zu.
Das Herzstück des Tricks ist die Prozedur "Worksheet_Change". Sie wird immer dann aufgerufen, wenn
Sie den Inhalt einer Zelle ändern. In diesem Fall prüft sie dann, ob die Zelle eine Notiz enthält, die mit den
Zeichen "LS_" beginnt. Ist das nicht der Fall, passiert nichts; andernfalls wird der alte Zellinhalt anhand
des zweiten Teils der Notiz ermittelt, zu der neuen Eingabe addiert und das Ergebnis als neuer Inhalt in
die Zelle geschrieben. Damit die laufende Summe auch danach noch funktioniert, muss der Inhalt der
neue Wert natürlich auch wieder in die Notiz zurückgeschrieben werden. Beachten Sie übrigens die
Anweisung "Application.EnableEvents", mit deren Hilfe wir vor dem Einfügen des neuen Wertes in die
aktuelle Zelle das Auslösen von Ereignissen in Excel unterbinden. Andernfalls würde das Setzen des
neuen Wertes durch unser Makros wieder das "Change"-Ereignis auslösen und das Makro würde sich in
eine Endlosschleife begeben. Sofort nach der Änderung werden die Ereignisse wieder aktiviert.
Das Makro zum Entfernen der laufenden Summe ist recht kurz, da lediglich die Zellnotiz mit der
entsprechenden Kennzeichnung gelöscht werden muss. Jede künftige Änderung in der Zelle bleibt ohne
folgen, weil nur eine Notiz mit dem Kürzel "LS_" die laufende Summe auslösen kann.
Laufwerke auslesen in VBA
Sub Show_all_Drives()
'(c) ramses
Dim myFSO As Object, myDrv As Object, drvCount, drvStr As String, vName As String, drvTyp
As String
Set myFSO = CreateObject("Scripting.FileSystemObject")
Set drvCount = myFSO.Drives
On Error Resume Next
drvStr = ""
For Each myDrv In drvCount
Debug.Print myDrv.DriveLetter
Select Case myDrv.DriveType
Case 0: drvTyp = "Unknown"
Case 1: drvTyp = "Removable"
Case 2: drvTyp = "Fixed"
Case 3: drvTyp = "Network"
Home
Home
Case 4: drvTyp = "CD-ROM"
Case 5: drvTyp = "RAM Disk"
End Select
drvStr = drvStr & drvTyp & ": " & myDrv.DriveLetter & " - "
If myDrv.DriveType = 3 Then
vName = myDrv.ShareName
Else
vName = myDrv.VolumeName
End If
drvStr = drvStr & vName & vbCrLf
Next
MsgBox drvStr
End Sub
Kann gebraucht werden um alle Laufwerke auszulesen und damit weiter Aktionen zu verbinden.
Leere Zelle in einem Bereich finden
Versionen: Excel 97, 2000 und 2002
FRAGE: Je umfangreicher eine Tabelle, desto schwieriger ist es, den Überblick zu wahren. Ich möchte
zum Beispiel immer wieder feststellen, ob es in einem bestimmten Bereich noch eine leere Zelle gibt.
Kann man das über ein Makro lösen?
F. Jansen
ANTWORT: Verwenden Sie für diese Aufgabenstellung das folgende kleine Makro:
Sub ErsteLeereZelle()
Dim Bereich As Range
Dim Zelle As Range
Set Bereich = Range("B3:O120")
For Each Zelle In Bereich
If Zelle.Value = "" Then MsgBox "Erste leere Zelle " _
& Zelle.Address: Zelle.Select
Next Zelle
End Sub
Der Bereich B3:O120 wird nun Zelle für Zelle durchlaufen - der Mauszeiger stoppt an der ersten
gefundenen leeren Zelle.
Letztes Speicherdatum in Zelle schreiben
Versionen: Excel 97, 2000 und 2002
FRAGE: Wie kann ich dafür sorgen, daß beim Speichern einer Arbeitsmappe das Speicherdatum in einer
Zelle hinterlegt wird?
M. Schuder
Home
Home
ANTWORT: Sie können dafür sorgen, daß beim Speichern der Datei das Datum in Zelle A1 ausgeben
wird. Dazu folgende Vorgehensweise:
1. Drücken Sie die Tastenkombination Alt+F11, um in die Entwicklungsumgebung zu gelangen.
2. Führen Sie einen Doppelklick auf den Eintrag "DieseArbeitsmappe" im Project-Explorer durch
3. Geben Sie das folgende Ereignis in den Codebereich ein:
Private Sub Workbook_BeforeSave(ByVal _
SaveAsUI As Boolean, Cancel As Boolean)
Range("A1").Value = Date & " " & Time
End Sub
In Zukunft wird automatisch beim Speichern der Arbeitsmappe das aktuelle Datum (der Speicherung) in
die Zelle A1 geschrieben.
Lineare Gleichungssysteme
Versionen: Excel 97, 2000 und 2002/XP
FRAGE: Excel bietet ja Tabellenfunktionen für die unterschiedlichsten Aufgabenbereiche. Im Moment
stehe ich aber vor einem Problem, für das es anscheinend keine spezielle Funktion gibt. Ich möchte ein
Gleichungssystem mit mehreren Unbekannten lösen. Ein Beispiel:
·
·
·
x + 4y + z = 7
3x + 2y + 4z = -1
2x + 5y + 4z = 4
Wissen Sie, ob es eine allgemeingültige Excel-Lösung für dieses Problem gibt und wie sie aussieht?
H. Feldmann
ANTWORT: Ein solches System aus linearen Gleichungen können Sie mit Matrixformeln lösen.
Voraussetzung für das im Anschluss vorgestellte Verfahren ist, dass die Anzahl der Gleichungen mit der
Anzahl der Unbekannten identisch ist. Das ist in Ihrem Fall gegeben: Sie haben drei Gleichungen und drei
Unbekannte x, y und z.
Um die Aufgabe in einer Excel-Tabelle zu lösen, müssen Sie zunächst die Koeffizienten der Variablen in
einen zusammenhängenden Zellbereich schreiben. Im von Ihnen aufgeführten Beispiel geben Sie also
Folgendes in die Zellen A1:C3 eines Tabellenblatts ein (ein fehlender Koeffizient entspricht dem Faktor 1):
|ABC
----------1| 1 4 1
2| 3 2 4
3| 2 5 4
Rechts daneben in den Bereich D1:D3 tragen Sie die konstanten Ergebnisse der Gleichungen ein – also 7
Home
Home
in D1, -1 in D2 und 4 in D3.
Zur Ermittlung der drei Koeffizienten nutzen Sie eine Matrixformel, die Sie in den Bereich E1:E3 eingeben.
Dazu markieren Sie die drei Zellen. Danach schreiben Sie
=MMULT(MINV(A1:C3);D1:D3)
in die Zelle. Zur Eingabe drücken Sie schließlich gleichzeitig die Tasten Strg+Umschalt+Return. Nur mit
dieser Tastenkombination wertet Excel die Eingabe als Matrixformel aus, was daran zu erkennen ist, dass
die Gleichung von geschweiften Klammern umgeben ist:
{=MMULT(MINV(A1:C3);D1:D3)}
Sie erhalten das Ergebnis 1 für die Variable x, 2 für y und -2 für z.
Die Formel bildet zunächst die inverse Matrix des Koeffizienten-Arrays: "MINV(A11:C13)". Danach
errechnet sie mit der MMULT-Funktion das Produkt aus der inversen Matrix und der Matrix der konstanten
Gleichungsergebnisse. Das Ergebnis-Array verrät die Lösung für Ihre Gleichungssysteme. Falls es keine
Lösung gibt, gibt die Formel den Fehler "#WERT!" aus.
Listen gruppieren und durch Seitenwechsel trennen
Versionen: Excel 97, 2000 und 2002/XP
FRAGE: Wir arbeiten mit einer umfangreichen Excel-Datei (ca. 4.500 Zeilen). Ich möchte nun automatisch
nach jedem Kostenstellenwechsel eine leere Zeile, oder einen Seitenumbruch einfügen. Gibt es einen
komfortablen Weg, um das zu automatisieren?
L. Richter
ANTWORT: Excel bietet genau für diesen Zweck eine nützliche Funktion an, die aber noch viel zu selten
genutzt wird. Gehen Sie folgendermaßen vor:
1. Markieren Sie eine beliebige Zelle in der Liste.
2. Wählen Sie das Menü Daten-Sortieren an und sortieren Sie die Liste nach der Spalte, nach deren
Inhalt Ihre Liste auch gruppiert werden soll. In diesem Fall handelt es sich dabei um das Feld
"Kostenstelle".
3. Rufen Sie das Dialogfeld Daten-Teilergebnisse auf.
4. Markieren Sie das gewünschte Feld in der Liste Gruppieren nach.
5. Entscheiden Sie sich nun noch für ein Feld (Teilergebnis addieren zu), für das Sie unter jeder
Gruppe eine Auswertung (Unter Verwendung von) erstellen möchten (beispielsweise die
Betragssumme oder die Anzahl der Zeilen).
6. Wichtig ist nun, dass Sie das Kontrollkästchen Seitenwechsel zwischen Gruppen aktivieren.
Außerdem sollten Vorhandene Teilergebnisse ersetzen und Ergebnisse unterhalb der Daten
anzeigen eingeschaltet sein.
7. Nachdem Sie Ihre Einstellungen mit Ok bestätigt haben, fügt Excel automatisch unter jeder
Gruppe einen Seitenumbruch sowie die gewünschte Auswertung ein. Sie können also Ihre
Tabelle so ausgeben, dass beispielsweise jede Kostenstelle auf einer neuen Seite beginnt.
Home
Home
Noch ein wichtiger Tipp für den Ausdruck: Standardmäßig erscheinen die Spaltenüberschriften nur auf der
ersten Seite des Ausdrucks. Damit Sie auf jeder Seite erscheinen, geben Sie im Dialogfeld Datei-Seite
einrichten auf dem Register "Tabelle" den Bezug der Beschriftungszeile in das Feld Wiederholungszeilen
ein. Zum Beispiel für Zeile 2:
2:2
Makros und Funktionen immer verfügbar.
Versionen: Excel 97, 2000 und 2002
In Excel Weekly stellen wir Ihnen immer wieder kleine VBA-Routinen und Funktionsmakros vor, mit denen
Sie Excel um nützliche neue Fähigkeiten erweitern können. Vielleicht haben Sie auch noch das eine oder
andere eigene Makro entwickelt und kleine Prozeduren von Kollegen erhalten. Mit der Zeit verfügen Sie
über eine ansehnliche Sammlung von VBA-Programmen, auf die Sie möglichst schnell und ohne großen
Aufwand zugreifen möchten. Dabei sind auch Sie wahrscheinlich auf zwei häufige Probleme gestoßen:
·
Das Modul, in das Sie ein Makro eingeben, ist an eine Arbeitsmappe gebunden. Nur wenn diese
Datei geöffnet ist, steht auch das Makro zur Verfügung.
· Bei Funktionsmakros ergibt sich noch ein zusätzliches Problem: Eine benutzerdefinierte Funktion
kann in einer Formel nur dann mit ihrem einfachen Funktionsnamen verwendet werden, wenn
sich die Formel in derselben Datei befindet wie das entsprechende Makro. Beim Einsatz in einer
anderen Arbeitsmappe müssen Sie immer zusätzlich den Namen der Datei angeben, in der das
Makro gespeichert ist. Also zum Beispiel:
=MeineFunktionen.xls!Testrechnung(B6)
Wir möchten Ihnen in dieser Ausgabe zeigen, wie Sie Ihre Makros in Zukunft effizient verwalten. Die
wichtigsten Ziele:
·
Ihre am häufigsten benötigten Makros sollen voll automatisch nach dem Start von Excel zur
Verfügung stehen. Weniger häufig eingesetzte Makros lassen sich bei Bedarf mit wenigen
Mausklick zusätzlich aktivieren.
· Benutzerdefinierte Funktionen sollen sich in jeder Arbeitsmappe grundsätzlich ohne
vorangestellten Dateinamen einsetzen lassen.
Wenn Sie sich schon einmal mit dem Thema "Verfügbarkeit von Excel-Makros" beschäftigt haben, sind
Sie mit Sicherheit auf die sogenannte "persönliche Makro-Arbeitsmappe" von Excel gestoßen. Dabei
handelt es sich um eine ganz normale Excel-Arbeitsmappe mit einem oder mehreren Visual BasicModulen. In diese Module können Sie alle Prozeduren aufzeichnen, kopieren oder eingeben, auf die Sie
jederzeit zugreifen wollen.
Die persönliche Makro-Arbeitsmappe wird unter dem Namen PERSONL.XLS im XLSTART-Verzeichnis
abgelegt. Nach dem Start von Excel wird sie automatisch geladen, so dass alle hier gespeicherten
Prozeduren sofort zur Verfügung stehen. Von der Datei selber merken Sie aber nichts, weil sie
standardmäßig ausgeblendet ist. Über das Menü Fenster-Einblenden können Sie sie sichtbar machen,
aber in der Regel ist das nicht notwendig, weil Sie die Module auch im ausgeblendeten Zustand im VBAEditor bearbeiten können.
Home
Home
Auf den ersten Blick ist die persönliche Makro-Arbeitsmappe bereits die beste Lösung für die universelle
Bereitstellung von Makros in Excel, aber es gibt einige Nachteile:
·
·
Funktionsmakros aus der persönlichen Makroarbeitsmappe können ebenfalls nur mit
vorangestelltem Dateinamen aufgerufen werden.
Die Makro-Arbeitsmappe wird jedes Mal komplett geladen. Das Auslagern und nachträgliche
Aktivieren weniger häufig benötigter Makros ist nur mit einigem Aufwand möglich.
Wenig bekannt ist die Tatsache, dass es eine interessante Alternative gibt: Verwenden Sie in
Zukunft Add-Ins anstelle der persönlichen Makro-Arbeitsmappe. Im folgenden zeigen wir Schritt
für Schritt, wie Sie dazu vorgehen müssen und Sie werden sehen, dass es viel einfacher ist, als
Sie bisher dachten.
1. Erstellen Sie eine neue Arbeitsmappe und wechseln Sie mit Alt+F11 in den VBA-Editor.
2. Wenn Sie bereits eine PERSONL.XLS mit Makros angelegt haben, verwenden Sie jetzt den
Project-Explorer, um diese Module in die neue Arbeitsmappe zu übernehmen. Ziehen Sie
die Module einfach bei gedrückter Strg-Taste in das neue VBA-Projekt.
3. Geben Sie die VBA-Makros und benutzerdefinierten Funktionen in ein oder mehrere Module
der neuen Arbeitsmappe ein, die Ihnen in Zukunft immer zur Verfügung stehen sollen.
4. Verlassen Sie den VBA-Editor mit Datei-Schließen und zurück zu Microsoft Excel.
5. Wählen Sie in Excel das Menü Datei-Eigenschaften an. Geben Sie dann in das Feld Titel die
Zeichenkette ein, die im Add-In-Manager für Ihr neues Add-In erscheinen soll. Zum Beispiel:
"VBA-Bibliothek". Unter Kommentare können Sie noch weitere Anmerkungen eingeben, die
beim Markieren des entsprechenden Eintrags ebenfalls im Add-In-Manager erscheinen.
Bestätigen Sie Ihre Eingaben mit Ok.
6. Klicken Sie nun das Diskettensymbol an und markieren Sie in der Liste Dateityp den Eintrag
"Microsoft Excel-Add-In". In den Versionen 2000 und 2002 wechselt Excel daraufhin
automatisch in das "Add-Ins"-Verzeichnis, das bei der Installation angelegt wurde. Es
empfiehlt sich, diesen Vorschlag anzunehmen, weil es sich dabei auch um das Verzeichnis
handelt, das der Add-In-Manager beim Hinzufügen neuer Add-Ins als erstes anzeigt. In
Excel 97 wird zur Speicherung das aktuelle Verzeichnis angeboten. Wechseln Sie auf
Wunsch in ein anderes Verzeichnis, das Sie speziell für Add-Ins verwenden möchten.
7. Geben Sie den gewünschten Dateinamen für das Add-In ein und bestätigen Sie mit
Speichern.
8. Excel erstellt daraufhin das Add-In aus der aktuellen Arbeitsmappe. Die im ersten Schritt
angelegte Datei bleibt erhalten, kann an dieser Stelle aber ohne Speicherung geschlossen
werden, weil Sie sie nicht mehr benötigen.
9. Wählen Sie das Menü Extras-Add-Ins-Manager an.
10. Klicken Sie auf Durchsuchen und wählen Sie das soeben erstellte Add-In aus. Excel zeigt es
daraufhin in der Liste der verfügbaren Add-Ins im Add-In-Manager mit einem aktivierten
Kontrollkästchen an. Beenden Sie den Vorgang mit Ok.
11. Sollten Sie bisher eine persönliche Makro-Arbeitsmappe eingesetzt haben, deren Module
nun in das Add-In übernommen wurden, löschen oder verschieben Sie die Datei
PERSONL.XLS aus dem XLSTART-Verzeichnis, damit sie nicht mehr automatisch geladen
wird.
Home
Home
Alle Makros aus dem Add-In stehen Ihnen in Zukunft automatisch direkt nach dem Start von
Excel in allen Arbeitsmappen zur Verfügung. Das gleiche gilt für die benutzerdefinierten
Funktionen, bei denen Sie außerdem auf den vorangestellten Dateinamen verzichten können.
Weitere nützliche Tipps und Hinweise zu Add-Ins:
·
·
·
Wenn Sie das Add-In um weitere Makros erweitern oder vorhandene Makros bearbeiten
möchten, wechseln Sie einfach in den VBA-Editor und greifen über den Project-Explorer
auf die Module zu. Verwenden Sie dann das Disketten-Symbol im Editor, um die
Änderungen zu sichern.
Sie können das Add-In jederzeit aus dem Speicher entfernen, indem Sie den Add-InManager aufrufen und das Kontrollkästchen vor dem entsprechenden Eintrag entfernen.
Bitte beachten Sie dabei, dass in diesem Fall das Add-In auch beim nächsten Start von
Excel nicht mehr geladen wird. Dazu müssen Sie das Kontrollkästchen im Add-InManager erst wieder einschalten.
Für Funktionen und Makros, die Sie nur selten benötigen, können Sie weitere Add-Ins
erstellen, die Sie standardmäßig im Add-In-Manager nicht aktivieren und nur bei Bedarf
hinzuschalten.
Maximale Anzahl Zeilen in Excel
65536
Markierung der letzten benutzten Zelle z.B. in Spalte D
Dim i As Integer
i = Range("D65536").End(xlUp).Row
Range("D" & i).Select
Mehrere Drucker komfortabel nutzen
Versionen: Excel 97, 2000 und 2002
FRAGE: Gibt es eine einfache Möglichkeit, den Druckauftrag für eine Tabelle je nach Bedarf an
verschiedene Drucker zu senden? Der normale Weg über Datei-Drucken ist mir einerseits zu umständlich
und andererseits verstellt Excel dabei jedes Mal den Standarddrucker, so dass die Drucken-Schaltfläche
in der Symbolleiste nicht in der gewünschten Weise funktioniert.
H. Kuhlage
ANTWORT: Abhilfe schaffen VBA-Makros, in denen Sie das aktuelle Tabellenblatt jeweils auf
unterschiedlichen Geräten ausdrucken lassen. Mit zwei zusätzlichen Codezeilen sorgen Sie außerdem
dafür, dass der Standarddrucker beibehalten wird. Hier die genaue Vorgehensweise:
·
·
Öffnen Sie eine neue, leere Arbeitsmappe.
Wechseln Sie mit Alt+F11 in den Visual Basic-Editor und legen Sie im Projekt der neuen Datei
ein Modul an, indem Sie das Menü Einfügen-Modul anwählen.
· Geben Sie Prozeduren nach folgendem Muster ein:
Sub <Drucker>()
Dim strAktDrucker As String
strAktDrucker = Application.ActivePrinter
ActiveSheet.PrintOut ActivePrinter:="<Druckerbez.>"
Application.ActivePrinter = strAktDrucker
Home
Home
End Sub
·
Derartige Prozeduren richten Sie für jeden verfügbaren Drucker ein. Dabei müssen Sie nur jeweils
die in eckigen Klammern gesetzten Ausdrücke ändern. In der ersten Zeile geben Sie anstelle von
"<Drucker>" einen Prozedurnamen ein, der Rückschlüsse auf den Zieldrucker zulässt. Ansonsten
ist der Name frei wählbar. In der vierten Zeile müssen Sie präziser vorgehen. Anstelle von
<Druckerbez.>" müssen Sie den Druckernamen exakt so angeben, wie er im Dropdown-Feld des
Dialogfelds Drucken erscheint. Wenn dort zum Beispiel ein Name wie "HP Deskjet 550C Printer"
angezeigt wird, müssen Sie in der Prozedur auch diese vollständige Bezeichnung eintragen. Das
VBA-Makro funktioniert nicht korrekt, wenn Sie nur den Druckertyp, also etwa "HP Deskjet 550C",
eingeben. Beachten Sie außerdem, dass es sich bei dem "ActivePrinter"-Parameter um einen
Textwert handelt, der in Anführungszeichen eingeschlossen sein muss.
· Nachdem Sie Prozeduren für jeden angeschlossenen Drucker eingegeben haben, verlassen Sie
den Visual Basic-Editor per Datei-Schließen und zurück zu Microsoft Excel.
· Speichern Sie die in Schritt 1 angelegte Arbeitsmappe mit den Druckermakros unter einem
Namen Ihrer Wahl. Lassen Sie die Datei aber weiterhin geöffnet!
· Um die Druckausgabe zu beschleunigen, richten Sie Symbolleisten-Schaltflächen ein, die die
zuvor erstellten Druckermakros aufrufen. Dazu wählen Sie im Menü Ansicht erst Symbolleisten
und dann Anpassen an.
· Erstellen Sie der Übersichtlichkeit halber eine neue Symbolleiste, indem Sie auf der Registerkarte
Symbolleisten die Schaltfläche Neu anklicken. Geben Sie anschließend einen Namen wie
"Druckerauswahl" ein und bestätigen Sie mit Ok.
· Wechseln Sie im Dialogfeld Anpassen auf die Registerkarte Befehle und markieren Sie im
Listenfeld Kategorien den Eintrag "Makros".
· Nun ziehen Sie "Schaltfläche anpassen" (Excel 97/2000) bzw. "Benutzerdefinierte Schaltfläche"
(Excel 2002) mit der Maus aus dem rechten Listenfeld in die leere Symbolleiste, die Sie in Schritt
7 erstellt haben. Daraufhin erscheint die neue Schaltfläche in Form eines "Smileys" in der
Symbolleiste.
· Klicken Sie die Schaltfläche mit der rechten Maustaste an, um ein Kontextmenü zu öffnen.
Wählen Sie den Befehl Makro zuweisen an und aktivieren Sie im daraufhin angezeigten
Dialogfeld den Namen des ersten Druckmakros per Doppelklick.
· Öffnen Sie erneut das Kontextmenü der Schaltfläche mit der rechten Maustaste und
überschreiben Sie den Vorgabetext im Feld Name durch die zum vorher ausgewählten Makro
passende Druckerbezeichnung.
· Damit die Druckerbezeichnung in der Symbolleiste angezeigt wird, öffnen Sie noch einmal das
Kontextmenü der Schaltfläche. Wählen Sie dieses Mal den Befehl Nur Text (immer) an.
· Wiederholen Sie die Schritte 9 bis 12 für alle Druckmakros, so dass die Symbolleiste am Ende
Schaltflächen für alle verfügbaren Drucker enthält.
· Beenden Sie das Dialogfeld Anpassen mit der Schaltfläche Schließen.
Ab sofort bestimmen Sie mit den Schaltflächen der neuen Symbolleiste direkt per Mausklick, auf welchem
Drucker die aktuelle Tabelle ausgedruckt wird. Da der Standarddrucker jedes Mal wieder hergestellt wird,
können Sie parallel jederzeit die normale Drucken-Schaltfläche in der Excel-Symbolleiste einsetzen. Sie
funktioniert genau so wie Sie es gewohnt sind.
Die Symbolleiste zur Druckerauswahl öffnet Excel in der nächsten Sitzung übrigens automatisch, selbst
wenn Sie die Mappe mit den Druckmakros nicht geladen haben. Das holt Excel nach, sobald Sie eines
Home
Home
der Drucker-Symbole anklicken. Aufgrund der Makrozuordnung weiß Excel, in welcher Arbeitsmappe die
entsprechenden Prozeduren zu finden sind.
Mehrfachauswahl in VBA auswerten
Versionen: Excel 97, 2000 und 2002
FRAGE: In einem VBA-Makro soll die Anzahl der in einem Tabellenblatt markierten Zeilen ermittelt
werden. Dafür nutze ich die Anweisung "Selection.Rows.Count". Leider ist das Ergebnis nicht immer
korrekt. Wenn es sich bei der Markierung nämlich um eine Mehrfachauswahl mit nicht aneinander
grenzenden Zellbereichen handelt, erhalte ich nur die Zeilenanzahl des ersten Bereichs. Ist das ein Bug in
Excel? Und wie komme ich an die tatsächliche Anzahl der markierten Zeilen?
H. Schiermeyer
ANTWORT: Bei einer Mehrfachauswahl berücksichtigt "Selection.Rows.Count" in der Tat nur den ersten
markierten Bereich. Das Gleiche gilt übrigens auch für "Selection.Columns.Count". Nur
"Selection.Cells.Count" liefert die korrekte Anzahl aller markierten Zellen.
Um die Zeilen in allen markierten Bereichen zu zählen, müssen Sie die einzelnen "Areas" der
Mehrfachauswahl in einer For-Schleife durchlaufen und dabei jeweils die Zeilen ermitteln. Eine
entsprechende VBA-Prozedur könnte folgendermaßen aussehen:
Sub Zeilenanzahl1()
Dim objTeilbereich As Range
Dim lngZeilenzahl As Long
For Each objTeilbereich In Selection.Areas
lngZeilenzahl = lngZeilenzahl + _
objTeilbereich.Rows.Count
Next objTeilbereich
MsgBox lngZeilenzahl
End Sub
Was diese Prozedur nicht berücksichtigt, sind überlappende Bereiche in der Mehrfachauswahl. Wenn Sie
zum Beispiel die Zellen A1:A10 und C8:D17 markiert haben, erhalten Sie eine Zeilenanzahl von "20". Die
Prozedur merkt also nicht, dass die Zeilen 8 bis 10 in beiden Bereichen der Mehrfachauswahl enthalten
sind. Um zu ermitteln, wie viele "echte" Zeilen in dem Tabellenblatt markiert sind, verwenden Sie eine
Prozedur wie diese:
Sub Zeilenanzahl2()
Dim objZeilenbereich As Range
Dim objTeilbereich As Range
Dim lngZeilenzahl As Long
For Each objTeilbereich In Selection.Areas
If objZeilenbereich Is Nothing Then
Set objZeilenbereich = objTeilbereich.EntireRow
Home
Home
Else
Set objZeilenbereich = Union(objZeilenbereich, _
objTeilbereich.EntireRow)
End If
Next objTeilbereich
For Each objTeilbereich In objZeilenbereich.Areas
lngZeilenzahl = lngZeilenzahl + _
objTeilbereich.Rows.Count
Next objTeilbereich
MsgBox lngZeilenzahl
End Sub
Sie arbeiten in der Prozedur mit einem zusätzlichen Range-Objekt namens "objZeilenbereich", das jeweils
die kompletten Zeilen der Teilbereiche in der Mehrfachauswahl umfasst. Da es sich auch dabei um nicht
aneinander grenzende Zellbereiche handeln kann, müssen Sie die Zeilenbereiche am Ende erneut mit
einer For-Schleife durchlaufen, um herauszufinden, wie viele unterschiedliche Zeilen im Tabellenblatt
markiert sind. Im Beispiel mit der Mehrfachauswahl A1:A10;C8:D17 erhalten Sie dann eine Anzahl von
"17" Zeilen.
Nachnamen aus einer Zeichenkette ermitteln
Versionen: Excel 97, 2000, 2002/XP und 2003
Wenn Sie Excel auch als Datenbank benutzen oder für Listen oder beliebige Aufstellungen Namen
verwenden, dann kennen Sie das leidige "Nachnamen"-Problem. Immer wieder gibt es Situationen, in
denen Sie gezielt auf den Nachnamen einer Person zugreifen wollen, aber genau dann ist natürlich nur
der komplette Name in eine Zelle eingegeben. Nun wäre es ein leichtes, die Textfunktionen von Excel
zum Auslesen des Nachnamens zu verwenden, wenn jeder Name immer eindeutig aus zwei Teilen
bestehen würde: dem Vor- und dem Nachnamen. Aber die Realität sieht natürlich anders aus: doppelte
Vornamen und andere Spezialfälle verhindern den Einsatz einer einfachen Formel.
Glücklicherweise bietet Excel die Möglichkeit, das Programm durch beliebige benutzerdefinierte
Funktionen zu erweitern. Erstellen Sie also ein neues Visual Basic-Modul, und geben Sie die folgende
Funktion ein:
Function Nachname(GanzerName)
For I = 0 To Len(GanzerName) - 1
Verkehrt = Verkehrt & Mid(GanzerName, _
Len(GanzerName) - I, 1)
Next I
Nachname = Right(GanzerName, InStr(1, Verkehrt, " ", 0))
End Function
In Zukunft können Sie ganz einfach den Nachnamen aus jedem beliebigen Namen ermitteln, indem Sie
eine Formel mit der folgenden Syntax eingeben:
=NACHNAME(<Bezug>)
Home
Home
Die Funktionsweise unseres Visual Basic-Programms ist ganz einfach: Mit einer For-Next-Schleife kehren
wir die gesamte Zeichenkette um. Aus "Peter Michael Müller" wird also "rellüM leahciM reteP". Danach
sucht "Mid" nach dem ersten Leerzeichen in der umgedrehten Version des Namens, so dass sich
anschließend mit der Right-Funktion der Nachname ermitteln lässt.
Namensdefinitionen im Überblick
Versionen: Excel 97, 2000 und 2002
FRAGE: Ihren Tip aus der Ausgabe 31/2001 habe ich nicht verstanden. Was hat der ZoomFaktor für das Arbeitsblatt mit den Namensdefinitionen zu tun? Für einen Überblick über die
vergebenen Namen, lasse ich normalerweise eine entsprechende Liste in die Tabelle einfügen.
C. Hesselschwerdt
ANTWORT: Nach dem Versand des letzten Newsletters haben uns zahlreiche Mails mit diesem
Tenor erreicht. Um das Mißverständnis aufzuklären:
·
·
Über das Dialogfeld Einfügen-Namen-Einfügen und die Schaltfläche Liste einfügen
haben Sie natürlich die Möglichkeit, eine Liste aller vergebenen Namen mit den
zugehören Bereichsbezügen zu erstellen.
Die von uns beschriebene Technik, bei der Sie einfach nur den aktuellen Zoomfaktor auf
39% setzen, erfüllt einen anderen Zweck: Die Namen werden in blauer Schrift hinter den
Bereichen in der Tabelle angezeigt, denen sie zugeordnet wurden. Sie verschaffen sich
so einen Überblick, welche Namen sich auf welche Bereiche der Tabelle beziehen.
Optimale Spaltenbreite per Mausklick
Versionen: Excel 97, 2000 und 2002/XP
FRAGE: Gibt es eigentlich Alternativen für den Befehl Format-Spalte-Optimale Breite
bestimmen? Dafür, dass der Befehl bestimmt nicht nur von mir häufig benötigt wird, finde ich ihn
ziemlich tief in der Menüstruktur versteckt.
U. Weber
ANTWORT: Die schnellste Methode, die gerade markierte(n) Spalte(n) auf die optimale Breite
einzustellen, besteht darin, doppelt auf den rechten Rand eines markierten Spaltenkopfes zu
klicken. Wenn Sie mehrere Spalten markiert haben, ist es völlig egal, bei welchem Spaltenkopf
Sie diese Aktion ausführen, - Hauptsache, es handelt sich um einen der markierten
Spaltenköpfe.
Umständlich gestaltet sich das Mausverfahren höchstens, wenn Sie die Spaltenbreite schon
vorher verändert hatten und der rechte Rand wegen einer sehr großen Breite nicht mehr auf
dem Bildschirm zu sehen ist. Dann müssten Sie erst mit der Bildlaufleiste nach rechts blättern.
Um das zu vermeiden, können Sie mit wenigen Handgriffen eine Schaltfläche in die
Home
Home
Symbolleiste von Excel einfügen. Und so gehen Sie vor:
1. Wählen Sie Ansicht-Symbolleisten-Anpassen an.
2. Klicken Sie auf das Excel-Menü Format, darin auf Spalte und schließlich auf den Befehl
Optimale Breite bestimmen (Optimale Breite festlegen in Excel 2002), genau so, als wenn
Sie den Befehl aufrufen wollten.
3. Nun drücken Sie die Strg-Taste und halten sie fest. Dann ziehen Sie das UntermenüElement Optimale Breite bestimmen an eine beliebige Stelle in der Standard- oder der
Format-Symbolleiste. Ein senkrechter Balken kennzeichnet die Einfügeposition.
4. Lassen Sie erst die Maustaste und danach auch die Strg-Taste los, sobald Sie die passende
Position für den Spaltenbreitenbefehl gefunden haben. Das Ziehen bei gedrückter StrgTaste erstellt eine Kopie des Menüelements.
5. Wenn Sie wollen, können Sie die neue Symbolleistenschaltfläche mit der rechten Maustaste
anklicken, um über ein Kontextmenü die Beschriftung im Feld Name zu ändern. Oder Sie
nutzen im Kontextmenü den Befehl Schaltflächensymbol ändern, um ein Symbol
zuzuweisen. Die Platz sparende Symboldarstellung erreichen Sie anschließend, indem Sie
im Kontextmenü den Befehl Standard aufrufen.
6. Nach Abschluss aller Anpassungen klicken Sie im Dialogfeld Anpassen auf die Schaltfläche
Schließen.
Ab sofort ist die optimale Spaltenbreite nur noch einen Mausklick entfernt.
Perfekter Ausdruck mit dem kostenlosen Bericht-Manager
Versionen: Excel 97, 2000 und 2002
In unserer letzten Ausgabe haben wir Ihnen den kostenlosen Ansichten-Manager vorgestellt, der
standardmäßig mit Excel ausgeliefert wird. Er sorgt dafür, dass Sie unterschiedliche Versionen
und Layouts Ihrer Tabellen mit wenigen Mausklicks speichern und jederzeit wieder abrufen
können. Weitere Arbeitserleichterung bringt der "Bericht-Manager". Er sorgt dafür, dass Sie die
definierten Ansichten im Handumdrehen zu Papier bringen. Anstatt erst eine Ansicht
auszuwählen und auszudrucken, dann die nächste Ansicht auszuwählen und auszudrucken
usw., können Sie im Bericht-Manager mehrere Ansichten zusammenfassen und gemeinsam an
den Drucker schicken.
Allerdings gehört der Bericht-Manager nicht zum Standard-Befehlsumfang von Excel. Es handelt
sich um ein Add-In, das Sie gegebenenfalls nachinstallieren müssen. Überprüfen Sie den
aktuellen Zustand Ihrer Excel-Installation, indem Sie im Menü Extras je nach Excel-Version AddIn-Manager (97), Add-Ins-Manager (2000) bzw. Add-Ins (2002) aufrufen. Wenn Sie in der Liste
Verfügbare Add-Ins den Eintrag "Bericht-Manager" finden, sorgen Sie dafür, dass er mit einem
Häkchen versehen ist, und bestätigen Sie die Auswahl mit Ok.
Falls der "Bericht-Manager" nicht in der Liste auftaucht, klicken Sie auf Abbrechen und beenden
Sie Excel. Beim Einsatz von Excel 97 und Excel 2000 müssen Sie dann über die WindowsSystemsteuerung eine Wartungsinstallation von Excel oder Microsoft Office starten und das
Excel-Add-In "Bericht-Manager" nachrüsten. – Falls Sie mit Excel 2002 arbeiten, müssen Sie
den Bericht-Manager aus dem Internet herunterladen; er befindet sich nicht mehr auf den
Installations-CDs von Excel respektive Office. Über den folgenden Link gelangen Sie direkt zur
Home
Home
entsprechenden Download-Seite:
http://office.microsoft.com/germany/downloads/2002/rptmgr.aspx
Nachdem Sie den Bericht-Manager per Programm-CD oder Internet installiert haben,
vergewissern Sie sich, dass der zugehörige Eintrag im Add-In-Manager aktiviert ist (siehe oben).
Aus einer Excel-Tabelle starten Sie das Zusatzwerkzeug dann über das Menü Ansicht und den
Befehl Bericht-Manager. Klicken Sie auf Hinzufügen, um einen neuen Bericht anzulegen.
Im nächsten Dialogfeld geben Sie eine aussagekräftige Bezeichnung in das Feld Berichtsname
ein. Anschließend wählen Sie im mittleren Bereich das Blatt aus, das in den Bericht
eingeschlossen werden soll. Im darunter stehenden Dropdown-Feld Ansicht können Sie nun
eine der benutzerdefinierten Ansichten auswählen, die Sie zuvor eingerichtet haben. Um beim
vorherigen Beispiel zu bleiben: Sie könnten eine der Einzelstatistiken für ein bestimmtes Jahr
auswählen. Danach klicken Sie auf Hinzufügen, um die Auswahl in den unteren
Dialogfeldbereich zu übernehmen.
Nach demselben Prinzip fügen Sie weitere Ansichten zum Bericht hinzu. Mit Hilfe des zweiten
Dropdown-Felds im mittleren Bereich können Sie sogar Szenarien integrieren, um Seiten mit
unterschiedlichen Analyseansätzen auszudrucken (Szenarien wurden im Excel WeeklyNewsletter vom 3.7.2002 ausführlich beschrieben).
Alle Ansichten und Szenarien die Sie als Bereiche dieses Berichts definieren werden zu einem
einzigen Druckauftrag zusammengefasst und auf separaten Seiten ausgegeben. Mit dem
Kontrollfeld Fortlaufende Seitenzahl können Sie die Seiten entsprechend nummerieren.
Sobald Sie den Bericht zusammengestellt haben, schließen Sie das Dialogfeld mit Ok. Etwaige
Makrofehler quittieren Sie einfach mit Weiter. Sie gelangen zurück zum Dialogfeld BerichtManager, das Ihnen mit der Schaltfläche Drucken sofort Gelegenheit bietet, den Bericht zu
Papier zu bringen. Wenn Sie den Druckvorgang erst später starten wollen, können Sie das
Dialogfeld auch wieder Schließen. Excel speichert Berichte gemeinsam mit der Arbeitsmappe,
so dass Sie per Ansicht-Bericht-Manager jederzeit auf Ihre Berichte zugreifen können.
Prüfen auf markierten Bereich
Versionen: Excel 97, 2000 und 2002
FRAGE: Ich habe einige kleine VBA-Makros entwickelt, die mir bei der täglichen Arbeit helfen.
Leider werden sie manchmal mit einer Fehlermeldung abgebrochen, wenn beim Start des
Makros gerade kein Bereich markiert, sondern ein Diagramm oder ein Grafikobjekt ausgewählt
war. Wie kann ich das unterbinden?
O. Muhr
ANTWORT: Die VBA-Funktion "TypeName" hilft weiter, denn mit ihrer Hilfe können Sie
Informationen über die aktuelle Auswahl abfragen. Solange eine oder mehrere Zellen markiert
sind, liefert die Funktion das Ergebnis "Range", so daß Sie den beschriebenen Fehler
beispielsweise wie folgt abfangen könnten:
Home
Home
If TypeName(Selection) <> "Range" Then
MsgBox "Bitte waehlen Sie einen Bereich aus!"
Exit Sub
End If
Quartalsnummer für ein Datum berechnen
Versionen: Excel 97, 2000 und 2002
FRAGE: Ich möchte in einer Tabelle ermitteln, in welches Quartal ein bestimmtes Datum fällt. Eine ExcelFunktion dazu konnte ich nicht finden. Kann man sich irgendwie behelfen?
H. König
ANTWORT: Die Lösung ist eine Formel nach folgendem Muster:
=AUFRUNDEN(MONAT(<Datumszelle>)/3;0)
Es liegt auf der Hand, dass Sie zunächst den Monat des Datums berechnen müssen. Diesen Wert teilen
Sie durch 3, weil ein Quartal aus drei Monaten besteht. Anschließend setzen Sie die Funktion
AUFRUNDEN ein, um auf die nächste ganze Zahl (der zweite Parameter hat den Wert "0") zu runden.
Und damit haben Sie bereits das Quartal zum Datum.
Zum Ausprobieren geben Sie beispielsweise "24.12.2002" in Zelle A1 ein. Um das zugehörige Quartal
auszugeben, tragen Sie dann in Zelle B1 diese Formel ein:
=AUFRUNDEN(MONAT(A1)/3;0)
Excel liefert den Wert "4": das Datum liegt also im vierten Quartal des Jahres.
Quersumme bilden
=SUMME(TEIL(A1;ZEILE(INDIREKT("A1:A"&LÄNGE(A1)));1)*1)
Eingabe der Formel mit Strg/Shift/Enter
Rangfolge mit gewichteten Kriterien
Versionen: Excel 97, 2000 und 2002/XP
FRAGE: Vor einiger Zeit hatten Sie schon einmal eine Leseranfrage beantwortet, in der es um die
Feststellung einer Rangfolge und das anschließende Sortieren ging. Dort beschrieben Sie den Einsatz
einer RANG-Funktion, mit der sich die Platzierung anhand der erzielten Gesamtpunktzahl errechnen lässt.
Bei den Tabellen, die ich bearbeite, kann es aber vorkommen, dass Punktgleichheit herrscht. Dann
entscheidet ein zweites Kriterium. Wenn in dieser Sparte auch Gleichheit herrscht, kommt ein drittes
Kriterium zum Tragen usw. Die RANG-Funktion ermittelt die Platzierung aber offenbar nur anhand einer
Bedingung, sodass bei gleicher Punktzahl derselbe Rang erscheint. Gibt es eine Lösung, die eine
eindeutige Platzierung in Abhängigkeit von mehreren Kriterien errechnet?
W. Brosé
Home
Home
ANTWORT: Um eine Platzierung anhand mehrerer gewichteter Kriterien zu ermitteln, müssen Sie einige
Hilfsberechnungen in das Tabellenmodell einbauen.
Nehmen Sie zum Beispiel eine Fußballtabelle: Die Platzierung ergibt sich zunächst aus der Punktzahl
(Sieg, Unentschieden, Verloren). Wenn zwei Mannschaften dieselbe Punktzahl aufweisen, entscheidet
normalerweise die Tordifferenz. Wenn die auch identisch ist, werden die geschossenen Tore
herangezogen.
Die Daten der Fußballtabelle können Sie wie folgt in ein Excel-Tabellenblatt eingeben:
·
·
·
·
·
Spalte B: Mannschaftsnamen
Spalte C: geschossene Tore
Spalte D: Gegentore
Spalte E: Tordifferenz per Formel "Spalte C minus Spalte D"
Spalte F: Punkte
Nun müssen Sie eine Wertigkeit ins Spiel bringen. Die geringste Bedeutung haben die "Plus-Tore", mehr
Gewicht hat die Tordifferenz und die höchste Wertungsstufe kommt der Punktzahl zu. Diese Gewichtung
erreichen Sie, indem Sie die einzelnen Ergebnisse mit geeigneten Faktoren multiplizieren. Geeignete
Faktoren sind immer so hoch, dass der Maximalwert einer Bewertungskategorie nie so hoch wird, wie der
kleinste Wert der nächst höheren Stufe.
Im Fall einer Fußballtabelle bieten sich Hunderterpotenzen an: Die Tore fließen mit einfacher Wertung ein
(0te-Potzenz), die Tordifferenz multiplizieren Sie mit 100 (1er-Potenz) und die Punkte mit 10.000 (2erPotenz). Auf diese Weise wird eine Mannschaft schlecht abschneiden, selbst wenn sie eine Tordifferenz
von +99, dabei aber nur 1 Punkt erzielt hat. Denn die Tordifferenz "wiegt" in der Gesamtwertung 9.900
Punkte und die Punktzahl 10.000. Eine Mannschaft, die eine schlechte Tordifferenz von +1, dafür aber 60
Punkte hat, ist korrekterweise besser platziert, da in der Gesamtwertung 100 plus 600.000 Punkte
herauskommen.
Die Hilfsformeln können Sie in die Spalten H bis J Ihres Tabellenblatts eingeben:
·
·
·
Spalte H: Werteübernahme aus Spalte C (zum Beispiel "=C2")
Spalte I: Spalte E multipliziert mit 100 (zum Beispiel "=E2*100")
Spalte J: Spalte F multipliziert mit 10.000 (zum Beispiel "=F2*10000")
Eine für die genaue Platzierung relevante Punktzahl ergibt sich dann aus der Summe der gewichteten
Kriterien:
Spalte K: Summe der Spalten H bis J
(zum Beispiel: "=SUMME(H2:J2)")
Die Ergebnisse aus Spalte K nutzen Sie dann in der gewohnten Form in einer RANG-Funktion. Wenn Sie
beispielsweise Mannschaftsergebnisse in den Zeilen 2 bis 19 erfasst haben, geben Sie in Zelle A2
folgende Platzierungsformel für die erste Mannschaft ein:
=RANG(K2;$K$2:$K$19)
Home
Home
Die Formel müssen Sie nur noch nach unten in die Zellen aus Spalte A kopieren, - fertig ist die genaue
Platzierung nach mehreren Kriterien. Eine Sortierung nach Spalte A sorgt schließlich für die passende
Reihenfolge.
RealLastCell Function
Function RealLastCell(TheSheet As Worksheet) As Range
' Returns a single-cell range object that represents
' the intersection of the last non-empty row and the
' last non-empty column
Dim ExcelLastCell As Range
Dim Row As Long, Col As Integer
Dim LastRowWithData As Long, LastColWithData As Integer
Application.ScreenUpdating = False
' ExcelLastCell is what Excel thinks is the last cell
Set ExcelLastCell = TheSheet.Cells.SpecialCells(xlLastCell)
' Determine the last row with data in it
LastRowWithData = ExcelLastCell.Row
Row = ExcelLastCell.Row
Do While Application.CountA(TheSheet.Rows(Row)) = 0 And Row <> 1
Row = Row - 1
Loop
LastRowWithData = Row
' Determine the last column with data in it
LastColWithData = ExcelLastCell.Column
Col = ExcelLastCell.Column
Do While Application.CountA(TheSheet.Columns(Col)) = 0 And Col <> 1
Col = Col - 1
Loop
LastColWithData = Col
' Create the range object
Set RealLastCell = TheSheet.Cells(Row, Col)
End Function
Rechnen mit Uhrzeiten
Versionen: Excel 97, 2000 und 2002
Das Rechnen mit Zeitangaben ist in Excel grundsätzlich kein Problem und viele Anwender nutzen diese
Möglichkeiten beispielsweise zur Arbeitszeiterfassung oder für Abrechnungen aller Art. Die zahlreichen
Anfragen an unsere Helpline zeigen allerdings, dass es viele Sonderfälle gibt, in denen man entweder ein
wenig tricksen muss, um zum Ziel zu kommen. In diesem und im nächsten Tipp der Woche finden Sie
daher einige nützliche Hinweise und fertige Formeln zu so häufigen Problemen wie dem Rechnen mit
negativen Zeitangaben, dem Rechnen über Datumsgrenzen, der Darstellung von Zeiten über 24 Stunden,
der Umwandlung von Uhrzeiten in Dezimalzahlen (und umgekehrt) oder dem Runden von Zeiten auf die
nächsten x Minuten.
Home
Home
Beginnen wir aber mit einigen Grundlagen, die Ihnen helfen werden, die Funktionsweise der Tipps besser
zu verstehen. Obwohl Excel eine Uhrzeit in der Form "12:00" darstellen kann, wird sie intern nicht so
verarbeitet. Für jede Uhrzeit zwischen 0:00 Uhr und 24:00 Uhr gibt es einen Dezimalwert zwischen 0 und
1. Also zum Beispiel:
·
·
·
0,25 = 6:00 Uhr (=1/4 des Tages)
0,5 = 12:00 Uhr (=die Hälfte des Tages)
0,75 = 18:00 Uhr (=3/4 des Tages)
Auf dieser Basis lässt sich jede beliebige Uhrzeit bis auf die Sekunde abbilden. Sie können das ganz
einfach testen, indem Sie eine beliebige Uhrzeit in eine Excel-Zelle eingeben und dann das Menü FormatZellen anwählen, um Zahlenformat "Standard" zuzuweisen. Excel zeigt dann automatisch die Dezimalzahl
an, die hinter der eingegebenen Uhrzeit steckt.
Das einfache Rechnen mit Uhrzeiten ist auf Grundlage von diesem System kein Problem. Geben Sie
beispielsweise in ein leeres Arbeitsblatt in A1 "12:00" als Arbeitsbeginn und in A2 "18:00" als Arbeitsende
ein (jeweils ohne Anführungszeichen). Über die Formel:
=A2-A1
erhalten Sie dann die Anzahl der gearbeiteten Stunden:
6:00
Excel rechnet dabei ganz einfach:
=0,75-0,5
Das Ergebnis 0,25 entspricht wie oben erwähnt der Uhrzeit "6:00". Allerdings, und das ist die erste
Besonderheit, die beim Rechnen mit Uhrzeiten zu beachten ist, können Sie Uhrzeiten nicht direkt in einer
Formel verwendet. Die folgende Formel wird daher mit einem Fehler quittiert:
=18:00-12:00
Die Uhrzeiten sind lediglich spezielle Formatierungen, mit denen nicht gerechnet werden kann. In einer
Formel müssen Sie eine Uhrzeit daher zunächst über die Funktion ZEITWERT in die dezimale
Entsprechung umwandeln. Korrekt wäre daher die folgende Formel:
=ZEITWERT("18:00")-ZEITWERT("12:00")
An diesen Beispielen erkennen Sie schon, dass das Rechnen mit Uhrzeiten nur bei ganz simplen
Additionen und Subtraktionen wirklich einfach ist. Möchten Sie beispielsweise einen Arbeitslohn auf
Grundlage der berechneten Arbeitszeit ermitteln, fangen die Probleme schon an, denn die Multiplikation
von "6:00" mit einem Stundenlohn von beispielsweise 15 EUR führt natürlich nicht zu dem korrekten
Ergebnis. Für diese und andere Anwendungen ist es daher notwendig, die Uhrzeiten in eine Dezimalzahl
zu verwandeln (zum Beispiel 8,5 für 8:30). Zu diesem Zweck bringen Sie die Dezimalzahl, die hinter der
Home
Home
Uhrzeit steht durch die Multiplikation mit 24 Stunden auf eine 24-Stunden-Basis:
=ZEITWERT("6:00")*24
Das Ergebnis ist in diesem Fall "6" und diese Zahl können Sie dann ganz einfach mit einem Stundensatz
multiplizieren. Genauso einfach ist es, eine Dezimalzahl in einer Uhrzeit umzuwandeln: dazu dividieren
Sie die Zahl einfach durch 24. Zum Beispiel:
=9,5/24
Das Ergebnis: 9:30 (nach entsprechender Formatierung über Format-Zellen).
Im zweiten Teil dieses Tipps beschäftigen wir uns nächste Woche mit den folgenden Themen:
·
·
·
·
Negative Zeitangaben
Rechnen über Tagesgrenzen
Zeitangaben über 24 Stunden
Runden auf die nächsten x Minuten (zum Beispiel auf die nächsten 15 Minuten für die
Abrechnung von Dienstleistungen).
Relative Bereichsnamen in Ihren Formeln
Versionen: Excel 97, 2000 und 2002
Die Definition von Bereichsnamen ist die ideale Methode, um schnell bestimmte Bereiche in der Tabelle
anzuwählen und um leicht lesbare Formeln zu erstellen. Wenn Sie nach dem Markieren eines Bereiches
das Menü Einfügen-Namen-Festlegen (Excel 97) oder Einfügen-Namen-Definieren (Excel 2000/2002)
anwählen, ist der Bereichsbezug in dem Feld Bezieht sich auf immer in absoluter Form angegeben. Zum
Beispiel:
='Tabelle1'!$C$4:$C$8
Auf diese Weise stellen Sie sicher, daß bei Verwendung des Bereichsnamens immer dieselben Zellen
angesprochen werden. Wenn Sie also zum Beispiel dem oben angegebenen Bereich den Namen
"Filiale1" zuordnen, werden mit
=SUMME(Filiale1)
immer die Werte in den Feldern C4:C8 summiert und zwar unabhängig davon, an welcher Stelle Sie diese
Formel eintragen.
Wenig bekannt ist die Tatsache, daß Sie durchaus die Möglichkeit haben, einem Namen einen relativen
Bezug zuzuweisen. Ein solcher Name verhält sich dann auch genauso wie ein relativer Zellbezug:
Abhängig von der Position in der Tabelle werden immer andere Felder angesprochen. Relative
Bereichsnamen können Ihnen daher sowohl bei der Erstellung von Formeln als auch bei der Markierung
von Bereichen behilflich sein. Dazu zwei Beispiele:
Home
Home
·
Wenn Ihre Tabellen immer ähnlich aufgebaut sind, können Formeln mit Hilfe von relativen
Bereichsnamen sehr viel schneller erstellt werden. Sie definieren beispielsweise einen Namen,
der sich immer auf die 10 Felder oberhalb der aktuellen Cursorposition bezieht und können den
Namen dann in jeder Zelle der Tabelle verwenden, um die zehn darüberliegenden Zellen zu
summieren.
· Wenn Sie regelmäßig eine bestimmte Anzahl von Zellen relativ zur aktuellen Cursorposition
markieren müssen, legen Sie einen entsprechenden relativen Bereichsnamen fest. Zum Beispiel:
Der Name "Rechts4" bezieht sich auf die vier Zellen neben der aktuellen Cursorposition. Sie
können dann jederzeit F5 (Gehezu) drücken und den Eintrag "Rechts4" anwählen, um die vier
Zellen neben dem Cursor auszuwählen.
Zur Definition eines relativen Bereichsnamens gehen Sie folgendermaßen vor:
1. Markieren Sie zunächst einen Bereich, der in Umfang und Position dem gewünschten relativen
Bereich entspricht.
2. Wählen Sie das Menü Einfügen-Namen-Festlegen (Excel 97) oder Einfügen-Namen-Definieren
(Excel 2000/2002) an.
3. Geben Sie unter Namen in der Arbeitsmappe den gewünschten Bereichsnamen ein.
4. Markieren Sie den Bereichsbezug in dem Feld Bezieht sich auf, bei dem es sich im Augenblick
noch um einen absoluten Bezug handelt.
5. Drücken Sie dreimal die Taste F4. Danach hat Excel den absoluten in einen relativen Bezug
umgewandelt und Sie können das Dialogfeld mit Return verlassen.
Der Name verhält sich in Zukunft wie ein relativer Bereichsbezug: Der ausgewählte oder angesprochene
Bereich hängt von der aktiven Zelle bzw. der Zelle mit der Formel ab.
Rundungsformel auf 0.05 (Währung)
=Runden((Zelle)/5;2)*5 Der Zellwert wird durch 5 geteilt, anschliessend die Anzahl Stellen,
hier immer 2, definiert und das ganze Ergebnis mit 5 multiplizert. Ist das Ergebnis der esrten
Division eine ungerade Zahl (1,3,5,...) so gibt die Multiplikation anschliessend einen „5er Wert“,
ist das Ergebnis gerade, dann einen „0er Wert“.
Runden nach Schweizer Regeln
Versionen: Excel 97, 2000 und 2002
FRAGE: Ich habe ein Problem mit der RUNDEN-Funktion von Excel. In der Schweiz hilft sie mir leider
nicht weiter, denn wir runden immer auf 0,5 Rappen. Also bei 0,67 auf 0.65 oder bei 0.68 auf 0.7. Wie
kann ich Excel diese Rundung beibringen?
B. Krattiger
ANTWORT: Diese Frage erhalten wir sehr häufig von unseren Schweizer Lesern. Excel bietet diese
spezielle Rundungsform standardmäßig nicht an, aber über die folgende Formel kommen Sie zum Ziel
(dabei ist A1 der Bezug auf die Zelle mit dem Wert, den Sie runden möchten):
=RUNDEN(A1*2;1) / 2
Um diese Berechnung als feste Funktion zu integrieren, verwenden Sie die folgende VBA-Funktion:
Function RundenCH(Wert)
RundenCH = Application.Round(Wert * 2, 1) / 2
Home
Home
End Function
Nachdem Sie sie wie in unserer Ausgabe 4/2002 beschrieben in ein Add-In eingefügt haben, können Sie
in Zukunft in Ihren Tabellen die Funktion "RundenCH" verwenden. Zum Beispiel:
=RundenCH(A1)
Rundungsformel auf beliebige Werte
Funktion OBERGRENZE(Zahl;Schritt)
Die Formel rundet grundsätzlich auf, und zwar auf das nächste Vielfache des Wertes, den man
als Schritt eingibt.
Um der Formel auch abrunden beizubringen hilft folgendes (Zahl- die Hälfte der
Schrittzahl;Schritt)
Beispiel: OBERGRENZE(Zelle-0.025;0.05) rundet jeden Rappenbetrag auf 5 Rappen auf oder
ab.
Seitenumbrüche pro Kategorieebene einfügen
Versionen: Excel 97, 2000 und 2002/XP
FRAGE: Kann ich Seitenwechsel so setzen, dass Excel automatisch eine neue Seite beginnt, wenn sich
der Text oder der Wert in einer Spalte ändert? In meinem Fall habe ich eine Tabelle angelegt, in der in
Spalte A bestimmte Hauptkategorien stehen. In den rechts anschließenden Spalten folgen entsprechende
Details. Die Daten sind nach den Hauptkategorien sortiert. Der Übersichtlichkeit halber soll nun jede
Kategoriegruppe auf einer neuen Seite beginnen.
I. Breuer
ANTWORT: Bevor Sie die Seitenumbrüche manuell in der Seitenumbruchvorschau festlegen, setzen Sie
einfach das im Anschluss aufgelistete VBA-Makro ein. Um den Programmcode einzugeben, öffnen Sie die
Arbeitsmappe, in der Sie die kategorienabhängigen Umbrüche setzen wollen, und wechseln Sie mit Alt +
F11 in den Visual Basic-Editor. Dann erstellen Sie mit Einfügen-Modul ein neues VBA-Modul. In das
zugehörige Codefenster tragen Sie die folgenden Programmanweisungen ein:
Sub Seitenumbruch()
Dim lngSuchspalte As Long
Dim lngErsteZeile As Long
Dim lngLetzteZeile As Long
Dim i As Long
Dim LetzterWert, AktuellerWert
lngSuchspalte = 1
lngErsteZeile = 2
lngLetzteZeile = ActiveSheet.UsedRange _
.SpecialCells(xlCellTypeLastCell).Row
LetzterWert = ActiveSheet _
Home
Home
.Cells(lngErsteZeile, lngSuchspalte).Value
For i = lngErsteZeile To lngLetzteZeile
AktuellerWert = ActiveSheet.Cells(i, _
lngSuchspalte).Value
If Not AktuellerWert = LetzterWert _
And Not IsEmpty(AktuellerWert) Then
ActiveSheet.HPageBreaks.Add _
Before:=ActiveSheet.Cells(i, lngSuchspalte)
End If
LetzterWert = AktuellerWert
Next i
End Sub
Passen Sie die Prozedur gleich an Ihre Bedürfnisse an, indem Sie die Werte der Variablen
"lngSuchspalte" und "lngErsteZeile" entsprechend einstellen. "lngSuchspalte" bezeichnet die Spalte, in
der die Texte oder Werte stehen, die den Seitenumbruch bestimmen. Die Zahl, die Sie der Variablen
zuweisen, steht für die Spaltennummer: 1 für Spalte A, 2 für Spalte B usw.
"lngErsteZeile" bezeichnet die Zeile, in der die Prozedur mit der Untersuchung beginnen soll. Wenn Ihre
Tabelle zum Beispiel einen Kopfbereich mit allgemeinen Beschriftungen oder Spaltenüberschriften
enthält, können Sie diese Zeilen von der Gruppierungssuche ausnehmen. Weisen Sie "lngErsteZeile" die
Zeilennummer zu, in der die eigentlichen Daten beginnen.
Ab dieser Zeile durchläuft die Prozedur alle Zellen der mit "lngSuchspalte" angegebenen Spalte bis zum
Ende des Datenbereichs und prüft dabei, ob sich der Wert der aktuellen Zelle von dem der darüber
stehenden Zelle unterscheidet. Berücksichtigt wird dabei auch der Fall, dass Sie die
Kategoriebezeichnung immer nur am Beginn einer neuen Kategoriegruppe eingegeben haben und die
Folgezellen ansonsten leer gelassen haben ("Not IsEmpty(AktuellerWert)").
Falls ein Unterschied vorliegt, fügt die Prozedur einen Seitenumbruch ein.
Nach Eingabe des Programmcodes kehren Sie zur Excel-Arbeitsmappe zurück und lassen sich die
Tabelle mit den auszudruckenden Daten anzeigen. Starten Sie das VBA-Makro, indem Sie Alt + F8
drücken und im Makro-Dialogfeld den Makronamen "Seitenumbruch" mit einem Doppelklick anwählen.
Das Resultat sehen Sie sofort in der Seitenansicht. Beachten Sie in Excel 97 jedoch, dass beim Skalieren
(Befehl Datei-Seite einrichten, Registerkarte Papierformat) nur der Prozentsatz der Verkleinerung
eingestellt wird. Wenn Sie mit der Option Anpassen arbeiten, um zum Beispiel die Druckbreite an das
Papierformat anzupassen, berücksichtigt Excel 97 die Seitenumbrüche nicht.
So lösen Sie die Verknüpfung zwischen Diagramm und Tabelle
Versionen: Excel 97, 2000 und 2002
Home
Home
Jedes Diagramm, das Sie in Excel erstellen, ist standardmäßig mit dem Tabellenbereich
verknüpft, auf deren Grundlage Sie die Grafik erstellt haben. Der Vorteil: Wenn Sie eine oder
mehrere Zahlen in Ihrer Tabelle anpassen, wird das Diagramm automatisch auf den neuesten
Stand gebracht. Nun gibt es aber Situationen, in denen Sie zwar Daten ändern, das Diagramm
aber (beispielsweise aus Dokumentationsgründen) in seinem alten Zustand erhalten möchten.
Zu diesem Zweck müssen Sie die Verknüpfung zwischen dem Diagramm und den Daten
entfernen. Sie haben dazu zwei Möglichkeiten, die wir Ihnen in diesem Tipp vorstellen möchten:
Bei der ersten Technik machen Sie sich die wenig bekannte Tatsache zu Nutze, dass Excel
sowohl Tabellenbereiche als auch Diagramme als Bitmap-Grafik in die Zwischenablage kopieren
kann: Zu diesem Zweck markieren Sie das gewünschte Diagramm, drücken Sie die UmschaltTaste und halten Sie sie gedrückt, während Sie das Menü Bearbeiten-Bild kopieren anwählen
(dieses Menü steht nur zur Verfügung, wenn Sie die Umschalt-Taste gedrückt halten; daher
haben Sie es wahrscheinlich bisher noch nicht bemerkt). Bestätigen Sie im nachfolgenden
Dialogfeld einfach die Standardeinstellungen mit Ok und schon befindet sich eine Kopie Ihres
Diagramms als Bitmap-Grafik in der Zwischenablage. Über das Menü Bearbeiten-Einfügen bzw.
Strg+V können Sie die Grafik auf jedem beliebigen Tabellenblatt einfügen.
Damit steht Ihnen nun eine Kopie Ihres Diagramms zur Verfügung, die keinerlei Verbindung zum
ursprünglichen Datenbereich hat. Wenn Sie Werte in Ihrer Tabelle ändern, wird die
ursprüngliche Version des Diagramms angepasst und die Kopie bleibt unverändert. Der Nachteil
bei dieser Vorgehensweise besteht allerdings darin, dass die Diagrammkopie als Bitmap-Grafik
in keiner Weise mehr bearbeitet werden kann. Sie haben also beispielsweise nicht die
Möglichkeit, den Diagrammtitel zu ändern, eine Legende einzufügen oder die Farben der
Datenreihen anzupassen. Hier kann aber unsere zweite Technik weiterhelfen: Bei genauerer
Betrachtung basiert ein Diagramm wie ein Kalkulationsmodell auf Formeln. Wenn Sie in einem
beliebigen Diagramm einmal eine Datenreihe anklicken, so werden Sie feststellen, dass in der
Bearbeitungszeile eine Formel "=DATENREIHE" erscheint.
Über die Parameter dieser Formel wird die Verknüpfung zwischen Tabelle und Diagramm
hergestellt sowie Excel mitgeteilt, wo Beschriftungen und Daten zu finden sind. Sie können nun
wie in einer Tabelle die Formeln im Diagramm durch ihre aktuellen Ergebnisse ersetzen. Auf
diese Weise lösen Sie die Verknüpfung zwischen Tabelle und Diagramm, so dass wie
gewünscht die aktuelle Darstellung unabhängig von einer Aktualisierung der Daten erhalten
bleibt:
1. Klicken Sie die erste Datenreihe in Ihrem Diagramm an, so dass in der Bearbeitungszeile die
DATENREIHE-Formel zu sehen ist.
2. Markieren Sie die komplette Formel in der Bearbeitungszeile mit der Maus.
3. Drücken Sie F9 und bestätigen Sie mit Return. Excel ersetzt die Formel daraufhin durch
eine Matrix mit den Werten, auf deren Basis das Diagramm zurzeit dargestellt wird.
4. Beginnen Sie für jede weitere Datenreihe in Ihrem Diagramm wieder mit Schritt 1. Das
Ergebnis ist ein Diagramm ohne Verbindung zu Ihrer Tabelle, das sich aber dennoch mit den
gewohnten Funktionen bearbeiten und ändern lässt.
Übrigens: Wenn Sie wie bei unserer ersten Technik das Diagramm sowohl mit als auch ohne
Verknüpfungen benötigen, legen Sie einfach vor dem Entfernen der DATENREIHE-Formeln
Home
Home
eine Kopie an. Verwenden Sie dazu die gewohnten Menüs Bearbeiten-Kopieren und
Bearbeiten-Einfügen.
Speichern von Arbeitsmappen verhindern
Versionen: Excel 97, 2000 und 2002
In der letzten Ausgabe der Excel-Kolumne habe ich Ihnen eine Lösung vorgestellt, mit der Sie verhindern
können, daß eine Tabelle bzw. die komplette Arbeitsmappe gedruckt werden kann. In dieser Aufgabe
verrate ich Ihnen, wie Sie eine Arbeitsmappe vor der Veränderung schützen können, ohne daß Sie diese
Arbeitsmappe mit einem Paßwort belegen müssen. Um einen derartigen Schutz herzustellen, befolgen
Sie die nächsten Arbeitsschritte:
·
·
·
Wechseln Sie mit der Tastenkombination Alt+F11 in die Entwicklungsumgebung von Excel.
Im Projekt-Explorer klicken Sie den Eintrag "DieseArbeitsmappe" doppelt an.
Erfassen Sie danach folgendes Ereignismakro:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As _
Boolean, Cancel As Boolean)
Cancel = True
End Sub
Wenden Sie das Ereignis "Workbook_BeforeSave" an, um den Augenblick abzupassen, an dem der
Anwender versucht die Arbeitsmappe zu speichern. Innerhalb dieses Ereignisses setzen Sie dann das
Argument Cancel auf den Wert True. Damit verhindern Sie effektiv jede Speicherung der Arbeitsmappe.
Selbst wenn der Anwender versucht den Befehl Speichern unter aus dem Menü Datei zu wählen wird es
ihm nicht gelingen dieses Arbeitsmappe zu speichern.
Die optimale Lösung wäre jetzt, wenn Sie über einen kleinen Trick selbst die Arbeitsmappe jederzeit
speichern könnten. So könnten Sie beispielsweise kurz vor dem Speichern der Arbeitsmappe prüfen, ob
in einer bestimmten Zelle ein bestimmter Wert steht. Wenn ja, dann können Sie die Speicherung
zulassen, wenn nicht dann brechen Sie das Ereignismakro und somit die Speicherung der Arbeitsmappe
ab. Der Code für diese Aufgabe sieht wie folgt aus:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As _
Boolean, Cancel As Boolean)
If Sheets("Tabelle1").Range("A1").Value <> 1 Then
Cancel = True
End If
End Sub
Im obigen Ereignismakro fragen Sie den Inhalt der Zelle A1 ab. Steht in Zelle A1 der Wert 1, dann kann
die Arbeitsmappe gespeichert werden. In allen anderen Fällen nicht. Selbstverständlich werden Sie bei
Ihrer Lösung nicht unbedingt die Zelle A1 verwenden, sondern eine etwas weniger auffällige Zelle in
mitten Ihrer Tabelle. Wenn Sie jetzt noch diese Zelle mit der Schriftfarbe weiß belegen, dann ist diese
Zahl überhaupt nicht sichtbar und fällt somit nicht auf. Ein kleiner Trick mit großer Wirkung!
Home
Home
Standard-Dialog von Excel per VBA anzeigen
Versionen: Excel 97, 2000 und 2002
FRAGE: Ich möchte in meinen Makros einige der Standard-Dialoge (zum Beispiel zur Auswahl
der Schriftart) von Excel verwenden. Wie kann ich das erreichen?
H. Bruns
ANTWORT: Die Lösung ist die "Application.Dialogs"-Methode von Excel. Sie übergeben dann
nur noch eine Konstante, die den gewünschten Dialog definiert und können dann beispielsweise
die Schriftart-Auswahl mit der folgenden Zeile aufrufen:
Application.Dialogs(xlDialogFormatFont).Show
Wenn Sie diesen Befehl eingeben, wird nach der Eingabe der öffnenden Klammer automatisch
eine Liste der verfügbaren Konstanten angezeigt. Anhand der Namen können Sie den
zugehörigen Dialog in der Regel eindeutig identifizieren.
Startposition beim Öffnen einer Arbeitsmappe
Versionen: Excel 97, 2000 und 2002
Standardmäßig werden Excel-Arbeitsmappen so in der Konstellation gespeichert, wie sie beim letzten Mal
gesichert wurden. Befinden Sie sich beispielsweise auf der Tabelle3 und haben dort Änderungen
vorgenommen und diese gespeichert, dann werden Sie sich nach dem nächsten Öffnen der Arbeitsmappe
genau in dieser Tabelle wiederfinden. In diesem Punkt verhält sich Excel genau anders als Word. Word
öffnet ein Dokument immer mit dem Mauszeiger am Dokument-Anfang. Excel dagegen nicht! Diese
Feature ist in vielen Fällen wohl ganz nützlich, doch nicht immer. Stellen Sie sich einmal vor, Sie haben
eine Arbeitsmappe, in der in der ersten Tabelle Beschreibungen hinterlegt sind, wie Sie die verschiedene
Tabelle der Arbeitsmappe bearbeiten müssen. In diesem Fall wäre es für einen Anwender sehr
verwirrend, wenn er nach dem Öffnen eine andere Tabelle zu sehen bekommen würde. Dieses Problem
können Sie umgehen, indem Sie ein Ereignis in Excel einstellen. Dazu gehen Sie folgendermaßen vor:
·
·
Drücken Sie Alt+F11, um in die Entwicklungsumgebung von Excel zu gelangen.
Im Projekt-Explorer klicken Sie zweimal auf den Eintrag "DieseArbeitsmappe". Damit haben Sie
Zugriff auf alle Ereignisse der Arbeitsmappe.
· Erfassen Sie folgendes Ereignismakro:
Private Sub Workbook_Open()
On Error GoTo fehler
Sheets("Tabelle1").Activate
Exit Sub
fehler:
MsgBox "Diese Tabelle gibt es nicht!"
End Sub
Sicherheitshalber bauen Sie eine On Error - Anweisung ein, um zu Verhindern, dass das Makro abstürzt,
wenn die Tabelle beispielsweise umbenannt oder gelöscht wurde.
Home
Home
Noch ein kleiner Tipp: Sie haben auch die Möglichkeit, die Tabelle nicht über Ihren Namen, sondern über
den Index anzusprechen. So bedeutet die Anweisung Sheets(1).Activate, dass die erste Tabelle in der
Arbeitsmappe aktiviert werden soll.
Statusmeldungen während der Makroausführung
Versionen: Excel 97, 2000 und 2002
FRAGE: Ist es eigentlich möglich, während der Ausführung eines VBA-Makros Meldungen in der
Statusleiste auszugeben? In meinem konkreten Fall geht es um ein Makro, das umfangreiche
Berechnungen durchführt und deshalb relativ viel Zeit in Anspruch nimmt. Nun will ich verhindern, dass
Anwender denken, der Rechner sei abgestürzt, weil er scheinbar nicht mehr reagiert. So wäre es hilfreich,
wenn während der Berechnungen ein kleiner Hinweis in der Statusleiste erscheint.
H. Schönfelder
ANTWORT: Mit der "StatusBar"-Eigenschaft des Application-Objekts können Sie beliebige Zeichenfolgen
definieren, die in der Statusleiste angezeigt werden. Damit nach Abarbeitung eines langen Makros wieder
die normale Statusleiste (mit dem Text "Bereit") angezeigt wird, setzen Sie die Eigenschaft am Ende auf
den Wert "False".
Hier ein kleines Beispielmakro, das nichts weiter macht als eine Variable hochzuzählen. Während dieses
Vorgangs sehen Sie in der Statusleiste einen Text wie "Bearbeite <x> von 100000". "x" wird jeweils auf
den aktuellen Wert der Zählervariablen gesetzt.
Sub LangesMakro()
Dim Max As Long
Dim i As Long
Max = 100000
For i = 1 To Max
Application.StatusBar = "Bearbeite " & i & _
" von " & Max
Next i
Application.StatusBar = False
End Sub
Wenn Sie das Makro ausführen, informiert Sie die Statusleiste über den aktuellen Status. Es ist sinnvoll,
eine Meldung mit wechselnden Werten auszugeben. Bei der Anzeige von statischem Text könnte ein
Anwender ebenfalls meinen, der Rechner sei abgestürzt.
Sobald die For-Schleife abgearbeitet ist, stellen Sie per "Application.StatusBar = False" wieder den
ursprünglichen Zustand der Statusleiste her. So wird deutlich, dass das Makro beendet ist.
Summenfunktion mit mehr als 30 Argumenten
Versionen: Excel 97, 2000 und 2002
Home
Home
FRAGE: Ich muss in einer Abrechnungstabelle diverse Zellen addieren. Bislang klappte das mit einer
Summenfunktion ohne Probleme. Seit kurzem teilt mir Excel aber mit, dass ich zu viele Argumente an die
Funktion übergebe. Inzwischen habe ich herausgefunden, dass SUMME() maximal 30 Argumente
akzeptiert. Was kann ich machen, wenn ich mehr als 30 nicht zusammenhängende Zellen addieren will?
K. Haberer
ANTWORT: Die Schwierigkeit liegt darin, dass Sie offensichtlich Zellen addieren müssen, die nicht zu
Bereichen zusammengefasst werden können. Ansonsten ließe sich die Anzahl der Argumente natürlich
dadurch reduzieren, dass Einzeladressen zu Bereichen wie "A10:A15" zusammengefasst werden.
Um mehr als 30 einzelne Zellen in einer Summenfunktion anzugeben, müssen Sie Excel überlisten, indem
Sie die Adressen auf andere Weise gruppieren. Das erreichen Sie mit Klammerausdrücken.
Wenn Sie zum Beispiel nur jede zweite Zelle in Spalte A summieren wollen, könnten Sie folgende Formel
einsetzen:
=SUMME((A1;A3;A5;A7;A9);(A11;A13;A15;A17;A19);A21;A23; ...)
Hier gruppieren Sie jeweils die Zellen A1 bis A9 und A11 bis A19. Ab Zelle A21 kommen in diesem
Beispiel wieder normale Einzeladressen zum Einsatz.
Die Klammerausdrücke wertet Excel jeweils als ein einziges Argument der Summenfunktion, so dass Sie
die Standardbegrenzung auf 30 Einzelzellen leicht umgehen können.
SVERWEIS Beispiel Schulnoten per Excel-Tabelle ermitteln
Versionen: Excel 97, 2000 und 2002
FRAGE: Als Lehrer möchte ich einen Test gerne am Computer auswerten. Dazu habe ich eine ExcelTabelle mit den Schülernamen und den erreichten Punktzahlen angelegt. Wie schaffe ich es jetzt, dass
Excel automatisch die entsprechende Note zuordnet?
F. Schmitz
ANTWORT: Davon ausgehend, dass die maximal erreichbare Punktzahl sowie die Punktgrenzen für die
einzelnen Noten feststehen, kommen Sie mit einer SVERWEIS-Funktion am schnellen zum Ziel.
Sie können die Schülernamen und die erreichten Punkte dann zum Beispiel in die Spalten A und B eines
Tabellenblatts eintragen. Spalte C lassen Sie frei für die Notenformel. In einem anderen Bereich - etwa
rechts daneben in den Spalten E und F - müssen Sie anschließend die Punktgrenzen für die Noten
definieren. Das könnte wie folgt aussehen:
ab Note
06
18 5
25 4
35 3
42 2
Home
Home
47 1
Für die linke Spalte wurde bewusst die Spaltenüberschrift "ab" gewählt. Da Sie keine Grenzen wie "von 0
bis 17 Punkten" eingeben können, müssen Sie immer die Untergrenzen der jeweiligen Notenstufe
eintragen. Im obigen Beispiel gibt es etwa ab 35 Punkten eine "3", auch mit 41,9 Punkten gibt es noch
eine "3" und erst mit 42 Punkten erreicht die Schülerin/der Schüler eine "2".
Nachdem Sie die Grenzen definiert und in die rechts angrenzenden Zellen die jeweiligen Noten
eingegeben haben, stellen Sie die Benotungsformel auf - im Beispielmodell in Spalte C.
Wenn die erste Zeile Spaltenüberschriften enthält, beginnen Sie in Zelle C2, in die Sie folgende
SVERWEIS-Formel eintragen:
=SVERWEIS(B2;$E$2:$F$7;2)
Damit suchen Sie die erreichte Punktzahl (Zelle B2) in der ersten Spalte des Bereichs E2:F7 (hier als
absoluter Zellbezug). Als Ergebnis lassen Sie den Wert aus Spalte "2" des Suchbereichs (also aus Spalte
F) ausgeben, der rechts neben der Fundstelle steht. Falls SVERWEIS keine exakte Entsprechung findet,
liefert es den Zeileneintrag zur nächst kleineren Zahl. Das erklärt, warum Sie jeweils die Untergrenzen der
Notenbereiche angeben müssen.
Wenn Sie die Adresse der Suchmatrix wie in der Beispielformel als absoluten Bezug eingeben, können
Sie die Formel ohne weitere Anpassungen in die darunter liegenden Zellen kopieren.
Unser Tipp: Wenn Sie die Notengrenzen nicht neben die Schülerbewertungen schreiben wollen, können
Sie sie selbstverständlich auch in einem separaten Tabellenblatt eingeben. Anschließend müssen Sie nur
den Zellbezug in der SVERWEIS-Formel anpassen.
Tabellen komfortabel auswerten
Versionen: Excel 97, 2000 und 2002
FRAGE: Wenn ich Zellen in einer Excel-Tabelle markiere, wird in der Statuszeile bekanntlich die
Summe der Zellinhalte angezeigt. Sind auch andere Auswertungen mit dieser Funktion möglich?
G. Jakubowski
ANTWORT: Diese unter der Bezeichnung "AutoBerechnung" bekannte Funktion, bietet noch
fünf weitere Auswertungsmöglichkeiten:
·
·
·
·
·
Home
"Mittelwert" liefert den Durchschnitt der ausgewählten Zellen.
"Zählen" berechnet die Anzahl der ausgefüllten Zellen im markierten Bereich. Eine Zelle
gilt als ausgefüllt, wenn sie eine Formel, Zahl oder Zeichenkette enthält.
Im Gegensatz zu "Zählen" zeigt "Anzahl" nur die Anzahl der Zellen an, die eine Zahl oder
Formel enthalten.
"Maximum" zeigt den größten Wert im markierten Bereich.
"Minimum" ermittelt den kleinsten Wert.
Home
Der Wechsel der Funktion ist einfach: Klicken Sie mit der rechten Maustaste auf die Statusleiste,
um ein Kontextmenü aufzurufen, in dem alle verfügbaren Optionen angezeigt werden; Sie
müssen nur noch den gewünschten Eintrag anklicken.
Übrigens: Die "AutoBerechnung" funktioniert nicht nur mit zusammenhängenden Bereichen,
sondern auch für beliebige Zellen in einer Tabelle. Klicken Sie die gewünschten Zellen dazu
einfach bei gedrückter Strg-Taste an und in der Statuszeile erscheint das Ergebnis.
Tabellen-Bereiche komfortabel vergleichen
Versionen: Excel 97, 2000 und 2002
Möchten Sie voll automatisch die Werte in zwei Bereichen vergleichen und gezielt die Zellen mit
Unterschieden markieren lassen? Mit der bedingten Formatierung kommen Sie weiter. Nehmen
wir beispielsweise an, daß Sie am Ende letzten Jahres ein Budget für das erste Quartal 2001
erstellt haben. Die Ist-Werte wurden ebenfalls in eine Tabelle eingetragen, die genauso
aufgebaut ist wie der Budgetentwurf. Mit den folgenden Schritten erreichen Sie, daß in den IstZahlen die Zellen markiert werden, in denen das Budget überschritten wurde:
1. Markieren Sie den Bereich mit Ist-Zahlen, und rufen Sie das Menü Format-Bedingte
Formatierung auf.
2. Klicken Sie in der ersten Dropdown-Liste auf den Eintrag "Zellwert ist", und markieren Sie in
der zweiten Liste "größer als".
3. In das letzte Feld geben Sie eine Formel mit einem Bezug zur linken oberen Zelle des
Bereiches mit Budget-Zahlen ein. Für unser Beispiel ist das die Zelle C5, so daß die Formel
folgendermaßen lautet: =C5
4. Klicken Sie auf Format und legen Sie das Format fest, mit dem Excel die Zellen mit
überschrittenen Budgetbeträgen markieren soll.
5. Nachdem Sie mit Ok bestätigt haben, können Sie das Format mit einem weiteren Klick auf
Ok zuweisen. Excel hebt daraufhin die Zellen hervor, deren Wert größer ist als in der
vergleichbaren Zelle im Budgetbereich.
Sie können diese Technik natürlich auch einsetzen, um beliebige andere Bedingungen prüfen zu
lassen. Die einzige Voraussetzung ist, daß die zu vergleichenden Bereiche genau gleich
aufgebaut sind. Besonders erwähnenswert ist noch die Tatsache, daß Sie den Vorgang nicht
wiederholen müssen, wenn sich Werte ändern. Excel vergleicht die Bereiche in Zukunft voll
automatisch und hebt gegebenenfalls neue Zellen hervor oder entfernt Formatierungen.
Tabellenblatt verbergen
Kann ich ein Tabellenblatt so verbergen, dass es nicht mehr eingeblendet werden kann?
Sie können ein Blatt als "Very Hidden" kennzeichnen. Damit bleibt das Blatt zumindest dem normalen
Excel-Anwender gänzlich verborgen. Um die Ansichtsoption einzuschalten, können Sie folgende VBAAnweisung verwenden:
Sheets("Tabelle1").Visible = xlVeryHidden
Ein Tabellenblatt mit der Eigenschaft "Very Hidden" kann mit dem Befehl Format-Blatt-Einblenden nicht
wieder sichtbar gemacht werden, da der Tabellenname gar nicht erst in der Liste des Dialogfelds
erscheint. Für jeden, der sich mit VBA auskennt, ist dieser "Schutz" natürlich ein leicht zu überwindendes
Home
Home
Hindernis.
Sheets("Tabelle1").Visible = True
Wobei der Name der Tabelle bekannt sein muss.
Tabellenblätter absolut sicher verstecken
Versionen: Excel 97, 2000 und 2002
FRAGE: Über das Menü Format-Blatt-Ausblenden gibt es bekanntlich die Möglichkeit, ein
Tabellenblatt zu verstecken, so daß es nicht mehr im Register der Arbeitsmappe angezeigt wird.
Allerdings muß ein Anwender nur das Menü Format-Blatt-Einblenden anwählen, um es wieder
sichtbar zu machen. Gibt es außerdem Schutz der Arbeitsmappe noch eine andere Möglichkeit,
um das zu verhindern?
B. Schmit
ANTWORT: Tatsächlich bietet Excel die Möglichkeit, einem Tabellenblatt den Status "very
hidden" zuzuweisen, damit es nicht mehr im Dialogfeld Format-Blatt-Einblenden zu sehen ist.
Dazu gehen Sie folgendermaßen vor:
1. Drücken Sie Alt+F11, um die VBA-Entwicklungsumgebung aufzurufen.
2. Im Projektfenster erscheinen in einer Baumstruktur die Module, UserForms und Objekte alle
geöffneten Arbeitsmappen. Unter dem Projekt der gewünschten Datei markieren Sie in der
Kategorie "Microsoft Excel Objekte" den Namen des Blattes, das Sie ausblenden möchten.
3. Drücken Sie F4, um das Eigenschaftenfenster einzublenden.
4. Scrollen Sie an das Ende des Fensters und stellen Sie die Eigenschaft "Visible" auf
"xlSheetVeryHidden".
5. Verlassen Sie den VBA-Editor mit Datei-Schließen und zurück zu Microsoft Excel.
Das Tabellenblatt ist damit ausgeblendet und kann auch nicht mehr über Format-BlattEinblenden sichtbar gemacht werden. Der einzige Weg führt über die VBA-Umgebung, was die
meisten Anwender davon abhalten wird, auf die versteckten Informationen zuzugreifen. Um den
Zugriff absolut unmöglich zu machen, wählen Sie in der Entwicklungsumgebung das Menü
Extras-Eigenschaften von VBAProject an und definieren Sie auf der Registerkarte "Schutz" ein
Paßwort.
Tagessaldo komfortabel berechnen
Versionen: Excel 97, 2000 und 2002
FRAGE: Ich erfasse in einer Excel-Tabelle die Umsätze auf meinem Bankkonto. Als
Zusatzinformation möchte ich gerne den jeweiligen Tagessaldo berechnen. Es soll also nicht der
Kontostand nach jeder Buchung sondern nur der Abschlusssaldo jedes einzelnen Tages
ausgegeben werden. Geht das auch, ohne komplexe Formeln aufstellen zu müssen?
M. Durmus
ANTWORT: Für diese Aufgabe eignet sich am besten die Teilergebnis-Funktion von Excel.
Damit gliedern Sie gleichzeitig Ihre Tabelle, so dass Sie sich bei Bedarf ausschließlich die
Tagessaldi anschauen können.
Um die Tabellenzeilen sinnvoll gliedern zu können, benötigen Sie in diesem Fall eine
Home
Home
Datumsspalte. Wichtig ist außerdem, dass Ihre Liste Spaltenüberschriften wie "Datum",
"Buchungstext", "Betrag" usw. enthält. Falls Sie die Kontobewegungen nicht ohnehin
chronologisch erfassen, sortieren Sie die Liste dann zunächst nach dem Datum. Dazu markieren
Sie eine beliebige Zelle innerhalb Ihres "Kontobuchs" und wählen das Menü Daten-Sortieren an.
Legen Sie die Spalte mit dem Datum als erstes Sortierkriterium fest.
Anschließend rufen Sie im Menü Daten den Befehl Teilergebnisse auf. Im zugehörigen
Dialogfeld stellen Sie das Dropdown-Feld Gruppieren nach auf die Datumsspalte ein. Im zweiten
Dropdown-Feld ist normalerweise schon "Summe" vorgegeben, so dass Sie hier keine
Änderungen vornehmen müssen. In der Liste, die je nach Excel-Version mit Bezogen auf oder
mit Teilergebnisse addieren zu überschrieben ist, versehen Sie die Spalte der Kontoumsätze mit
einem Häkchen. Bei allen anderen Spaltenüberschriften entfernen Sie das Häkchen. Nach
einem Klick auf Ok erhalten Sie die gewünschten Tagessaldi.
Außerdem gliedert Excel die Tabelle. Ein Mausklick auf die Gliederungsebene der Tagessaldi
genügt, um die Details auszublenden und nur die Ergebniszeilen anzuzeigen.
Text- ins Zahlenformat umwandeln
Versionen: Excel 97, 2000 und 2002
FRAGE: Wenn ich Dateien aus meiner Finanzsoftware zur weiteren Bearbeitung in Excel lade,
muss ich immer wieder feststellen, dass einige Zahlenspalten als Texte dargestellt werden. Ich
habe es schon mit verschiedenen Austauschformaten versucht. Weder das dBase-Format noch
Text- beziehungsweise CSV-Dateien brachten nennenswerte Verbesserungen. Gibt es ein
besseres Format für den Datenaustausch oder kann ich die Textwerte wenigstens aus Excel
heraus in ein Zahlenformat umwandeln? Ich wäre für jede Lösung dankbar.
B. Schönfelder
ANTWORT: Beim Importieren von Fremdformaten kommt es häufig vor, dass Zahlenwerte nicht
als solche übernommen werden. Sie werden wie Zeichenfolgen behandelt, was daran zu
erkennen ist, dass Sie linksbündig in den Zellen ausgerichtet sind. Nur selten nützt es etwas, mit
dem Befehl Format-Zellen das Zahlenformat auf "Standard" zurückzusetzen. Dennoch ist diese
Methode einen Versuch wert.
Falls Sie damit nicht weiter kommen und falls die falsch formatierten Zahlenwerte in einer
einzelnen Spalte stehen, sollten Sie folgendes Verfahren ausprobieren:
1. Markieren Sie die Spalte, in der Zahlenwerte fälschlicherweise im Textformat erscheinen.
2. Wählen Sie im Menü Daten den Befehl Text in Spalten an.
3. Wie beim Importieren einer Textdatei können Sie nun die Spalteneinträge konvertieren.
Dazu aktivieren Sie auf der ersten Seite des Assistenten die Option Getrennt.
4. Nachdem Sie mit der Schaltfläche Weiter zum zweiten Schritt der Datenumwandlung gelangt
sind, markieren Sie als Trennzeichen das Kontrollkästchen Tab (Excel 97) bzw. Tabstopp.
Falls noch andere Kontrollkästchen aktiviert sind, entfernen Sie die entsprechenden
Häkchen. Dann gehen Sie mit Weiter zur letzten Seite des Assistenten.
5. Achten Sie darauf, dass im Bereich Datenformat der Spalten die Option Standard markiert
ist und klicken Sie dann auf Ende (Excel 97) bzw. Fertig stellen.
Home
Home
In den meisten Fällen wandelt Excel die Spalte anschließend in echte Werte um, sodass sie
rechtsbündig in den Zellen stehen. Unter Umständen müssen Sie mit dem Befehl Format-Zellen
nur noch das Zahlenformat anpassen, damit alle Dezimalstellen angezeigt werden.
Sollten Sie mit der Textkonvertierung nicht das gewünschte Resultat erzielen oder sollten die
fraglichen Werte nicht untereinander in einer Spalte stehen, können Sie es mit der folgenden
Methode versuchen:
1. Suchen Sie eine leere Zelle im Tabellenblatt mit den falsch formatierten Zahlenwerten.
2. Geben Sie die Zahl "1" in diese Zelle ein.
3. Markieren Sie die Zelle mit dem Wert 1 und drücken Sie die Tastenkombination Strg +
C, um den Wert zu kopieren.
4. Nun markieren Sie die Zellen mit dem unbrauchbaren Textformat. Es kann sich auch um
eine Mehrfachmarkierung handeln, die Sie mit der Maus bei gedrückter Strg-Taste
auswählen.
5. Wählen Sie im Menü Bearbeiten den Befehl Inhalte einfügen an.
6. Daraufhin öffnet sich ein Dialogfeld, in dem Sie die Option Multiplizieren markieren. Nach
einen Klick auf Ok multipliziert Excel alle markierten Zellen mit dem Wert 1, was dazu
führt, dass die Ergebnisse nicht mehr als Text sondern als Zahl ausgegeben werden.
Als Excel 2002-Anwender steht Ihnen womöglich eine noch einfachere Umwandlungsfunktion
zur Verfügung. Sofern Excel erkennt, dass es sich bei dem Zellinhalt um eine Zahl handelt,
diese jedoch als Text angezeigt wird, finden Sie oben links in der betreffenden Zelle einen
kleinen Fehlerindikator.
Sobald Sie eine so markierte Zelle mit der Maus anklicken, erscheint direkt daneben ein
"Smarttag". Nun genügt ein weiterer Mausklick auf das Smarttag, um ein Kontextmenü mit
Optionen zur Fehlerbeseitigung zu öffnen. Um das Formatierungsproblem zu lösen, wählen Sie
den Befehl In eine Zahl umwandeln an. Auf diese Weise lassen sich übrigens auch ganze
Zellbereiche bearbeiten.
Textwerte mit Zahlen oder Formeln kombinieren
Versionen: Excel 97, 2000 und 2002
FRAGE: Gibt es eine Möglichkeit, in einer Zelle einen feststehenden Text mit dem Inhalt einer beliebigen
anderen Zelle zusammenzufassen? - Konkret möchte ich eine Spaltenüberschrift erstellen, in der so
etwas wie "Arbeitsstunden (à 32 Euro)" steht. Dabei soll sich die Preisangabe nach dem Inhalt einer
anderen Zelle richten.
K. Dremel
ANTWORT: In Excel können Sie beliebige Verknüpfungen mit dem Operator "&" erstellen. Der Operator
kann mit festen Text- oder Zahlenwerten, mit Zellbezügen und sogar mit Tabellenfunktionen eingesetzt
werden.
Angenommen, Zelle B2 enthält den Wert "32". Nun möchten Sie in Zelle D4 eine Spaltenüberschrift
eingeben, die sich auf den Inhalt von Zelle B2 bezieht. Um bei dem Beispiel aus Ihrer Frage zu bleiben,
geben Sie in D4 folgende Formel ein:
Home
Home
="Arbeitsstunden (à "&B2&" Euro)"
Als Spaltenüberschrift erscheint der gewünschte Text. Und wenn Sie in Zelle B2 einen anderen Wert
(beispielsweise "25") eingeben, ändert sich auch die Beschriftung in Zelle D4 - in diesem Fall in
"Arbeitsstunden (à 25 Euro)".
Wie Sie an der Formel erkennen, setzen Sie den Operator "&" genau so wie einen herkömmlichen
mathematischen Operator (etwa "+" oder "-") ein. Bei Angabe eines Zellbezuges geht im Formelergebnis
jedoch die Formatierung der ursprünglichen Zelle verloren. Sie beseitigen das Problem, indem Sie die
Tabellenfunktion TEXT zusammen mit dem "&"-Operator einsetzen.
Nehmen Sie als Grundlage wieder das oben genannte Beispiel, wobei Sie Zelle B2 das EuroWährungsformat zuweisen. In der Tabelle erscheint der Wert dann als "32,00 €". Auf die
Verknüpfungsformel in Zelle D4 hat das keinen Einfluss; dort sehen Sie nur den unformatierten Wert "32".
Um auch hier zwei Dezimalstellen plus Währungssymbol anzuzeigen, ändern Sie die Formel in D4 in:
="Arbeitsstunden (à "&TEXT(B2;"#.##0,00 €;-#.##0,00 €")&")"
Nun erhalten Sie die gewünschte Spaltenüberschrift "Arbeitsstunden (à 32,00 €)".
VBA-Code per Knopfdruck aus einer Excel-Datei entfernen
Versionen: Excel 97, 2000 und 2002/XP
FRAGE: Ich suche nach einer Möglichkeit, alle Elemente, die irgendwie mit Programmierung zu tun
haben, aus einer Arbeitsmappe zu entfernen. Leider gibt es keinen Befehl, mit dem sich alle Makros
entfernen ließen. Und mit meinen Programmierkenntnissen habe ich bislang keinen Weg gefunden, auf
den VB-Editor mit seinen Modulen, UserForms usw. zuzugreifen. Wissen Sie Rat?
K. Soderberg
ANTWORT: Es ist korrekt, dass es in Excel keinen Befehl zum Löschen aller Makros, Module oder
ähnlichem gibt. So bleibt Ihnen nur, selbst eine VBA-Prozedur zu entwickeln, die diese Aufgabe für Sie
erledigt.
Dass Sie auf der Suche nach einer Möglichkeit, die Komponenten im Visual Basic-Editor anzusprechen,
bislang nicht fündig geworden sind, mag daran liegen, dass Sie es nur mit dem üblichen Objektmodell
versucht haben. Die Standardobjekte von Excel und VBA enthalten keine Bezeichner für Module,
UserForms usw. Wenn Sie aber einen Verweis auf die erweiterten VBA-Objekte einrichten, können Sie
die entsprechenden Komponenten bearbeiten und auch löschen.
Die folgenden Schritte zeigen, wie Sie eine Prozedur in der "Persönlichen Makroarbeitsmappe" anlegen,
die nicht nur alle Elemente aus dem VBA-Projekt einer Datei löscht, sondern auch den Code aus den
integrierten Objekten (beispielsweise "DieseArbeitsmappe" oder "Tabelle1") sowie alle Verweise auf
fremde Objektbibliotheken entfernt und anschließend auch noch Blätter beseitigt, die Makrovorlagen oder
Excel 5.0-Dialoge enthalten.
1. Starten Sie Excel und wählen Sie das Menü Extras-Makro-Aufzeichnen an.
Home
Home
2. Als Makroname geben Sie "CodeEntfernen" ein. Außerdem aktivieren Sie im Dropdown-Feld
Makro speichern in den Eintrag "Persönliche Makroarbeitsmappe". Falls die Mappe noch nicht
existiert, legt Excel sie automatisch an. Und da die "Persönliche Makroarbeitsmappe" immer
automatisch mit Excel geladen wird, steht Ihnen die anschließend eingegebene Prozedur
jederzeit zur Verfügung.
3. Klicken Sie auf Ok, um die Makroaufzeichnung zu starten. - Beenden Sie den Vorgang jedoch
sofort wieder, indem Sie in der Aufzeichnungs-Symbolleiste auf Aufzeichnung beenden klicken.
Diese ersten drei Schritte dienen allein dem Zweck, die "Persönliche Makroarbeitsmappe"
verfügbar zu machen.
4. Um den "richtigen" Prozedurcode einzugeben, wechseln Sie mit der Tastenkombination Alt + F11
in den Visual Basic-Editor.
5. Dort rufen Sie Extras-Makros auf und im daraufhin angezeigten Dialogfeld öffnen Sie ganz unten
das Dropdown-Feld Makros in. Aktivieren Sie den Eintrag "VBAProject (PERSONL.XLS)". Danach
markieren Sie den Makronamen "CodeEntfernen". Ein Mausklick auf die Schaltfläche Bearbeiten
öffnet schließlich ein Codefenster mit dem zugehörigen Prozedurgerüst.
6. Bevor Sie den Prozedurcode ändern, müssen Sie den Verweis auf die erweiterten VBA-Objekte
einrichten. Dazu wählen Sie Extras-Verweise an. Danach suchen Sie in der Liste verfügbarer
Verweise nach dem Eintrag "Microsoft Visual Basic for Applications Extensibility" (in Excel 2000
und 2002 mit dem Versionszusatz "5.3"). Versehen Sie den Verweis per Mausklick mit einem
Häkchen und bestätigen Sie die Erweiterung mit Ok.
7. Nun wenden Sie sich wieder dem Codefenster zu, in dem Sie den Prozedurcode durch folgende
Zeilen ersetzen:
Sub CodeEntfernen()
Dim objKomponente As VBComponent
Dim objKomponenten As VBComponents
Dim objVBAProjekt As VBProject
Dim objVerweis As Reference
Dim objBlatt As Worksheet
Dim objDialogblatt As DialogSheet
If ActiveWorkbook.Name <> ThisWorkbook.Name Then
Set objVBAProjekt = ActiveWorkbook.VBProject
Set objKomponenten = objVBAProjekt.VBComponents
For Each objKomponente In objKomponenten
With objKomponente
Select Case .Type
Case vbext_ct_StdModule, _
vbext_ct_ClassModule, _
vbext_ct_MSForm
objKomponenten.Remove objKomponente
Case vbext_ct_Document
.CodeModule.DeleteLines _
1, .CodeModule.CountOfLines
End Select
End With
Next
For Each objVerweis In objVBAProjekt.References
Home
Home
If Not objVerweis.BuiltIn Then
objVBAProjekt.References.Remove objVerweis
End If
Next
Application.DisplayAlerts = False
For Each objBlatt In Excel4MacroSheets
objBlatt.Delete
Next
For Each objDialogblatt In DialogSheets
objDialogblatt.Delete
Next
Application.DisplayAlerts = True
End If
End Sub
·
Verlassen Sie den VB-Editor über das Menü Datei und den Befehl Schließen und zurück zu
Microsoft Excel.
Jetzt können Sie eine beliebige Arbeitsmappe öffnen, aus der Sie die überflüssigen Code-Elemente
entfernen wollen. Die Prozedur "CodeEntfernen" befreit sie auf Knopfdruck von dem Ballast. Dazu wählen
Sie in Excel Extras-Makro-Makros an. Anschließend starten Sie die Prozedur
"PERSONL.XLS!CodeEntfernen" per Doppelklick.
Dieses Verfahren funktioniert bei allen Arbeitsmappen bis auf die "Persönliche Makroarbeitsmappe". Die
If-Abfrage am Anfang der Prozedur sorgt dafür, dass sich der Prozedurcode nicht selbst zerstören kann.
Achten Sie beim Beenden von Excel unbedingt darauf, die Änderungen an der "Persönlichen
Makroarbeitsmappe" zu speichern. Excel blendet selbstständig eine entsprechende Meldung ein, die Sie
dann mit Ja beantworten.
Verknüpfungen optimal im Griff
Versionen: Excel 97, 2000 und 2002
Verknüpfungen zwischen Arbeitsmappen lassen sich in Excel mit wenigen Mausklicks erstellen.
Wenn Sie von dieser Möglichkeit häufig Gebrauch machen, werden Ihnen die folgenden Tips zur
Lösung von zwei häufig auftretenden Problemen sicherlich nützlich sein: Bei Tabellen, die Sie
vor längerer Zeit erstellt haben, stehen Sie häufig vor der Frage, welche Formeln überhaupt
Verknüpfungen verwenden. Es gibt sogar Situationen, in denen Sie gezielt die Bezüge auf
externe Dateien entfernen wollen, doch ein oder zwei Verknüpfungen lassen sich einfach nicht
ausfindig machen und beim Öffnen der Datei werden Sie jedesmal wieder fragt, ob eine
Aktualisierung erwünscht ist.
Mit der folgenden Technik suchen Sie gezielt nach den Formeln, die einen Bezug auf externe
Dateien enthalten (bitte beachten Sie, daß die folgende Technik auch in Excel 2002 funktioniert,
Ihnen hier aber neue Möglichkeit rund um Verknüpfungen zur Verfügung stehen, die wir im
Home
Home
Bonus-Tip dieser Ausgabe näher erläutern):
4. Markieren Sie den Bereich, den Excel durchsuchen soll. Um alle Zellen und Formeln zu
durchsuchen, müssen Sie keine Markierung vornehmen.
5. Wählen Sie das Menü Bearbeiten-Suchen an, oder drücken Sie Strg+F.
6. Geben Sie in das Feld Suchen nach das Ausrufezeichen "!" (ohne Anführungszeichen) ein
und markieren Sie in der Dropdown-Liste Suchen in den Eintrag "Formeln". Außerdem
sollten Sie sicherstellen, daß das Kontrollkästchen Nur ganze Zellen suchen (Excel 97/2000)
oder Gesamten Zellinhalt vergleichen (Excel 2002) nicht aktiviert ist!
7. Nach Weitersuchen setzt Excel den Cursor auf die erste Zelle mit einer Verknüpfung. Wenn
es sich dabei um eine Verknüpfung handelt, die Sie entfernen möchten, verlassen Sie den
Suchen-Dialog mit Schließen und ersetzen den externen Bezug durch einen konstanten
Wert. Danach können Sie Bearbeiten-Suchen erneut aufrufen und die Suche fortsetzen.
Handelt es sich bei der Fundstelle noch nicht um den gesuchten Bezug, setzen Sie den
Vorgang einfach mit Weitersuchen fort.
Unser zweiter Tip beschäftigt sich mit der schnellsten Technik zum Prüfen und Öffnen der
verknüpften Datei. So wollen Sie häufig feststellen, welche Bedeutung ein bestimmter externer
Bezug hat und wie er sich in der Quelltabelle errechnet. Neben dem manuellen Öffnen der
entsprechenden Datei, bietet sich zunächst einmal der Weg über das Dialogfeld BearbeitenVerknüpfungen an. Hier werden alle Dateien aufgelistet, zu denen Verknüpfungen bestehen. Sie
markieren lediglich den gewünschten Eintrag und klicken auf Quelle öffnen, um auf die
entsprechende Datei zugreifen zu können. Der Nachteil dabei: Sie müssen manuell die Zelle
bzw. den Bereich ausfindig machen, aus dem Daten ausgelesen werden. Interessant ist daher
die folgende Technik, bei der die Quelldatei nicht nur geöffnet, sondern gleichzeitig auch der
entsprechende Bereich markiert wird:
1. Wählen Sie das Menü Extras-Optionen an, und wechseln Sie auf die Registerkarte
"Bearbeiten".
2. Schalten Sie das Kontrollkästchen Direkte Zellbearbeitung aktivieren aus, und bestätigen Sie
mit Ok.
3. Klicken Sie nun ganz einfach die Zelle zweimal an, die den externen Bezug auf die
gewünschte Datei enthält. Excel öffnet die Datenquelle daraufhin und markiert den
verknüpften Bereich bzw. die verknüpfte Zelle.
Der einzige Nachteil dieser Technik: Sie müssen auf die direkte Zellbearbeitung verzichten.
Wenn Sie also zweimal auf eine Zelle klicken oder F2 drücken, nehmen Sie die Änderungen am
aktuellen Zellinhalt nicht mehr direkt im Arbeitsplatz, sondern in der Bearbeitungszeile vor.
Verlaufsbalken in Ihren VBA-Makros
Versionen: Excel 97, 2000 und 2002/XP
Werden in Excel längere Makros abgearbeitet, sollten Sie sich überlegen, ob Sie nicht einen
Fortschrittsbalken anbieten möchten. Bei länger laufenden Makros ist es empfehlenswert, den Anwender
während des Makroablaufs mit gelegentlichen Meldungen in der Statusleiste oder sogar einem
Verlaufsbalken über die einzelnen Schritte bzw. den Verlauf des Makros in Kenntnis zu setzen.
Eine Methode für die Erstellung eines Laufbalkens ist die Nutzung eines zusätzlichen Steuerelements,
Home
Home
das Sie in Windows bestimmt schon öfters gesehen haben, wenn Sie Programme installiert haben. Das
Steuerelement "Microsoft Progressbar Control" können Sie für den Einsatz bei UserForms aktivieren,
indem Sie das Symbol Weitere Steuerelemente in der Toolbox anklicken und das Steuerelement aus der
Liste auswählen. Fügen Sie dieses Steuerelement und eine Schaltfläche in einer neuen Userform ein.
Fügen Sie zusätzlich noch eine Schaltfläche in die Userform ein und führen Sie einen Doppelkick auf
diese Schaltfläche durch. Hinterlegen Sie dann den folgenden Code:
Private Sub CommandButton1_Click()
Dim i As Integer
Me!ProgressBar1.Min = 0
Me!ProgressBar1.Max = 10000
For i = Me!ProgressBar1.Min To Me!ProgressBar1.Max
Me!ProgressBar1.Value = i
i=i+1
Next
Me!ProgressBar1.Value = 0
End Sub
Mithilfe der Eigenschaften Min bzw. Max bestimmen Sie den Start- bzw. Endwert des Steuerelements. Mit
diesen beiden Informationen können Sie sich dann eine Schleife zusammenstellen, die so lange
durchlaufen wird, bis Max-Wert erreicht ist. Läuft Ihnen der Fortschrittbalken zu schnell, erhöhen Sie den
Max-Wert einfach. Den Fortschrittbalken bekommen Sie automatisch zum Laufen, wenn Sie die
Eigenschaft "Value" des Fortschrittbalkens füttern.
Verweis auf letzte Zeile in anderem Tabellenblatt (dynamisch)
Ich möchte aus einer Tabelle auf die jeweils letzte Zeile einer anderen Verweisen, wobei die
Tabelle, die die Informationen liefert, laufend ergänzt wird.
mal davon ausgehend, das die Zeilen in der Quelltabelle lückenlos ausgefüllt sind:
=INDIREKT("tabelle2!A"&ANZAHL2(Tabelle2!A:A))
Werte und Bereiche komfortabel überwachen
Versionen: Excel 97, 2000, 2002/XP und 2003
Umfangreiche Kalkulationsmodelle haben Sie am besten im Griff, wenn Sie die
Schlüsselergebnisse aus einer oder mehreren Tabellen möglichst einfach kontrollieren können.
Wie entwickeln sich beispielsweise die Kosten einer Werbeaktion, wenn Sie bestimmte
Parameter ändern oder wie viele Budgetpositionen müssen Sie noch ändern, bis das
gewünschte Ergebnis erzielt ist? Excel aktualisiert die Formeln mit diesen Informationen zwar
immer automatische, sobald Sie die Ausgangswerte ändern, aber in der Regel müssen Sie nach
einer Änderung zunächst wieder in den entsprechenden Bereich scrollen, das Tabellenblatt
wechseln oder gar eine andere Datei aktivieren, um das aktuelle Ergebnis zu prüfen. In diesem
Tipp der Woche möchten wir Ihnen einige interessante Techniken vorstellen, mit deren Hilfe Sie
wichtige Werte in Ihren Kalkulationsmodellen schneller und komfortabler überwachen können.
Unabhängig davon, ob sich die gewünschten Informationen in derselben Tabelle oder in einer
verknüpften Datei befinden, haben Sie die aktuellen Formelergebnisse immer um Blick und
Home
Home
können die Auswirkungen jeder Änderung sofort beobachten. Und so müssen Sie dazu
vorgehen:
1. Markieren Sie die Zellen, die Sie überwachen möchten. Bitte beachten Sie, dass eine
Mehrfachauswahl an dieser Stelle nicht erlaubt ist. Wenn sich die fraglichen Werte also
in mehreren nicht zusammenhängenden Bereichen befinden, müssen Sie noch einen
zusätzlichen Arbeitsschritt einplanen. Legen Sie entweder in einem ungenutzten Bereich
einer bereits vorhandenen oder in einer neuen Tabelle einen Bereich an, in dem Sie die
gewünschten Informationen in mehreren untereinander liegenden Zellen
zusammenfassen. Sie verwenden dabei einfach Formel in der Form "=H6", um
beispielsweise das aktuelle Ergebnis aus Zelle H6 zu übernehmen.
2. Wählen Sie das Menü Bearbeiten-Kopieren an.
3. Scrollen Sie jetzt in den Tabellenbereich, in dem Sie die Inhalte der markierten Zellen zur
Überwachung anzeigen möchten. Auf Wunsch kann es sich dabei um ein anderes
Tabellenblatt oder sogar eine andere Arbeitsmappe handeln. Klicken Sie eine beliebige
Zelle in dem Bereich an, in dem die Informationen eingefügt werden sollen. Dabei kann
es sich auch um ausgefüllte Zellen handeln, denn die Inhalte werden beim
nachfolgenden Einfügen nicht überschrieben!
4. Drücken Sie die Umschalt-Tasten und halten Sie sie gedrückt, während Sie das Menü
Bearbeiten anwählen.
5. Sie finden hier nun ein neues Menü Verknüpftes Bild einfügen (Excel 2000/2002/2003)
bzw. Verknüpfte Grafik einfügen (Excel 97), das Sie nun anwählen.
6. An der ausgewählten Position erscheint daraufhin eine Grafik mit den Inhalten des
markierten Bereiches. Sie können dieses Bild ganz einfach mit der Maus anklicken und
an eine beliebige Position verschieben. Die Inhalte sind mit den entsprechenden Zellen
verknüpft, so dass Sie jede Änderung im Blick haben.
Wenn Sie diese interessante Möglichkeit häufiger nutzen möchten, sollten Sie einen weiteren
Trick kennen: Sie können die Symbolleiste von um ein kleines Kamera-Symbol erweitern, mit
dessen Hilfe Sie eine verknüpfte Grafik mit Zellinhalten noch schneller anlegen können:
1. Klicken Sie mit der rechten Maustaste in eine beliebige Symbolleiste und wählen Sie das
Kontextmenü Anpassen an.
2. Wechseln Sie auf die Registerkarte "Befehle" und markieren Sie den Eintrag "Extras" in
der Liste Kategorien.
3. Suchen Sie in der Liste Befehle nach dem Eintrag "Kamera". Klicken Sie ihn an und
ziehen Sie ihn bei gedrückter linker Maustaste an die gewünschte Position in einer der
aktuellen Symbolleisten von Excel und lasse Sie die Maustaste los.
Wenn Sie in Zukunft einen Bereich überwachen möchten, markieren Sie die gewünschten
Zellen, klicken auf das Kamera-Symbol und klicken dann an die Stelle, an der die Grafik
erscheinen soll. Schneller und einfacher geht es nicht...
Unabhängig davon, welche der oben beschriebenen Techniken Sie verwenden, erhalten Sie in
beiden Fällen als Ergebnis eine Grafik mit den gewünschten Zellinhalten. Sie haben daher wie
bei jeder anderen Grafik die Möglichkeit, das Kontextmenü Grafik formatieren zu nutzen, um den
überwachten Bereich durch eine spezielle Formatierung (Linien/Farben) hervorzuheben.
Sowohl das Menü Bearbeiten-Verknüpffte Grafik einfügen als auch das Kamera-Symbol stehen
Home
Home
Ihnen durchgängig in allen Excel-Versionen von 97 bis 2003 zur Verfügung. In Excel 2002/XP
und 2003 gibt es zusätzlich noch eine interessante Alternative:
1. Klicken Sie eine beliebige Symbolleiste mit der rechten Maustaste an und wählen Sie
den Eintrag "Überwachungsfenster" aus.
2. Excel blendet daraufhin eine Liste ein, in die Sie beliebig viele Zellen/Bereiche zur
ständigen Überwachung aufnehmen können. Zu diesem Zweck klicken Sie einfach auf
Überwachung hinzufügen, markieren den gewünschten Bereich und bestätigen mit
Hinzufügen.
3. Im Überwachungsfenster erscheinen daraufhin die Bezüge der entsprechenden Zellen
samt aktuellen Ergebnis und eventuell vorhandener Formel. Außerdem können Sie den
Namen der Arbeitsmappe und der entsprechenden Tabelle ablesen.
Möchten Sie später eine dieser Überwachungen entfernen, markieren Sie den entsprechenden
Listeneintrag und klicken auf Überwachung löschen. Übrigens: Sobald Sie eine Arbeitsmappe
schließen, verschwinden automatisch die entsprechenden Einträge im Überwachungsfenster.
Die von Ihnen festgelegten Überwachungszellen bleiben aber gespeichert und erscheinen
wieder im Fenster, sobald Sie die Arbeitsmappe öffnen.
Werteanzahl und Summe je nach Auswahlkriterium
Versionen: Excel 97, 2000 und 2002
FRAGE: Ich habe eine Liste mit Bestellungen angelegt und möchte jetzt wissen, wie viele Bestellungen in
einem bestimmten Preissegment liegen, beispielsweise alle Bestellungen mit einem Umfang zwischen
100 und 200 Euro. Trotz diverser Experimente bin ich nicht weiter gekommen. Können Sie mir helfen? U.
Basedow
ANTWORT: Die Lösung ist eine Arrayformel, in der Sie die Zellinhalte mit Ihrem Auswahlkriterium
vergleichen und anschließend die Summe aus allen Vergleichsergebnissen bilden. Das klingt
komplizierter als es ist, vor allem wenn Sie sich folgendes Beispiel anschauen.
Angenommen, Sie haben verschiedene Bestellsummen im Bereich C2:C20 eingegeben. Nun wollen Sie
sich in Zelle E2 anzeigen lassen, wie viele dieser Bestellungen ein Volumen zwischen 100 und 200 Euro
haben. Dazu tragen Sie in E2 folgende Formel ein:
=SUMME((C2:C20>=100)*(C2:C20<=200))
Aber halt! Damit die Formel als Arrayformel erkannt wird, müssen Sie sie mit der Tastenkombination
Strg+Umschalt+Return abschließen. Ihre Eingabe ist korrekt, wenn Excel die Formel in der
Bearbeitungszeile mit geschweiften Klammern ({...}) umgibt. Dann erhalten Sie sofort die gesuchte
Werteanzahl.
Das Prinzip dahinter ist Folgendes: Excel vergleicht Zelle für Zelle des Bereichs C2:C20 mit den
Auswahlkriterien. Das Ergebnis ist jeweils ein logischer Wert - entweder "Wahr" oder "Falsch". Das
wiederum entspricht den mathematischen Werten "1" oder "0". Die Multiplikation lautet also entweder "0 *
0", "1 * 0", "0 * 1" oder "1 * 1". Nur im letzten Fall, das heißt wenn beide Vergleiche "Wahr" sind, liefert die
Multiplikation den Wert "1".
Home
Home
Da alle Zellen des angegebenen Bereichs geprüft werden, erhalten Sie schließlich eine Folge von Nullen
und Einsen. Die Einzelwerte werden dann einfach von der Summenfunktion addiert und das Ergebnis
entspricht der Anzahl der Zellen, die in den Kriterienbereich fallen. Aufgrund der Eingabe als Arrayformel
kann Excel die Auswertung in einer einzigen Zelle vornehmen.
Wenn Sie wollen, können Sie die Funktionalität sogar noch erweitern und in einer weiteren Zelle die
Summe aller Bestellungen innerhalb eines bestimmten Wertebereichs ermitteln. Um zum Beispiel
auszurechnen, wie hoch die Summe der Bestellungen zwischen 100 und 200 Euro ist, geben Sie in Zelle
E3 diese Arrayformel (!) ein:
=SUMME((C2:C20>=100)*(C2:C20<=200)*C2:C20)
Wiederholen-Formate
Versionen: Excel 97, 2000 und 2002
FRAGE: Nachdem ich eine Zelle beispielsweise fett formatiert habe, möchte ich das selbe
Format möglichst schnell diversen anderen Zellen zuweisen. Praktisch wäre da der Einsatz der
Wiederholen-Schaltfläche in der Excel-Symbolleiste. Leider funktioniert sie nicht. Nur das
Rückgängig-Symbol ist verfügbar. Muss man erst einen Trick anwenden, um das WiederholenSymbol zu aktivieren?
A. Elsner
ANTWORT: Das von Ihnen beschriebene Verhalten lässt sich leider nicht abstellen. Das
Wiederholen-Symbol ist erst verfügbar, sobald Sie eine Aktion mit der Rückgängig-Schaltfläche
aus der Excel-Symbolleiste, mit dem entsprechenden Befehl im Menü Bearbeiten oder mit der
Tastenkombination Strg+Z zurückgenommen haben.
Um eine Formatierung trotzdem so schnell wie möglich in anderen Zellen zu wiederholen,
wählen Sie entweder das Menü Bearbeiten-Wiederholen: <Aktion> an oder, - was wirklich
schnell geht, - Sie drücken Strg+Y.
Word 2002 verliert Zahlenformatierungen beim Seriendruck
Versionen: Excel 97, 2000 und 2002
FRAGE: Seitdem ich Office XP einsetze, funktioniert der Seriendruck nicht mehr fehlerfrei.
Wenn ich in einem Word-Serienbrief eine Excel-Tabelle als Datenquelle definiere, werden zwar
die Felder erkannt und in Word eingefügt. Aber dabei gehen sämtliche Zahlenformate verloren.
Währungsangaben erscheinen als reine Zahlenwerte und Datumsangaben im amerikanischen
Format "Monat/Tag/Jahr". Wenn das Datum fehlt, zeigt Word sogar den unsinnigen Wert
"12:00:00 AM" an. Wie kann ich die ursprüngliche Formatierung aus der Excel-Tabelle wieder
herstellen?
J. Schmidt
ANTWORT: Grund für den Verlust der Zahlen- und Datumsformatierungen ist der Importfilter,
den Word 2002 standardmäßig benutzt. Leider haben Sie im neu gestalteten "Seriendruck-
Home
Home
Assistenten" keine Möglichkeit, die Importweise zu beeinflussen, was dazu führt, dass Sie im
Word-Dokument unformatierte Zahlenwerte erhalten.
Nur wenn Sie in den Word-Optionen einen Schalter setzen, erlaubt der Seriendruck-Assistent
die manuelle Auswahl des Importverfahrens. Auf diese Weise kommen Sie zum gewünschten
Resultat mit den Originalformatierungen aus der Excel-Tabelle. Und so gehen Sie vor:
1. Starten Sie Word und rufen Sie Extras-Optionen auf.
2. Aktivieren Sie auf der Registerkarte "Allgemein" das Kontrollkästchen Konvertierung beim
Öffnen bestätigen. Übernehmen Sie die Änderung mit Ok.
3. Legen Sie ein neues Dokument für den Seriendruck an.
4. Starten Sie den Seriendruck-Assistenten per Extras-Briefe und Sendungen-SeriendruckAssistent.
5. Legen Sie die Optionen der ersten beiden Schritte nach Belieben fest, um zum Beispiel
einen "Brief" im "aktuellen Dokument" zu erstellen.
6. In Schritt 3 des Assistenten öffnen Sie per Durchsuchen die Excel-Datei, die als Datenquelle
dienen soll. Sie werden feststellen, dass Sie nicht sofort zum nächsten Schritt des
Assistenten gelangen, sondern in einem Dialogfeld das Importverfahren auswählen können.
Damit die Formatierungen aus Excel beibehalten werden, markieren Sie "MS-ExcelArbeitsblätter über DDE", was Sie mit Ok bestätigen.
7. Als nächstes bestimmen Sie den Tabellenbereich, der die Daten für den Serienbrief enthält idealerweise ein benannter Bereich.
8. Ein weiteres Dialogfeld präsentiert nun die verfügbaren Datensätze. Um alle Sätze in den
Seriendruck einfließen zu lassen, fahren Sie einfach mit Ok fort. - Achten Sie aber auf die
angezeigten Feldinhalte: Schon hier erkennen Sie, dass die Zahlenformate mit dem Original
übereinstimmen.
9. Fahren Sie wie gewohnt im Seriendruck-Assistenten fort, um den Text und die
Seriendruckfelder einzufügen.
10. In der Vorschau können Sie noch einmal überprüfen, ob die Zahlen- und Datumsangaben
Ihren Vorstellungen entsprechen. Da Sie die Daten per DDE importiert haben, dürfte das
Resultat Ihren Vorstellungen entsprechen.
ZÄHLENWENN mit mehreren Bedingungen (273)
Lösung
Zu durchsuchende Spalten: A und B
{=SUMME(WENN((A1:A100="x")*(B1:B100="y");1))}
ohne WENN:
{=SUMME((A1:A100="x")*(B1:B100="y"))}
oder:
{=SUMME(N(A1:A100&B1:B100="x"&"y"))}
auch ohne Array möglich (ausgetüftelt von Jürgen Recker):
=SUMMENPRODUKT((A1:A100="x")*(B1:B100="y"))
Home
Home
Durch die Multiplikation(en) sind natürlich auch mehr als 2 Bedingungen kombinierbar.
Zeichenketten komfortabel per VBA verarbeiten
Versionen: Excel 2000 und 2002
Bei der Entwicklung von Lösungen oder einzelnen Funktionen zur Automatisierung Ihrer Arbeitsmappen
stehen Sie immer wieder vor dem Problem, die Inhalte einer Zeichenkette wie zum Beispiel "Dr. Peter
Hoffmann" in ihre einzelnen Bestandteile wie "Titel", "Vorname" und "Nachname" zerlegen zu müssen. Ab
Excel 2000 können Sie dazu die wenig bekannte Funktion "Split()" einsetzen. Um sich mit der
Arbeitsweise von "Split()" vertraut zu machen, geben Sie zunächst folgende Funktion in einem beliebigen
Modul ein:
Function SplitTest(strText As String) As Integer
Dim X As Variant, I As Integer
X = Split(strText)
For I = 0 To UBound(X)
Debug.Print X(I)
Next I
SplitTest = UBound(X) + 1
End Function
Die Funktion erwartet als Parameter eine beliebige Zeichenkette. Diese wird dann über "Split()" in ein
Array konvertiert. "UBound()" gibt anschließend Auskunft, wie viele Elemente das Array beinhaltet.
Gezählt wird ab "0", so dass "UBound() +1" die Anzahl der Wörter in der Zeichenkette liefert. Diese
Angabe verwenden wir hier, um die einzelnen Wörter in einer Schleife aus dem Array im Direktbereich
auszugeben. Die Eingabe von
? SplitTest("Dies ist ein Test!")
im Direktfenster (Strg+G) zeigt dann zum Beispiel folgendes Ergebnis:
·
·
·
·
·
Dies
ist
ein
Test!
4
Um beispielsweise nur die Anzahl Wörter in einer Zeichenkette zu zählen, setzen Sie "Split()"
folgendermaßen ein:
Function SplitCount(strText As String) As Integer
Dim X As Variant
X = Split(strText)
SplitCount = UBound(X) + 1
Home
Home
End Function
Das Ergebnis ist die Anzahl Wörter oder "0", wenn die Zeichenkette leer ist. Ähnlich einfach können Sie
mit "Split()" bestimmte Wörter aus einer Zeichenkette extrahieren:
Function SplitExtract(strText As String, _
intNum As Integer) As String
Dim X As Variant
X = Split(strText)
If intNum > 0 And intNum - 1 <= UBound(X) Then
SplitExtract = X(intNum - 1)
Else
SplitExtract = ""
End If
End Function
Wenn Sie im Direktbereich einmal
? SplitExtract("Dr. Peter Hoffmann",2)
eingeben, wird als Ergebnis "Peter" ausgegeben. Die Kombination dieser beiden Funktionen können Sie
beispielsweise einsetzen, um beim Import von Daten Elemente wie Titel, Vornamen und Nachnamen aus
Adressen korrekt in Ihre Tabelle zu schreiben:
If SplitCount(strInput) = 3 Then
.....
ActiveSheet.Cells(1,2) = SplitExtract(strInput, 1)
ActiveSheet.Cells(2,2)= SplitExtract(strInput, 2)
ActiveSheet.Cells(3,2) = SplitExtract(strInput, 3)
.....
Else 'nur Vorname und Nachname
.....
ActiveSheet.Cells(2,2) = SplitExtract(strInput, 1)
ActiveSheet.Cells(3,2) = SplitExtract(strInput, 2)
.....
End If
Die gezeigten Funktionen gehen jeweils davon aus, dass zwischen den Wörter immer ein Leerzeichen als
Trennzeichen vorhanden ist. Oftmals werden aber andere Trennzeichen wie Kommas oder Semikolons
verwendet. Soll "Split()" nach diesen Trennzeichen splitten, können Sie das über einen zweiten,
optionalen Parameter angeben. Die folgende Funktion liefert beispielsweise die einzelnen Felder aus
einer CSV-Zeile "Nachname;Vorname;Strasse;PLZ;Ort" als Array:
Home
Home
Function SplitCSVFieldnames(strText As String, _
strSeparator As String) As Variant
Dim X As Variant
X = Split(strText, strSeparator)
SplitCSVFieldnames = X
End Function
Ein Aufruf wie zum Beispiel der folgende erlaubt dann die Abarbeitung der einzelnen Felder je nach
Anforderung:
Sub Test()
.....
Open "Test.txt" For Input As #1
Line Input #1, strInput
arrFelder = SplitCSVFieldnamesd(strInput, ";")
strNachname = arrFelder(0)
strVorname = arrFelder(1)
strStrasse = arrFelder(2)
.....
End Sub
Zeitangaben über 24 Stunden summieren
Versionen: Excel 97, 2000 und 2002
FRAGE: Wir setzen Excel zur Erfassung von Arbeitszeiten ein. In einigen Fällen gibt es dabei
Probleme: Wenn ich beispielsweise die Zeiten 10:00, 10:00 und 10:00 in eine Tabelle eingebe
und summiere, ist das Ergebnis nicht wie erwartet 30:00 sondern 06:00.
ANTWORT: Diese Frage gehört zweifellos ganz an den Anfang jeder FAQ-Sammlung. Excel
wird in vielen Fällen zum Addieren von Zeitangaben eingesetzt. Dabei taucht immer wieder
dasselbe Problem auf: Solange die addierten Zeitangaben kleiner als 24 Stunden sind, stimmt
das Ergebnis. Bei größeren Werten wird immer nur der über 24 hinausgehende Anteil angezeigt.
Die Lösung: Markieren Sie die Zelle, in der Sie die Zeiten summieren, wählen Sie das Menü
Format-Zellen an, wechseln Sie auf die Registerkarte "Zahlen" und markieren Sie die Kategorie
"Uhrzeit". In der Liste Formate wählen Sie den Eintrag "37:30:55" an und bestätigen mit Ok.
Excel zeigt in der Tabelle daraufhin das korrekte Ergebnis an, weil Sie nun ein Zahlenformat
ausgewählt haben, das Zeiten über 24 Stunden darstellen kann. Das standardmäßig von Excel
verwendete Format ist nur für Uhrzeiten ausgelegt und endet dementsprechend mit 24:00 Uhr.
Zellinhalte komplett löschen
Versionen: Excel 97, 2000 und 2002
Home
Home
FRAGE: Wenn ich eine oder mehrere Zellen in einer Tabelle markiere und dann Entf zum
Löschen drücke, werden die Zellinhalte wie gewünscht entfernt. Alle Formatierungen, die vorher
zugewiesen waren, bleiben allerdings erhalten. Wie kann ich auch diese Zuweisungen löschen?
G. Murat
ANTWORT: Tatsächlich ist die Entf-Taste in Excel so belegt, daß nur die Zellinhalte und nicht
die Formatierungen gelöscht werden. Um das zu erreichen, wählen Sie nach dem Markieren der
gewünschten Zelle bzw. des Bereiches, das Menü Bearbeiten-Löschen-Alles an.
Zirkelbezüge automatisch auflisten
Versionen: Excel 97, 2000 und 2002
Vor allem in komplexen Kalkulationsmodellen kann es schnell passieren, daß Excel plötzlich eine
Fehlermeldung über nicht auflösbare Zirkelbezüge anzeigt. Bei einem Zirkelbezug hängt die Berechnung
einer Formel direkt oder indirekt vom Ergebnis der Zelle ab, in die Sie die Formel eingetragen haben, so
daß eine normale Berechnung nicht möglich ist. So erzeugen Sie beispielsweise einen Zirkelbezug, wenn
Sie die folgende Formel in Zelle B20 eintragen:
=B20*2
In diesem Fall läßt sich die Ursache des Problems auf den ersten Blick erkennen, aber es gibt Modelle, in
denen der Fehler nicht so eindeutig zu finden ist. Außerdem kommt ein Zirkelbezug selten allein, so daß
die in der Statuszeile oder der Symbolleiste "Zirkelbezug" angezeigte Zelle wenig hilfreich ist. In dem
folgenden Listing finden Sie daher eine VBA-Prozedur, die eine wertvolle Hilfe bei der Fehlersuche in
umfangreichen Kalkulationsmodellen sein wird:
Sub ZirkelbezuegeAuflisten()
Set AktBlatt = ActiveSheet
Sheets.Add
Set NeuesBlatt = ActiveSheet
Zielbereich = ActiveCell.Address
AktBlatt.Activate
Zeilenzähler = 0
On Error GoTo MakroNeuAufnehmen
For Each Zelle In AktBlatt.UsedRange
If Left(Zelle.Formula, 1) = "=" Then
Ergebnis = Intersect(AktBlatt.Range(Zelle.Address), _
AktBlatt.Range(Zelle.Precedents.Address))
NeuesBlatt.Range(Zielbereich).Offset(Zeilenzähler, _
Home
Home
0).Value = Zelle.Address(False, False)
NeuesBlatt.Range(Zielbereich).Offset(Zeilenzähler, _
1).Value = " " & Zelle.Formula
Zeilenzähler = Zeilenzähler + 1
Weiter:
End If
Next
Exit Sub
MakroNeuAufnehmen:
Resume Weiter
End Sub
Nachdem Sie auf eine beliebige Zelle innerhalb der entsprechenden Tabelle geklickt und das Makro
gestartet haben, wird automatisch ein neues Arbeitsblatt erzeugt, in dem alle Zellen mit Zirkelbezügen
sowie den entsprechenden Formeln aufgeführt sind.
Die Funktionsweise des Makros ist schnell erklärt: In einer For-Each-Schleife wird jede Zelle des aktiven
Bereiches (UsedRange) daraufhin überprüft, ob sie eine Formel enthält oder nicht. Sollte das der Fall stellt
das Makro mit Hilfe der Intersect-Methode fest, ob es einen Schnittpunkt zwischen den Vorgängerzellen
(Precedents) und dem aktuellen Bezug gibt. Wenn diese Konstellation eintritt, liegt ein Zirkelbezug vor
und der Bezug sowie die Formel werden in das neue Arbeitsblatt eingetragen. Ist kein Schnittpunkt
vorhanden, wäre das Ergebnis von "Intersect" normalerweise eine Fehlermeldung, aber in unserem Fall
wird der Fehler mit Hilfe von "On Error Goto" auf eine Fehlerbehandlungsroutine gelenkt, die den
nächsten Schleifendurchlauf startet.
Zufallszahlen komfortabel erzeugen
Versionen: Excel 97, 2000 und 2002
Sie suchen nach Testdaten für Ihr Kalkulationsmodell oder möchten verschiedene
Präsentationsgrafiken mit beliebigen Zahlen erstellen? Bisher haben Sie die Werte manuell
eingegeben, aber tatsächlich verfügt Excel über eine wenig bekannte Funktion, die diese
Aufgabe voll automatisch übernehmen kann:
1. Wählen Sie das Menü Extras-Analyse-Funktionen an. Sollte dieser Menüpunkt nicht zur
Verfügung stehen, müssen Sie das entsprechende Add-In zunächst aktivieren. Rufen Sie
dazu das Dialogfeld Extras-Add-In-Manager (Extras-Add-Ins in Excel 2002) auf und schalten
Sie das Kontrollkästchen neben dem Eintrag "Analyse-Funktionen" ein. Anschließend
bestätigen Sie mit Ok.
2. Excel zeigt eine umfangreiche Liste mit Analysefunktionen an. Markieren Sie in diesem Fall
den Eintrag "Zufallszahlengenerierung" und bestätigen Sie mit Ok.
3. Nach wenigen Augenblicken erscheint ein Dialogfeld, in dem Sie nun die gewünschten
Parameter für die Zufallszahlen festlegen können. Als erstes geben Sie neben Anzahl der
Home
Home
4.
5.
6.
7.
8.
Variablen die gewünschte Anzahl von Spalten und neben Anzahl der Zufallszahlen die
Anzahl von Zeilen ein.
Im Kombinationsfeld Verteilung werden Ihnen verschiedene Verfahren zur Generierung der
Zufallszahlen angeboten, die Sie unter anderem auch zur Wahrscheinlichkeitsrechnung
verwenden können. Für die Erzeugung von normalen Testdaten markieren Sie den Eintrag
"Gleichverteilt".
Legen Sie unter "Parameter" den Zahlenbereich für die Zufallszahlen fest. Geben Sie
beispielsweise "10000" und "50000" ein, um Zufallszahlen in diesem Wertebereich zu
generieren.
Auf Wunsch können Sie einen Ausgangswert bestimmen, der für die Berechnung verwendet
wird.
Unter "Ausgabe" stehen werden Ihnen schließlich noch drei Optionen für das Ziel der
Zufallszahlengenerierung angeboten: Lassen Sie die Werte entweder in einen beliebigen
Bereich des aktuellen Tabellenblatts, in ein neues Tabellenblatt oder in eine neue
Arbeitsmappe schreiben.
Nachdem Sie Ihre Einstellungen mit Ok bestätigt haben, erstellt Excel voll automatisch die
gewünschten Zufallszahlen.
Zwei Zellen zusammenfügen mit Zeilenwechsel
"=A1 & ZEICHEN(10) & A2" in C1 eintragen (natürlich ohne Anführungsstriche), anschliessend
unter Zellformat =>Ausrichtung schauen, dass Zeilenumbruch aktiviert ist
Home