Hallo liebe Leute, habe folgendes Problem. Ich habe ein Tabelle bekommen die in etwa so aussieht.
Adresse: / Teststrasse
Telefon: / Testnummer
Adresse: / Teststrasse
Telefon: / Testnummer
Adresse: / Teststrasse
Telefon: / Testnummer
Also in A immer was es ist und in B dann den Wert dazu... Jetzt dürfte klar sein, dass das nicht ganz übersichtlich ist...
Daher wäre mir lieber ich hätte es so
Adresse: / Telefon
Teststrasse / Testnummer
Teststrasse / Testnummer
usw.
Ne Idee ? Bin leider mit ner Pivottabelle da nicht weitergekommen aber vielleicht war ich auch einfach zu doof :D
Hi,
schreib in C1 die Ziffer 1 und in C2 die Ziffer 2.
Nun markierst Du C1 und C2 und ziehst die Zellen am Anfasser mit gedrückter rechter Maustaste so weit nach unten wie nötig und wählst im daraufhin erscheinenden Kontextmenü "Zellen kopieren".
Dann setzt Du den Filter auf Spalte C, filterst auf 1 und kopierst die sichtbaren Zellen in Spalte A eines neuen Tabellenblatts.
Anschliessend Filter auf 2 und in Spalte B im neuen Blatt kopieren ...
(14.04.2015, 15:35)Kl@us-M. schrieb: [ -> ]Hi,
schreib in C1 die Ziffer 1 und in C2 die Ziffer 2.
Nun markierst Du C1 und C2 und ziehst die Zellen am Anfasser mit gedrückter rechter Maustaste so weit nach unten wie nötig und wählst im daraufhin erscheinenden Kontextmenü "Zellen kopieren".
Dann setzt Du den Filter auf Spalte C, filterst auf 1 und kopierst die sichtbaren Zellen in Spalte A eines neuen Tabellenblatts.
Anschliessend Filter auf 2 und in Spalte B im neuen Blatt kopieren ...
Das ist leider nicht die "optimale" "richtige" Lösung...
Habe es vielleicht auch nicht genau genug beschrieben.
Die Tabelle ist sehr unterschiedlich und nicht linear.
Sprich in A steht immer Was es ist zb. Firma / Anschrift / Telefon / Email und in B steht dann immer der Wert also der Name oder strasse etc.
Die Datensätze sind einfach stumpf untereinander geschrieben und manche Datensätz haben mehr oder weniger Daten sprich manche haben Fax manche keinen...
Also Tabelle sieht in etwa so aus:
A
Firma
Adresse
Tel
Mail
Firma
Adresse
Tel
Fax
Mail
Firma
Adresse
Tel
Homepage
und dann in B der Wert...
Ideen ?
Hi,
warum hast Du das nicht gleich geschrieben?
Ausserdem schreibst Du jetzt "
Also Tabelle sieht in etwa so aus". Daran stört mich das "
in etwa", weil weder ich noch wahrscheinlich die meisten guten Seelen hier im clever-excel-forum Lust und Laune haben, Deine Mappe nachzubauen.
Ich fürchte, das gibt wieder ein Stochern im Nebel, weil zudem einige Dinge ungeklärt sind: Kannst / darfst / willst Du VBA einsetzen? Wie oft muss die Tabelle bearbeitet werden (regelmässig oder einmalig)?
Kannst Du die Mappe (ggf. anonymisiert, aber mit allen relevanten und möglicherweise vorkommenden Datensätzen) mal hier ins Forum hochladen (Anleitung zum Hochladen
siehe hier)?
Hallo,
teste mal folgendes Makro:
Code:
Sub vCardsZuListe()
Dim lngQ As Long, lngZeile As Long, lngSpalte As Long
Dim varQ As Variant, varZ As Variant
Range("D1").CurrentRegion = ""
Range("A1:B1").Copy
Range("A1").Insert xlDown
Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=Range("D1"), Unique:=True
Rows(1).Delete
Columns(4).SpecialCells(xlCellTypeConstants).Copy
Range("E1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Columns(4).Delete
varQ = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).Resize(, 2).Value
varZ = Range("D1").CurrentRegion.Resize(UBound(varQ)).Value
lngZeile = 2
For lngQ = 1 To UBound(varQ)
If varQ(lngQ, 1) = "" Then
lngZeile = lngZeile + 1
Else
For lngSpalte = 1 To UBound(varZ, 2)
If varZ(1, lngSpalte) = varQ(lngQ, 1) Then
varZ(lngZeile, lngSpalte) = varQ(lngQ, 2)
Exit For
End If
Next lngSpalte
End If
Next lngQ
Range("D1").Resize(lngZeile, UBound(varZ, 2)).Value = varZ
End Sub
Gruß Uwe
(16.04.2015, 07:52)Kl@us-M. schrieb: [ -> ]Moin Uwe,
sehr schöne Lösung
Ja in der Tat, hat sie mir auch bei einem Teil der Tabelle helfen können aber nicht bei allen Teilen.
Darf ich die Tabelle einfach mal hier dranhängen und ihr scheucht euch das nochmal an. Bin am verzweifeln !
Bei einem Bundesland hat es perfekt geklappt bei den anderen nicht so...
Hallo,
Du musst dafür sorgen, dass die Liste in A1 beginnt!
Verbundene Zellen in Spalte A werden jetzt berücksichtigt:
Code:
Sub vCardsZuListe()
Dim lngQ As Long, lngZeile As Long
Dim lngSpalte As Long, lngLetzteSpalte As Long
Dim varQ As Variant, varZ As Variant
Range("D1").CurrentRegion.EntireColumn = ""
Range("A1:B1").Copy
Range("A1").Insert xlDown
Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=Range("D1"), Unique:=True
Rows(1).Delete
Columns(4).SpecialCells(xlCellTypeConstants).Copy
Range("E1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Columns(4).Delete
varQ = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).Resize(, 2).Value
varZ = Range("D1").CurrentRegion.Resize(UBound(varQ)).Value
lngZeile = 2
For lngQ = 1 To UBound(varQ)
If varQ(lngQ, 1) = "" Then
If varQ(lngQ, 2) <> "" Then
If lngLetzteSpalte > 0 Then
varZ(lngZeile, lngLetzteSpalte) = varZ(lngZeile, lngLetzteSpalte) & vbNewLine & varQ(lngQ, 2)
End If
Else
If varQ(lngQ - 1, 2) <> "" Then
lngZeile = lngZeile + 1
End If
End If
Else
lngLetzteSpalte = 0
For lngSpalte = 1 To UBound(varZ, 2)
If varZ(1, lngSpalte) = varQ(lngQ, 1) Then
varZ(lngZeile, lngSpalte) = varQ(lngQ, 2)
lngLetzteSpalte = lngSpalte
Exit For
End If
Next lngSpalte
End If
Next lngQ
Range("D1").Resize(lngZeile, UBound(varZ, 2)).Value = varZ
End Sub
Gruß Uwe
(18.05.2015, 11:28)Kuwer schrieb: [ -> ]Hallo, Du musst dafür sorgen, dass die Liste in A1 beginnt! Verbundene Zellen in Spalte A werden jetzt berücksichtigt:
Danke Uwe, wow funktioniert super. Super Forum hier. Sagt mal bescheid wenn das mit der Vereinsgründung durch ist und richtet ein Spendenkonto ein, dann bin ich der erste der euch unterstüzt ;)
Hi,
Zitat:Sagt mal bescheid wenn das mit der Vereinsgründung durch ist und richtet ein Spendenkonto ein, dann bin ich der erste der euch unterstüzt
da musst du nicht bis zur Vereinsgründung warten ;)