Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1496to1500
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

8000 Zeilen transponieren

8000 Zeilen transponieren
13.06.2016 09:33:46
Daniel
Hallo Zusammen,
ich habe eine User-Liste mit ca. 8000 Einträge in diesem Format:
[User]
uid=DE-TEST
last_name=test
first_name=test
email_address=test@test.de
language=en
[User]
uid=DE-TEST1
last_name=test1
first_name=test1
language=en
Nun ist es meine Aufgabe die Userliste in diesem Format (transponiert) darzustellen:
[User]; uid=DE-TEST;last_name=test;first_name=test......
[User]; uid=DE-TEST1;last_name=test1;first_name=test1......
Ist es möglich mittels Makro von [User] zu [User] zu markieren (wobei die Anzahl an Details von User zu User unterschiedlich ist z.B.: Bei einem ist die E-Mail Adresse vorhanden, beim anderen nicht), kopieren und in einem neuen Sheet transponiert einzufügen?
Klar könnte ich dies alles händisch machen aber bei knapp 8000 Einträgen wird mal schnell zum "Horst".
Danke für eure Hilfe und Grüße,
Daniel

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 8000 Zeilen transponieren
13.06.2016 09:42:09
ransi
HAllo,
Lädst du mal ne kleine Beispieldatei hoch ?
5-6 Datensätze reichen.
ransi

AW: Nachfrage..
13.06.2016 09:43:29
UweD
Hallo
sollen die Daten
- in je eine Zelle der Zeile geschrieben werden; mit Semikolon getrennt
- oder in einelne Zellen nebeneinander
- oder sogar sortenrein (User in A, ... email immer in E usw.?
Gruß UweD

AW: 8000 Zeilen transponieren
13.06.2016 09:56:06
Daniel
Hallo zusammen,
anbei der Fileupload:
https://www.herber.de/bbs/user/106188.xlsx
@UWE D:
Sortenrein wäre natürlich das Non plus ultra, was mir natürlich sehr viel Nacharbeit ersparen würde.
Aber deine 2te Option (oder in einelne Zellen nebeneinander) würde mir auch schon reichen.
Danke und Gruß,
Daniel

Anzeige
AW: 8000 Zeilen transponieren
13.06.2016 10:31:45
UweD
Hallo
inkl. fester Zuordnung

Option Explicit
Sub transformieren()
On Error GoTo Fehler
Dim TB2, i&, j&, LR&, SP%
Application.ScreenUpdating = False
With Sheets("Vorher")
Set TB2 = Sheets("Nachher")
LR = .Cells(Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte
j = 0
TB2.Cells.ClearContents
For i = 1 To LR
Select Case True
Case InStr(.Cells(i, 1), "[User]") > 0: SP = 1
Case InStr(.Cells(i, 1), "uid=") > 0: SP = 2
Case InStr(.Cells(i, 1), "last_name=") > 0: SP = 3
Case InStr(.Cells(i, 1), "first_name=") > 0: SP = 4
Case InStr(.Cells(i, 1), "email_address=") > 0: SP = 5
Case InStr(.Cells(i, 1), "salutation=") > 0: SP = 6
Case InStr(.Cells(i, 1), "language=") > 0: SP = 7
Case InStr(.Cells(i, 1), "accessibility=") > 0: SP = 8
Case InStr(.Cells(i, 1), "time_zone=") > 0: SP = 9
Case InStr(.Cells(i, 1), "department=") > 0: SP = 10
Case InStr(.Cells(i, 1), "telephone=") > 0: SP = 11
Case InStr(.Cells(i, 1), "time_zone=") > 0: SP = 12
Case InStr(.Cells(i, 1), "group=") > 0: SP = 13
Case InStr(.Cells(i, 1), "job_title=") > 0: SP = 14
'erweiterbar
Case Else
MsgBox "Unbekannte Zuordnung '" & .Cells(i, 1) & "'" & vbLf & "in Zeile " & i
End Select
If .Cells(i, 1) = "[User]" Then j = j + 1
TB2.Cells(j, SP) = .Cells(i, 1)
Next
TB2.Cells.EntireColumn.AutoFit
End With
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
End Sub

Gruß UweD

Anzeige
AW: uppps
13.06.2016 10:38:46
UweD
time_zone= doppelt zugewiesen...
so..

Case InStr(.Cells(i, 1), "group=") > 0: SP = 12
Case InStr(.Cells(i, 1), "job_title=") > 0: SP = 13

AW: uppps
13.06.2016 11:50:03
Daniel
Hallo UweD,
funktioniert Bombe :-)
Ich musste noch ein paar zusätzliche Spalten wie z.B.: Telefon hinzufügen,
da meine Quelle ein bisschen mehr beinhaltet.
Vielen Dank für deine Mühe.
Gruß Daniel

AW: gern geschehen owt
13.06.2016 11:52:20
UweD

AW: gern geschehen owt
13.06.2016 13:48:41
Luschi
Hallo UweD & Daniel,
ich würde die For-Schleife so schreiben:

Dim v As Variant
For i = 1 To lr
v = .Cells(i, 1).Value
Select Case True
Case InStr(1, v, "[User]", vbTextCompare): SP = 1
Case InStr(1, v, "uid=", vbTextCompare): SP = 2
Case InStr(1, v, "last_name=", vbTextCompare): SP = 3
Case InStr(1, v, "first_name=", vbTextCompare) > 0: SP = 4
'usw. erweiterbar
Case Else
MsgBox "Unbekannte Zuordnung '" & .Cells(i, 1).Value & "'" & _
vbLf & "in Zeile " & i
End Select
'usw.
Next
Damit gibt es pro Schleifen-Durchlauf nur einen Zugriff auf zu die
untersuchende Zelle und nicht x-mal; das spart viel Zeit.
Gruß von Luschi
aus klein-Paris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige