mein erster Post, ich hoffe, dass ich damit ein Thema erwische, dass auch mehrere interessiert.
Wir haben ein Cafe und bieten Gäste WLAN an, die Zugangscode erstelle ich auf "Knopfdruck" und erhalte dann eine csv Datei.
Nur leider stehen die Daten dann alle in einer Zeile. Mit der bekannten Funktion "Text in Spalten" kann man zumindest den Text auf verschiedene Spalten verteilen.
Um die Serienbrief-Funktion aus Word zu nutzen, hätte ich gerne immer einen "Umbruch" nach jedem Code.
(05.05.2017, 19:47)RPP63 schrieb: Moin! Einer reicht ja, wenn es Dein Problem lösen sollte ;) Aber dazu ist das alles zu schwammig. Womit genau? Excel-VBA? Spätestens jetzt bräuchte man die Datei (Excel und .csv) und kein nichtssagendes Bild.
Gruß Ralf
mit knopfdruck meinte ich, dass es in dem abrechnungssystem (wenn router) eine möglichkeit gibt die wlan codes zu erstellen und diese dann per csv zu exportieren.
Moin! Mal eine Lösung mit Excel-Bordmitteln: Nachdem Du per Text In Spalten die Situation in Deinem Screenshot geschaffen hast, kommt folgende Formel in A3: =WENN(INDEX($2:$2;1;ZEILE($A1)*3+SPALTE(A$1))=0;"";INDEX($2:$2;1;ZEILE($A1)*3+SPALTE(A$1))) Diese ziehst Du bis Spalte C und soweit wie notwendig nach unten (in Deinem Beispiel bis mindestens Zeile 57). Lasse den Bereich markiert, kopiere und füge als Wert ein. Die Spalten D:FL kannst Du jetzt löschen.
Ich werde Dir später mal ein Makro schreiben, welches dem Import und das transponieren automatisch erledigt.
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:1 Nutzer sagt Danke an RPP63 für diesen Beitrag 28 • elaitsch
06.05.2017, 16:41 (Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2017, 16:42 von atilla.)
Hallo zusammen,
wenn ich darf, stell ich auch einen Vorschlag ein:
Code:
Sub test() Dim i As Long Dim varÜberschrift Dim varDaten With Sheets("CSV Daten") 'Tabelle in der in Zelle A1 die Überschrift und in Zelle A2 die eingelesenen Daten stehen; Tabellennamen anpassen varDaten = Split(.Range("A2")) 'Daten werden gesplittet (quasi Text in Spalten) varÜberschrift = Split(.Range("A1"), ",") 'das gleiche für die Überschriften End With
With Sheets("Tabelle1") 'in Tabelle1 wird geschrieben; ANPASSEN .Cells.ClearContents 'zuerst alle Zellen leeren .Range("A1:C1") = varÜberschrift 'Überschriften in A1:C1 schreiben .Range("A2:C2") = Split(Application.Trim(Replace(varDaten(0), """", "")), ",") 'A2:C2 der erste Datensatz mit der Zeit .Range("C2") = .Range("C2") & " " & Replace(varDaten(1), """", "") 'in C2 den Text zur Zahl ergänzen On Error Resume Next 'muss sein, da der letzte Datensatz leer ist For i = 2 To UBound(varDaten) .Range(.Cells(i + 1, 1), .Cells(i + 1, 2)) = Split(Application.Trim(Replace(varDaten(i), """", "")), ",") 'die restlichen Daten bereinigen und in die Zellen schreiben Next i .Range("C3:C" & .Cells(.Rows.Count, 1).End(xlUp).Row) = Range("C2").Value 'Spalte C mit der Zeitangabe auffüllen End With End Sub
Das kann dann in jeder beliebigen Datei ausgeführt werden, wenn die Tabellennamen angepasst wurden, und die Daten ungetrennt in den Zellen A1:A2 stehen.
(06.05.2017, 07:43)RPP63 schrieb: Moin! Mal eine Lösung mit Excel-Bordmitteln: Nachdem Du per Text In Spalten die Situation in Deinem Screenshot geschaffen hast, kommt folgende Formel in A3: =WENN(INDEX($2:$2;1;ZEILE($A1)*3+SPALTE(A$1))=0;"";INDEX($2:$2;1;ZEILE($A1)*3+SPALTE(A$1))) Diese ziehst Du bis Spalte C und soweit wie notwendig nach unten (in Deinem Beispiel bis mindestens Zeile 57). Lasse den Bereich markiert, kopiere und füge als Wert ein. Die Spalten D:FL kannst Du jetzt löschen.
Ich werde Dir später mal ein Makro schreiben, welches dem Import und das transponieren automatisch erledigt.
Gruß Ralf
Verrückt, ich habe bis jetzt immer erfolgreich nach dieser Methode gearbeitet, aber aktuell funktioniert es nicht mehr.
Wenn ich den Code in A3 kopiere und Enter drücke bleibt das Feld leer.