Microsoft Excel

Herbers Excel/VBA-Archiv

Text sortieren von Spalte in Zeile | Herbers Excel-Forum


Betrifft: Text sortieren von Spalte in Zeile von: Notzm
Geschrieben am: 19.11.2009 10:32:17

Hallo Leute,

ich hab da ein riesen Problem...

Hab eine Liste mit Adressdaten, die in Zeilen sortiert werden sollen. Jedoch benötige ich jeden Adresssatz in einer eigenen Zeile und jede Zeile eines Adresssatzes in einer eigenen Spalte in der entsprechenden Zeile.
Mit transponieren sortiert er es mir aber immer in eine Zeile...

Geht das vielleicht auch, dass ich die Formatierung automatisch festlegen kann (Bsp. Arial 12, nicht fett, etc.)?
Beispiel habe ich angehängt...

Vielen lieben Dank im Voraus...
LG Daniel

  

Betrifft: Link zur Beispielsdatei von: Notzm
Geschrieben am: 19.11.2009 10:33:25

Hier der Link zum Beispiel:

https://www.herber.de/bbs/user/66046.xls


  

Betrifft: Hilfe...Chef kommt um 12.... von: Notzm
Geschrieben am: 19.11.2009 10:59:07

Bin echt blank.....


  

Betrifft: Cheffe kann kommen von: NoNet
Geschrieben am: 19.11.2009 12:01:52

Hallo Daniel,

Dein Chef kann gerne kommen, nachdem Du folgendes Makro ausgeführt hast :

Sub KlinikenSortieren()
    Dim lngS As Long, lngZ As Long, lngZ1 As Long
    Dim wsAkt As Worksheet, wsSortiert As Worksheet
    
    Set wsAkt = ActiveSheet
    Set wsSortiert = Worksheets.Add
    wsSortiert.Name = "Klinken sortiert"
    wsSortiert.[A1:G1] = Array("Name", "Strasse", "PLZ", "Telefon", "Fax", "eMail", "Internet")
    lngZ1 = 1
    
    With wsAkt
        For lngZ = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
            If Not IsEmpty(.Cells(lngZ, 1)) Then
                If .Cells(lngZ, 1).Font.Size = 18 Then
                    lngS = 1
                    lngZ1 = lngZ1 + 1
                ElseIf IsNumeric(Left(.Cells(lngZ, 1), 5)) Then
                    lngS = 3
                ElseIf Left(.Cells(lngZ, 1), 4) = "Tel." Then
                    lngS = 4
                ElseIf Left(.Cells(lngZ, 1), 4) = "Fax." Then
                    lngS = 5
                ElseIf InStr(.Cells(lngZ, 1), "@") > 0 Then
                    lngS = 6
                ElseIf .Cells(lngZ, 1).Hyperlinks.Count > 0 Then
                    lngS = 1
                    lngZ1 = lngZ1 + 1 'Neue Klinik
                Else
                    lngS = 2
                End If
                
                If IsEmpty(wsSortiert.Cells(lngZ1, lngS)) Then
                    wsSortiert.Cells(lngZ1, lngS) = .Cells(lngZ, 1)
                Else
                    lngZ1 = lngZ1 + 1 'Neue Adresse zur gleichen Klinik
                    wsSortiert.Cells(lngZ1, lngS) = .Cells(lngZ, 1)
                End If
                
                If .Cells(lngZ, 1).Hyperlinks.Count > 0 Then
                    wsSortiert.Cells(lngZ1, 7) = .Cells(lngZ, 1).Hyperlinks(1).Address
                End If
                
            End If
        Next
    End With
    wsSortiert.Columns.AutoFit
End Sub
Ergebnis :

ABCDEFG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

Tabelle eingefügt mit Syntaxhighlighter 4.15

Gruß, NoNet


  

Betrifft: AW: Cheffe kann kommen von: Notzm
Geschrieben am: 19.11.2009 12:15:24

Wow....
Vielen Vielen Dank!!!!!!!!!!


  

Betrifft: ..leider zu spät...1:52... von: robert
Geschrieben am: 19.11.2009 12:27:17

Hi NoNet,

wo ich nicht mal einen Ansatz finde, knallst Du eine Super-Lösung hin ;-)

Spitze !!!

Gruß
Robert


  

Betrifft: zur ...1:52... von: Mike
Geschrieben am: 19.11.2009 12:46:35


Hey Robert,

akribisch genau 1:52 .. scheint fast ein Wettrennen gewesen zu sein .. ;-)

Zur Not hättest Du es ja auch händisch kopieren können, aber wahrscheinlich
warens ja nicht nur 18 Adressen.

Gruss
Mike


  

Betrifft: @Robert : Ich wollte es spannend machen.. von: NoNet
Geschrieben am: 19.11.2009 13:06:07

Hey Robert,

..leider zu spät...1:52...
Ich wollte es spannend machen und Daniel zumindest zu einer 2-minütigen "Hinhaltetaktik" gegenüber seinem Cheffe "nötigen" ;-)

Im Ernst : Genau um 12:00 hatte ich den Beitrag geschrieben und wollte ihn absenden, aber just in diesem Moment kam ein Kollege von mir mit einer anderen Anfrage auf mich zu, die ich ihm noch beantworten musste, daher die Verzögerung von knapp 2 Minuten.

Inhaltlich gesehen ist das Makro nicht sonderlich anspruchsvoll - man muss nur aus der vorhandenen Tabelle erkennen, welche Informationen darin enthalten sind und in welchen Zeilen eine "neue Klinik" adressiert wird.

Gruß, NoNet


  

Betrifft: AW: @NoNet, von wegen...... von: robert
Geschrieben am: 19.11.2009 17:46:48

Hi NoNet,

...nicht anspruchsvoll usw...

für mich ist gerade das erkennen das schwierige, wobei dann eine Lösung
genauso schwierig ist :-(

Aber es macht Spass in guten Lösungen zu stöbern, auch wenn sie manchmal gar nicht,
oder nur sehr schwer zu verstehen sind, aber aufgegeben - wird nur ein Brief :-)

Gruß
Robert


Beiträge aus den Excel-Beispielen zum Thema "Text sortieren von Spalte in Zeile"