.csv Datei in lesbare Excel Tabelle

Apple_5g

Cadet 4th Year
Registriert
Nov. 2012
Beiträge
89
Hallo Leute,
ich habe gestern eine .csv Datei bekommen..
Dort stehen wichtige Informationen drin, wie zum Beispiel diese:

210 608401 tav 302395 15.02.2014 32643 U.L.M._Transporte 34000214 60


Diese muss ich jetzt in eine Excel Tabelle schreiben die folgendes Format hat:

Teilenummer Januar Februar März April Mai Juni Juli August September Oktober November Dezember Gesamt

Ich habe jetzt die Teilenummer "34000214". Das Datum ist der 15.02.2014. Der Preis ist 60€.

Jetzt habe ich am Anfang die ganzen Teilenummern schon hingeschrieben und muss jetzt die 60€ in die Excel Tabelle einfügen und zwar in den Monat Februar, da dass Datum der 15.02.2014 ist.
Muss ich das alles von Hand eintippen, oder gibt es dafür irgendwelche Tricks, auf die ich nicht komme.

Bitte um Hilfe.
 
Apple_5g schrieb:
Muss ich das alles von Hand eintippen, oder gibt es dafür irgendwelche Tricks, auf die ich nicht komme.

Ja, den Programmcode wirst du wohl selbst eintippen müssen. Aber das geht ja sehr schnell und ist einfach.
 
Ja, mir fällt nur nicht ein, wie ich das am besten machen kann.
Muss ja das Datum mit dem Betrag und der Teilenummer von der .csv in die Excel Tabelle irgendwie rüber kommen und Excel muss wissen, dass der 15.02.2014 in die Spalte Februar kommt und dort in der Zeile von der Teilenummer das Geld einträgt.

Wie mache ich das?
 
Hi,

nachdem du die CSV Datei mit Excel geöffnet hast, markierst du die Spalte A.
Dann kannst due über im Menü Daten--Text in Spalten deinen Zeichenkette aufsplitten.
Dabei solltest du als Trennzeichen Leerzeichen verwenden.

Gruß
 
Erstmal liest du die csv-Datei ein und speicherst die Werte in einer Datenstruktur. Dann liest du die Excel-Tabelle ein. Dann parst du aus dem Datums-String den Monat und trägst das in Februar ein. ^^
 
Hi Apple_5g.
Kennst du dich mit VBA aus? Ohne wirst du hier wahrscheinlich nicht allzu weit kommen.
Wie viele Zeilen müssen denn so etwa verarbeitet werden? Kommt ein Teil pro Monat immer nur ein mal vor oder müssen alle Werte von einem Monat summiert werden?
Wenn nicht allzu viele verschiedene Teilenummern auftreten, kannst du auch einfach nacheinander die Liste der Teilenummern durchgehen. Den Monat erhälst du direkt über die month-Funktion, damit kannst du dann die entsprechende Spalte auswählen.
 
Das wäre wohl der beste Ansatz: auswerten was man schon hat.

Nichtsdestotrotz:
ich habe gestern eine .csv Datei bekommen..
Dort stehen wichtige Informationen drin, wie zum Beispiel diese:
210 608401 tav 302395 15.02.2014 32643 U.L.M._Transporte 34000214 60
Bekommen von wem; könnte der nicht was besseres liefern?
Und dieser Bandwurm da… CSV sollten ja dem Namen nach COMMA Separated Values sein, nur sehe ich kein Komma. Mit was sind die einzelnen Daten dieses Datensatzes (warum kommt mir da der Begriff Datenbank in den Sinn?) getrennt - TAB? Das müsste man schon wissen wenn man dem (für CSVs typischem) Vorschlag «Text-in-Spalten» folgt.
Man könnte sogar das Ding in Word öffnen und mit sichtbaren Symbolen die Lage peilen sowie Suchen/Ersetzen einspannen um etwas leichter Verdauliches nach XL zu schaffen.

CN8
 
Mit VBA kenne ich mich nicht so wirklich aus.
Das sind ca. 1500 Zeilen, allerdings auch mit doppelten Artikelnummern. Wenn ich die doppelten rausnehme, sind wir so ca. bei 500-600 Artikel. Diese .csv Tabelle kommt einmal im Monat und soll den Artikel mit den meisten verursachten Kosten anzeigen.
 
600 Teilenummern hält sich ja noch (vergleichsweise) im Rahmen. Dann kannst du noch den (zugegebenermaßen eher ineffizienten) Ansatz von mir verwenden.
Bei 600 Artikelnummern und 1500 Zeilen geht der Makro 600*1500=900 000 Vergleiche durch, das sollte noch in annehmbarer Zeit drin sein.

In Tabelle1 müssen die Daten aus der csv, bitte am Leerzeichen getrennt, dann liest der Makro die Daten und schreibt sie in Tabelle2 (Makro liegt schon auf dem Button in Tabelle2).

Der Makrocode (siehst du auch im VBA Editor, wenn du alt+F11 drückst) lautet in dem Beispiel:
Code:
Sub auslesen()
Dim n As Integer
n = Tabelle2.Range("A1").End(xlDown).Row
Tabelle2.Range("B2", Cells(n, 14)).ClearContents
For i = 1 To n - 1
For j = 1 To Tabelle1.Range("G1").End(xlDown).Row
If Tabelle1.Cells(j, 7).Value = Tabelle2.Cells(i + 1, 1).Value Then
Tabelle2.Cells(i + 1, Month(Tabelle1.Cells(j, 4).Value) + 2).Value = Tabelle2.Cells(i + 1, Month(Tabelle1.Cells(j, 4).Value) + 2).Value + Tabelle1.Cells(j, 8).Value
End If
Next
Next

End Sub
 

Anhänge

@Snooty Huch, da ist mir doch galtt eine Spalte verloren gegangen in den Eingangsdaten,

Es muss dann natürlich
Code:
    Sub auslesen()
    Dim n As Integer
    n = Tabelle2.Range("A1").End(xlDown).Row
    Tabelle2.Range("B2", Cells(n, 14)).ClearContents
    For i = 1 To n - 1
    For j = 1 To Tabelle1.Range("H1").End(xlDown).Row
    If Tabelle1.Cells(j, 7).Value = Tabelle2.Cells(i + 1, 1).Value Then
    Tabelle2.Cells(i + 1, Month(Tabelle1.Cells(j, 5).Value) + 2).Value = Tabelle2.Cells(i + 1, Month(Tabelle1.Cells(j, 5).Value) + 2).Value + Tabelle1.Cells(j, 9).Value
    End If
    Next
    Next
     
    End Sub
sein.
 
Zuletzt bearbeitet: (Edit: innerhalb von Code-Tags geht kein fettgedruckt)
Vielen Dank simsponsfan,
habe das alles gemacht, leider funktioniert das nicht.

So sieht jetzt die eingetragene .csv aus:
210 608401 pva 15.11.2014 32643 U.L.M._Transporte 1004404 30

Dann drücke ich auf den Makro Button und es passiert nichts.
Muss ich noch irgendwas in die zweite Tabelle einfügen?

Gruß
 
Hast du in dem Tabellenblatt 1 jetzt die CSV mit 8 (bzw. 9) Spalten vorliegen?
Funktioniert denn das Beispiel in der von mir hochgeladenen Datei bei dir?
 
@simsponsfan:
In der Tabelle 1 sind 8 Spalten.
Spalte D ist das Datum. Spalte G die Artikelnummer und Spalte H die Kosten.
Daten aus der .csv in deine Tabelle 1 eingetragen.
Dann auf Tabelle 2 gegangen und auf Auslesen geklickt und leider passiert nichts.
Es werden keine Artikelnummern übertragen, oder ähnliches.

Grüße
 
Hast du mal meine Version getestet? Arbeitet nur mit Formeln, kein Makro.

Wobei
In der Tabelle 1 sind 8 Spalten.
nicht mehr zu deiner Beschreibung im erten Post passt. Da hast du eigentlich 9 Spalten.

Habs mal entsprechend angepasst.
 

Anhänge

Zuletzt bearbeitet:
Funktioniert perfekt.
Ich bedanke mich vielmals bei allen beteildigten.
 
[...] nicht mehr zu deiner Beschreibung im erten Post passt.
Ich hatte es halt abgetippt und dabei die Spalte übersehen, ich nehme an, Apple_5g hat das daher angepasst.

Hast du denn die Makros aktiviert? Wenn du eine Datei aus dem Internet (einer unsicheren Quelle) öffnest, wirst du nämlich normalerweise gefragt, ob du die Markos aktivieren willst, standardmäßig sind sie dort nicht aktiviert.
Allerdings sollte dann dennoch eine Meldung erscheinen, dass Makros nicht aktiviert sind, wenn du auf den Button drückst.
Wenn du Alt+F11 drückst, siehst du dann den Code in Tabelle2?
So ganz ohne Meldung ist schon komisch.
ich müsste das mal in einer neueren Excelversion testen, aber eigentlich sollte das überall laufen.

@snooty deine Variante funktioniert ja auch, allerdings braucht das bei mir schon bei den 30 Testzeilen recht lange zum berechnen. Zumindest bei mir läuft da die (immernoch ineffiziente) Variante mit Makro schneller.
Ergänzung ()

Aber wenn die Variante ohne Makro performancetechnisch ausreicht, dann ist ja alles gut.
Ich habe übrigens den Makro grade unter Office 2013 getestet, wo es bei mir auch läuft.
Also denn, Grüße,
simpsonsfan
 
Um die Formel-Variante zu beschleunigen, kann man noch die Zellverweise anpassen.

Code:
Tabelle2!B2 =SUMMENPRODUKT(($A2=Tabelle1!$H$1:$H$30000)*(MONAT(B$1)=MONAT(Tabelle1!$E$1:$E$30000))*Tabelle1!$I$1:$I$30000)

Ich hab da jetzt einfach mal Zeile 1 bis 30000 angegeben - kann man natürlich auf ~1500 kürzen (bzw. halt so lange, wie die Listen maximal sein können). Wollte nur auf Nummer Sicher gehen.
 
Stimmt, das kann man dann ja kürzen, und am neueren Rechner mit Excel 2013 war's sowieso schon schneller.
Und es gilt ja immer ncoh: Hauptsache, es läuft!
 
Zurück
Oben