Clever-Excel-Forum

Normale Version: Namen aus Arbeitbereichen in neue Liste erstellen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Leute,

ich bin Anfänger mit Excel und habe einen Grundriss mit Zimmern erstellt (Tabelle1). In den Zimmern werden ständig Namen für die Teilnehmer eingetragen. Nun möchte ich das automatisch direkt nach der Eingabe eines neuen Namen eine Namensliste (Tabelle2) um diesen Namen alphabetisch sortiert, ergänzt wird.

Hab einiges gefunden, aber irgendwie auch nicht richtiges.

Für Hilfe wäre ich dankbar.

Excel 2003

Beispiel anbei.

Gruß Tom
Hallo,

Zitat:Excel 2003

wie geht das zusammen mit der Dateiextension *.xlsx?

Habe ich was Wichtiges verpaßt?
Hallo,

mit vba ist es möglich.

Deshalb die Frage: Kann der Fragesteller mit vba umgehen?

Es ist möglich direkt beim Lesen der Namen zu sortieren. Deshalb die Fragen: Win oder Mac, welche .NET - Version?

mfg
Wow. Seit Ihr schnell.

Also erst einmal vielen Dank.

@Käpt`n Blaubär       - Du hast recht. Excel 2007. Bin nicht an meinen gewohnten Rechner.

@ Fennek     - VBA geht so. Hab schon mal was eingebunden.
Hallo,

nicht erschrecken: es war ein Versuch, eine für mich neue Konstriktion zu testen:


Code:
Sub Zimmer()
Dim Nn(300)
Zi = Array("Venus", "Milchstraße", "Regenbogen", "Eisblume", "Mond", "Orchidee", _
"Merkur", "Paradies", "Himmelbett", "Lila", "Sonne", "Wolke", "Sunflower", _
"Troja", "Hilton", "WC", "Dusche", "Dusche + WC", "Einzelraum", "Badewanne", "Frauenraum", "Screeing WC")
For Each c In Range("C3:I33")
   If WorksheetFunction.IsText(c) Then
       Fl = True
       For Each Z In Zi
           If c = Z Then Fl = False: Exit For
       Next Z
   End If
   If Fl Then Nn(i) = c: i = i + 1: 'Debug.Print Nn(i - 1)
Next c
With CreateObject("system.collections.arraylist")
   
For Each s In Nn
   If s <> "" Then Debug.Print s: .Add s
Next s
.Sort
Tx = Split(Join(.toarray(), "#"), "#")
Debug.Print UBound(Tx) 'Join(.toarray(), "; ")

Sheets(2).Cells(2, 2).Resize(UBound(Tx) + 1) = Application.Transpose(Tx)
End With
End Sub


In der bereitgestellten Daten klappt es, es sollte auch anpassbar sein.

mfg
Hallo,

Zitat:@Käpt`n Blaubär       - Du hast recht. Excel 2007. Bin nicht an meinen gewohnten Rechner.

wenn Dein gewohnter Rechner mit xl2003 arbeitet, solltest Du die Datei vielleicht besser als *.xls speichern
und neu hochladen. Wie willst Du sie sonst, wenn Du wieder zu Hause bist, unter xl2003 lesen?
Hallo,

hier noch einmal die optimierte Variante, ohne die Irrwege beim Entwickeln.


Code:
Sub Zimmer()

Zi = Array("Venus", "Milchstraße", "Regenbogen", "Eisblume", "Mond", "Orchidee", _
"Merkur", "Paradies", "Himmelbett", "Lila", "Sonne", "Wolke", "Sunflower", _
"Troja", "Hilton", "WC", "Dusche", "Dusche + WC", "Einzelraum", "Badewanne", "Frauenraum", "Screeing WC")

With CreateObject("system.collections.arraylist")
   For Each c In Sheets(1).Range("C3:I33")
       Fl = False
       If c.Value <> "" Then
           Fl = True
           For Each Z In Zi
               If c = Z Then Fl = False: Exit For
           Next Z
       End If
       If Fl Then .Add c.Value
       Next c
   
   .Sort
   Sheets(2).Cells(2, 2).Resize(.Count) = Application.Transpose(.toarray())
End With

End Sub


mfg