Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Daten neu sortieren
#1
Photo 
Hallo Zusammen,

ich bin VBA Anfänger!

Ich möchte Roh-Daten von einer Tabelle in eine neue Tabelle strukturieren.

Meine Herausforderung  (Quelle_Tab1) ist folgende:
  • Alle Daten stehen in einer Spalte (A)
  • Ein Datensatz hat mal drei oder mal vier Zeilen (Letzte Teile beginnt immer mit "Tel:" in der Zelle
  • Bei 4 Zeilen gibt es zusätzlich eine Brancheninfo in der 2 Zeile
  • In einer Zeile stehen mehrere Datenfelder z.B. Str. PLZ und Ort oder Tel, E-Mail und Web
Die Daten sollen auf eine neue Tabelle (Ziel_Tab2) aufgeteilt werden.

Meine Fragen:
  • Wie finde ich die Zeilennummern Datensatzanfang und Datensatzende (Zelle mit Zeichenfolge "Tel:") für meine Schleife
  • Wie trenne ich die Felder (Trennzeichen = "|"
Die Feldtrennung könnte ich auch später mit Excel Bordmitteln (Daten-Text in Spalten) machen.

Ich freue mich auf eure Anregungen!

Schon jetzt vielen Dank für eure Unterstützung!

Stefan


Angehängte Dateien Thumbnail(s)
       
50
Immer noch der Alte nur älter!
Antworten Top
#2
Hallo,

stelle doch bitte die Datei zur Verfügung, dann kann man mögliche Vorschläge testen.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#3
Moin Stefan!
Wenn Du statt der Screenshots die .xlsx hochladen würdest, könnte man leichter testen.
(eindeutig zu spät!  Blush)

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • stepcke
Antworten Top
#4
Die Zeile mit "Telefon" trennt eindeutig die Datensätze, das kann VBA gut erkennen.
Antworten Top
#5
Hier nun eine Beispiel-Datei!

Danke


Angehängte Dateien
.xlsx   DatenNeuSortieren.xlsx (Größe: 11,12 KB / Downloads: 5)
50
Immer noch der Alte nur älter!
Antworten Top
#6
(14.01.2021, 12:53)Fennek schrieb: Die Zeile mit "Telefon" trennt eindeutig die Datensätze, das kann VBA gut erkennen.

Genau, mir fehlt nur das Wissen diese Zeile zu ermitteln  Huh

50
Immer noch der Alte nur älter!
Antworten Top
#7
Dir hilft die Range.Find-Methode.
Im Link findest Du unten auch ein Beispiel, wie man per Schleife und .FindNext-Methode durch die Fundstellen hoppelt.

Ich schaue heute Abend wieder rein.
Dann dürfte ich auch Zeit finden, mal flugs einen Code zu schreiben.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • stepcke
Antworten Top
#8
Vielen Dank Ralf, dass hört sich gut an!
50
Immer noch der Alte nur älter!
Antworten Top
#9
Hallo Ralf,

Leider scheitere ich an der Herausforderung das Satzende zu definieren.

Hier mein Ansatz/Versuch:

    Set Bereich = Tab_Basis.Range(Cells(i_Basis, 1), Cells(iBasis + 3, 1))

    SatzEnde = Bereich.Find(what:=sBegriff, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows).Row

Was mache ich falsch?

Danke und Gruß
50
Immer noch der Alte nur älter!
Antworten Top
#10
Hier ein copy/paste Lösung, zum Testen habe ich ein neues Sheets("Test") eingfügt:

Code:
Sub F_en()
Dim rng As Range, iAdr As Range, Anf As Range

such = "Tel:"
Set Anf = Cells(2, 1)
With Sheets("Quelle").Columns(1)
    Set rng = .Find(such, , xlValues, xlPart)
    adr = rng.Address
    Do
        rng.Interior.Color = vbYellow
        Set iAdr = Range(Anf, rng)
        Tx = Application.Transpose(iAdr)
        If UBound(Tx) = 3 Then Tx(1) = Tx(1) & "|"
        lr = lr + 1
        Sheets("Test").Cells(lr, 1) = Join(Tx, "|")
        Set Anf = rng.Offset(1)
        Set rng = .FindNext(rng)
    Loop Until rng.Address = adr
End With
End Sub

Danach fehlt noch ein "Text-in_Spalten".


Angehängte Dateien
.xlsm   DatenNeuSortieren.xlsm (Größe: 18,86 KB / Downloads: 2)
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • stepcke
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste