ich arbeite gerade an einer Excel-Datei (zum Üben).
In der Spalte A ab A2 bis A31 habe ich eine Liste hinterlegt, die sich auf die Nachnamen im Arbeitsblatt Belegung bezieht.
Nun würde ich gern die Matrix im Arbeitsblatt Belegung in eine formatierte Tabelle umwandeln. (Das ist kein Problem.) Nachdem ich dies getan, möchte ich gern folgendes erreichen:
wenn ich in die formatierte Tabelle einen neuen Namen einfüge, alle Nachnamen nochmals alphabetisch sortiere, soll der neu eingetragene Name in der Liste (Spalte A ab A2 bis A31) auftauchen.
Ist das möglich? Wenn ja, wie?
Vielen Dank im Voraus für Ihre Hilfe.
Mit freundlichen Grüßen
####
Hallo Herr F.,
der Trick ist, dass Sie dem Bereich der intelligenten Tabelle einen Namen geben müssen. Dann können Sie den Namen in der Dropdownliste verwenden.
Wird die Liste erweitert (oder verringert), passt sich die Liste an.
Man muss immer aufpassen! Ganz genau hinschauen! Mal eben schnell – das geht einfach nicht!
Ich wollte nur „mal schnell etwas probieren“. Mehrere Mails über Outlook aus Excelversenden an die Mailadresse, die in einer Liste stehen.
Also mal schnell etwas Code getippt (mit einem Verweis auf die Microsoft Outlook-Bibliothek):
Sub MailVersenden()
Dim olApp As Outlook.Application
Dim olMail As Outlook.MailItem
Dim i As Integer
Set olApp = New Outlook.Application
Set olMail = olApp.CreateItem(olMailItem)
For i = 2 To Range("A1").CurrentRegion.Rows.Count
With olMail
.To = Range("B" & i).Value
.Subject = "Diese Mail ist völlig überflüssig"
.Body = "Hallo " & Range("A" & i).Value & "," & vbCr & vbCr & "Nicht wundern - das ist nur eine Testmail" & vbCr & vbCr & "Gruß"
.Send
End With
Next i
End Sub
Und der Test – liefert einen Fehler. Bei der ZWEITEN Mail:
Outlook kennt mindestens einen Namen nicht.
Seltsam! Hinschauen – überlegen – stimmt:
Ich muss INNERHALB der Schleife eine neue Mail erzeugen – das heißt: für jede Zeile wird eine neue Mail versenden:
Sub MailVersenden()
Dim olApp As Outlook.Application
Dim olMail As Outlook.MailItem
Dim i As Integer
Set olApp = New Outlook.Application
For i = 2 To Range("A1").CurrentRegion.Rows.Count
Set olMail = olApp.CreateItem(olMailItem)
With olMail
.To = Range("B" & i).Value
.Subject = "Diese Mail ist völlig überflüssig"
.Body = "Hallo " & Range("A" & i).Value & "," & vbCr & vbCr & "Nicht wundern - das ist nur eine Testmail" & vbCr & vbCr & "Gruß"
.Send
End With
Next i
End Sub
DANN funktioniert es auch. Beim nächsten Mal – halt nicht so schnell!
Ich erhalte eine Excelmappe von einem Teilnehmer zugeschickt – er möchte, dass wir darüber reden.
Ich öffne die Datei und werde aufgefordert, mich anzumelden. Eine Verweigerung bewirkt, dass die Datei nicht geöffnet wird. Also erneut: Datei öffnen, meine Mailadresse eingeben:
Ich werde auf das Firmenportal weitergeleitet, wo ich mich erneut authentifizieren soll.
Kann ich nicht – ich breche ab. Erneut muss ich mich anmelden. Das Spiel wird vier Mal wiederholt. Dann bin ich drin.
Ich entdecke, dass in der Datei zwei Namen auf andere Dateien verweisen, die auf dem SharePoint der Firma liegen.
Diese Namen werden nicht verwendet. Ich lösche sie. Schließe die Datei, öffne sie wieder und: erneut muss ich mich mehrmals „anmelden“. Ich wühle weiter und werde fündig. In den Informationen der Datei befinden sich weitere Verknüpfungen:
Zum Glück kann ich sie löschen und speichern. Beim nächsten Öffnen entdecke ich: der Spuk ist vorbei!
Letzte Woche hat Martin Weiß (der tabellenexperte.de) auf unserem Excelstammtisch einige Tipps zu PowerQuery gegeben – damit Excel nicht mehr so nervt:
Wir haben drei Möglichkeiten gefunden, um Werte, die sich in Excel befinden, als Parameter in PowerQuery zu verwenden:
Die Werte stehen in einer intelligenten Tabelle:
2. Die Zellen, in denen sich die Werte befinden, werden mit einem Namen versehen:
3. Die Werte sind das Ergebnis von Berechnungen von Array-Funktionen, beispielsweise FILTER oder SEQUENZ:
Mourad Louha hat darauf hingewiesen, dass Namen eine maximale Länge von 255 Zeichen haben dürfen. Während man Namen mit einer Länge bis zu 244 Zeichen problemlos verwenden kann, produziert Excel bei einer Buchstabenstabenanzahl von 255 Zeichen Probleme. 256 Zeichen und mehr ist nicht zugelassen.
Test?
Schnell einen langen Text erzeugen – Kleist liefert sehr viele. Die Funktion LÄNGE ermittelt die Anzahl der Zeichen. Und diese kann man in den Namensmanager kopieren und so die Namen erzeugen:
Ein Name mit einer Länge von 273 funktioniert nicht.
Und dann: die Auswahl über das Namensfeld funktioniert nicht:
Die Datenüberprüfung kann den 255er-Namen mit [F3] nicht verwenden:
Und auch nicht die Diagramme:
Also: Finger weg von einem Namen mit 255 Buchstaben! Beschränken wir uns auf Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch – das sind 58 Buchstaben.
Verblüffend! Kennen Sie das? Ich habe ein Tabellenblatt mit einer intelligenten Tabelle. In der Arbeitsmappe wird ein Name oder mehrere Namen definiert, die Bezug auf diese intelligente (dynamische, formatierte, strukturierte) Tabelle nehmen:
Auf einem zweiten Tabellenblatt wird mit einer Formel (oder einer Datenüberprüfung) Bezug auf die Tabelle genommen:
Wird nun dieses Tabellenblatt dupliziert, werden auch die Namen dupliziert – sie liegen nun als Arbeitsmappennamen und Tabellenblattnamen vor:
Dupliziert man nun ein weiteres Mal das Duplikat, erhält man die Frage, „wohin mit den Namen“:
Der Name ist bereits vorhanden. Klicken Sie auf „Ja“, um diese Version des Namens zu verwenden, oder klicken Sie auf „Nein“, um die Version, die Sie verschieben oder kopieren möchten, umzubenennen.
Ich möchte den Namen nicht verschieben oder kopieren!
Und dann? Ist der Name drei Mal vorhanden … einmal als Arbeitsmappenname und zwei Mal als Tabellenblattname.
ich hoffe, Sue haben / hatten ein erholsames Wochenende.
Ich habe an meiner Prozesslandkarte weitergebastelt. Hierzu möchte ich den Abonnenten der Prozesslandkarte einen vereinfachten Interviewfragebogen zur Verfügung stellen. Diesen möchte ich gerne mit meinem Namen und / oder Logo versehen. Dieses soll für Nicht-Excel-Profis nicht löschbar sein. Also: Ich möchte ein Copyright Vermerk der nicht einfach herausgelöscht werden kann.
Hallo Herr H.,
Tippen Sie in eine
beliebigen Zelle
=copyright
Achtung: OHNE KLAMMER!
Dann erscheint Ihr Name. DAS findet keiner wohin ich das versteckt habe.
Möchten Sie so
etwas?
Und: was bekomme ich, wenn ich Ihnen verrate, wie ich das in diese Datei reinbekommen habe (und Sie es wieder rausbekommen)?
Hallo Herr Martin,
das ist ja cool!
Ich weiß schon,
warum ich das mit Ihnen mache!
Aber jetzt mal raus mit der Sprache …. Wie geht das?
Hallo Herr
Hämmerle,
kennen Sie Namen in
Excel? Über den Namensmanager in der Registerkarte Formeln oder über das
Namensfeld neben der Bearbeitungsleiste kann man einen Namen sehen und
erstellen.
Über ein kleines
Makro kann man einen unsichtbaren Namen definieren:
Mit den drei Funktionen BEREICH.VERSCHIEBEN, INDIREKT und XVERWEIS kann man einen dynamischen bereich aufspannen. Diese drei Funktionen kann man als Namen speichern (ich habe sie mal Jahr1, Jahr2 und Jahr3 genannt).
Die Namen mit den Funktionen BEREICH.VERSCHIEBEN und XVERWEIS kann man wunderbar in einem Diagramm verwenden:
Klasse. Auch er nörgelt gerne: Beispielsweise darüber, dass man beim Erstellen einer Tabelle ([Strg] + [T] oder als Tabelle formatieren oder Einfügen / Tabelle nicht den Namen der (neuen) Tabelle eingeben kann:
Outlook nervt auch. Gestern in der Outlook-Schulung stellte eine Teilnehmerin folgende Frage: Sie verschickt ab und zu Mails an mehrere Kunden, die alle auf BCC gesetzt werden, da sie nicht wissen sollen, wer diese Mail noch erhält:
Sie druckt die Mails nun aus. Das Problem: beim Ausdruck erscheinen die Namen, die auf BCC gesetzt wurden, nicht:
Die einzige Lösung, die mir eingefallen ist, war: die Namen aus der BCC-Zeile kopieren, die Mail öffnen, und über die Aktionen als „Nachricht bearbeiten“. Nun kann man die Namen einfügen. Und anschließend ausdrucken …
Wenn man in Excel einem Bereich einen Namen gibt wird dieser im Namensfeld – links in der Bearbeitungsleiste angezeigt. Wählt man den Namen aus, wird der Bereich markiert – der Name wird angezeigt:
Werden jedoch getrennte Bereiche markiert wird der Name nicht angezeigt. Schade!
„Ich finde nichts mehr“, gestand mir der Teilnehmer der Excelschulung, als er eine Datei zeigte, die er selbst erstellt hatte. Ich habe in mehreren Dateien Namen angelegt, die Blätter in meine Masterdatei kopiert und habe nun Angst die Namen löschen, weil ich nicht weiß, wo sie verwendet werden, welche Werte dahinter stecken und ob ich durch das Löschen nicht die Formeln zerstöre.
Tja – es ist blöde, dass man in einer Excelmappe einen Namen dateiweit aber auch blattweit vergeben kann. Dann passiert so etwas!
Erstaunlich. Wenn man eine Liste in eine (intelligente/dynamische) Tabelle verwandelt, wird der Name (hier: „Nordwind“) im Namensmanager angezeigt. Man kann damit arbeiten wie mit anderen Namen, beispielsweise
=ANZAHL2(Nordwind)
Leider wird der Name nicht auf dem Tabellenblatt angezeigt. Vergibt man dagegen selbst einen Namen, erscheint dieser auf dem Tabellenblatt, wenn der Zoom unter 40% liegt.
Ich verstehe es nicht. In einer (großen) Datei befinden sich mehrere Verknüpfungen. Ich lösche sie. Alle – bis auf eine. Sie ist störrisch und lässt sich nicht löschen:
Die Suche in der Datei liefert keinen Erfolg:
Es gibt auch keinen Namen, keine bedingte Formatierung, keine Datenüberprüfung, in der die Verknüpfung zu finden wäre.
Ich öffne das XML-Archiv und suche dort. DORT werde ich fündig:
Den Knoten löschen, das Archiv zippen – schon ist die Verknüpfung weg. Ich wüsste ja gerne wie so etwas passieren kann. Und – gibt es nicht einen bequemeren Weg die Verknüpfungen zu entfernen?
Manchmal stolpert man (ich) über seine eigenen Füße.
Heute. Excelschulung. Ich erkläre die Funktion INDEX. Ich verweise mit INDEX vom zweiten Tabellenblatt auf das erste Blatt „Diäten“. Ich ziehe mit der Maus den Bereich auf. Bei den ersten beiden Spalten lautet die Formel:
=INDEX(Diäten!A1:B24
füge ich die Spalte C hinzu lautet die Formel jedoch:
=INDEX(Diäten
Schließe ich Spalte D ein finde ich nun folgende Formel:
=INDEX(Diäten!A1:D24
Ich grüble eine Weile über das seltsame Phänomen, bis ich dahinter komme, dass ich ja den Bereich A1:C24 benannt habe: er heißt „Diäten“.
Man sollte nicht Tabellenblätter so beschriften wie die Namen, die in der Datei vergeben wurden. Das führt zu Chaos!
Amüsiert. Eine Teilnehmerin zeigt mir eine Datei, bei der Excel „sehr weit nach unten springt“, wenn man die Bildlaufleiste nach unten schiebt. Der Grund ist schnell gefunden: Die Tastenkombination [Strg] + [Ende] springt auf die Zelle SI37826. Da etwa 1.100 Zeilen gefüllt sind, benötigt Excel weitere 36.000 Zeilen.
In der Schulung markiere ich die überflüssigen Zeilen und lösche sie. Es klappt: der Cursor springt nur noch bis Zeile 1.177. Gewonnen.
Zu Hause schaue ich mir die Datei in Ruhe an. Ich finde wirklich nichts in dieser Datei. Kein Inhalt, keine nennenswerte Formatierung, keine Namen, kein Druckbereich, …
Ich wende den Inquire an: Übermäßige Zellformatierung entfernen – tatsächlich – es funktioniert: DAMIT sind auch die leeren Zellen entfernt. Ich weiß nicht, was in der Tabelle drin war – aber jetzt ist es draußen!
Mal wieder verblüfft. Ich „spiele“ gerade ein bisschen Excel – berechne pythagoräische Zahlen. Um sie mit Hilfe des Solvers berechnen zu lassen, vergebe ich Zellnamen: a, b und dann: Fehlermeldung:
Sie müssen entweder einen gültigen Zellbezug oder einen gültigen Namen für den markierten Bereich angeben.
?!?
Verstehe ich nicht. D funktioniert dann wieder, e ebenso … C ist weder eine Funktion noch ein Zellname.
Amüsant: Ich darf eine Zelle „mfg“ nennen, also ihr den Namen „mfg“ geben.
Aber „mfg2“ darf ich sie nicht nennen:
Der Grund ist einleuchtend: da man Namen über das Namensfeld (links neben der Bearbeitungsleiste) vergeben kann, würde ein dort eingegebener Name zur Zelle MFG2 springen. Deshalb dürfen auch nicht die Namen „MF2“ oder „M2“ vergeben werden. Nur „mfg_2“.
Nicht mehr verständlich ist es jedoch, wenn Sie ein Makro mit dem Makrorekorder aufzeichnen, das sie „mfg2“ nennen. DAS ist nicht erlaubt.
Ganz unverständlich wird die Sache jedoch, wenn Sie im Visual Basic-Editor ein Makro erstellen, das den Namen „mfg2“ trägt. DORT ist der Name erlaubt und bereitet keine Probleme ?!?
Noch schlimmer: manchmal bin ich fest davon überzeugt, dass etwas nicht geht. Und dann geht es doch.
Heute hat mich folgende Mail erreicht:
„Hallo Herr Dr. René Martin,
im Video ‘2599_02_05-datenüberpruefung_nutzen.mp4‘ sagten Sie:
Achtung, wenn Sie mit Namen arbeiten, müssen Sie genau wissen, wie die Namen geschrieben werden, weil innerhalb der Datenüberprüfung haben Sie keine Möglichkeit festzustellen, wie heißt der Name nochmal – es gibt hier keine Auswahlliste, an der sie erkennen können, wie der Name geschrieben wurde.
Das ist so nicht korrekt, denn wenn der Cursor im Feld ‘Quelle‘ steht, bringt die F3-Tasste alle definierten Workbooks-Namen zum Vorschein und man kann auswählen.
Gruß von Luschi
Aus klein-Paris“
Danke an Luschi. Und ich habe wieder etwas gelernt.
doch, doch ich bin ganz sicher. Ich habe der Zelle G16 einen Namen („Betreuer“) gegeben. Aber nach einer Weile verschwindet er – er ist weder links oben im Namensfeld noch im Namensmanager zu sehen. Haben Sie eine Ahnung warum?
Namen verschwinden
Wahrscheinlich wird ihre Datei durch Code (VBA oder VS.NET) gesteuert. Und wahrscheinlich hat dort jemand ein Makro geschrieben, das einen Namen „Betreuer“ anlegt – allerdings unsichtbar.
Man kann herausfinden, welche Namen verwendet wurden, beispielsweise so:
Sub Namenstest()
Dim i As Integer
Dim strListe As String
For i = 1 To ActiveWorkbook.Names.Count
strListe = strListe & vbCr & ActiveWorkbook.Names(i).Name & „:“ & ActiveWorkbook.Names(i).Value & “ sichtbar: “ & ActiveWorkbook.Names(i).Visible
Next
MsgBox strListe
End Sub
Mehrere unsichtbare Namen
Denn: Man kann unsichtbare Namen generieren, die mit der Datei gespeichert werden:
Man kann einer Zelle einen Namen geben und verweist nun in Formeln auf diesen Namen und damit auf die Zelle.
Man kann einem Bereich einen Namen geben und kann nun mit dem Namen rechnen.
Man kann über den Namensmanager einem Namen einen festen Wert als Konstante zuweisen.
Man kann über den Namensmanager einem Namen einen dynamischen Bereich zuweisen, der mit einer Formel ermittelt wird.
Vor allem: Name sind sprechend und können so leicht verwendet werden, wenn man das Konzept verstanden hat. Jedoch das Konzept hat einen großen Haken:
Namen können sowohl an die Datei gebunden sein als auch an das Tabellenblatt. Wenn Sie VBA können, wissen Sie sicherlich, dass sowohl das Workbook-Objekt als auch das Worksheet-Objekt einen Namen haben können.
Kostprobe gefällig: Markieren Sie ein Zelle oder einen Bereich auf einem Tabellenblatt. Geben Sie ihm einen Namen. Kopieren das Blatt in eine andere Datei. Kopieren Sie das Blatt noch einmal in eine andere Datei. Was passiert? Nicht die Datei, sondern die beiden Tabellenblätter haben eine Zelle oder einen Bereich, die den gleichen Namen tragen. Wenn man nun eine Formel verwendet:
Wo sind test2 und test3?
ist nicht klar, von welchem Blatt sich Excel den Bereich zieht. Der Namensmanager zeigt es deutlich an:
Mehrere gleichlautende Namen
Die zuerst erstellten (hinüberkopierten) Namen gelten global für die Abreitsmappe (und darauf nimmt test1, test2 und test3 Bezug), die danach erstellten Namen gelten nur lokal für das Blatt.
Das heißt ganz einfach: Höllisch aufpassen mit den Namen! Und: bloß keine Namen mehrmals verwenden! Sonst ist Chaos vorprogrammiert.
Das heißt auch: gutes Konzept, aber leider nicht ganz durchdacht.
Der Namensmanager kann in Excel über die Funktionstaste [F3] aufgerufen werden. Klappt prima – außer an einer Stelle: Ein Bereich wird mit einem Namen belegt (hier: Konsum). Erstellt man in Excel ein Diagramm, ruft über das Symbol „Daten auswählen“ in dem Diagrammdatenbereich mit [F3] den Namensmanager auf, wählt dort einen Namen aus, so steht in dem Textfeld =Name. Die Bestätigung führt zu einer Fehlermeldung:
Namen – nicht möglich
Die Lösung: Es funktioniert, wenn man den Namen ohne Gleichheitszeichen einträgt. Oder mit Gleichheitszeichen muss man den Namen des Tabellenblattes eintragen – also hier: =Schokolade!Konsum