PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mal ein Excelproblem


_CaBaL_
2014-12-10, 18:18:33
Dass ich hier mal alleine nicht weiterkomme :P

Also folgendes Problem, ich habe eine CSV Datei in folgendem Format


Datum;Uhrzeit;Messwert
12.12.2014;00:05;10
12.12.2014;00:10;10
12.12.2014;00:15;10
12.12.2014;00:20;10
12.12.2014;00:25;10
12.12.2014;00:30;10
...
13.12.2014;00:05;10
13.12.2014;00:10;10

usw.

Dann gibt es pro Tag ca. 100 Werte mit jeweils einer neuen Uhrzeit, Import ins Excel ist ja kein Problem.

Ich würde jetzt gerne eine Liste daraus haben, die folgenden Aufbau hat

Uhrzeit 12.12.2014 13.12.2014
00:05 10 10
00:10 10 10
00:15 10 10

usw. gibt es da irgendeine Formel auf die ich zurückgreifen kann. Ich hab schon einiges versucht, aber bin auf keinen grünen Zweig gekommen.

Nagelbrett
2014-12-10, 19:23:53
Ohne Scripting wird man das nur schwer bequem hinbekommen.

Python:import csv, sys
daten = {}
uhrzeiten = set()
with open("input.csv") as f:
inp = csv.reader(f, delimiter=";")
for datum, uhrzeit, messwert in list(inp)[1:]:
d = daten.get(datum, {})
d[uhrzeit] = messwert
daten[datum] = d
uhrzeiten.add(uhrzeit)
out = csv.writer(sys.stdout, delimiter=";")
out.writerow(["Uhrzeit"] + sorted(daten))
for uhrzeit in sorted(uhrzeiten):
line = [uhrzeit]
for date in sorted(daten):
try:
line.append(daten[date][uhrzeit])
except KeyError:
line.append("n/a")
out.writerow(line)

Virtuo
2014-12-10, 19:42:12
Für den Fall das die Uhrzeiten immer gleich im Abstand 5 Minuten sind:

=WENN(A:A=$G$1;SVERWEIS(F2;B:C;2;0);"fehlt")

A-C sind die importierten Werte, bei F wurde die Tabelle in der gewünschten Form anfangen. In Spalte F würdest du die Uhrzeiten einmal von Hand vorgeben. Die Formel würde in Spalte G für den 12.12., Spalte H für den 13:12, usw. entsprechend angepasst gehören.

Bei Sverweisen immer dringend auf die Übereinstimmung der Formate achten, sonst findet er es nicht.

littlejam
2014-12-10, 21:54:48
Geklaut von hier (http://unix.stackexchange.com/questions/61003/data-pivot-with-awk).
awk 'BEGIN { FS=OFS=";" } NR==1 { r = $2 FS $5; next } { !x[$1]; a[$2,$5][$1]=$3 } END { m = asorti(x,y); for (k=1;k<=m;k++) { r = r FS y[k] } print r; n = asorti(a,b); for (i=1;i<=n;i++) { for (j=1;j<=m;j++) { for (k in a[b[i]]) { if (k == y[j]) { var = a[b[i]][k] } } line = line FS var; var = "" } sub(SUBSEP, FS, b[i]); print b[i] line; line = "" } }' filename.csv
:freak:

Und funktioniert als stumpfes Copy/Paste.

Gruß

Virtuo
2014-12-11, 11:21:14
Man könnte auch eine Pivottabelle aus den Daten erstellen.

_CaBaL_
2014-12-11, 21:56:08
Oki, probier ich morgen mal in Ruhe aus und schaue mal ob was dabei war :)

Danke schon mal

Rockhount
2014-12-12, 13:25:46
Man könnte auch eine Pivottabelle aus den Daten erstellen.

Genau das, Paradebeispiel für eine Pivottabelle.
Einfach die Dimensionen verschieben und fertig.

downforze
2014-12-31, 01:41:43
Kannst auch einfach die Zellen mit UsedRows markieren und dann über Offset(0,1).Select mit der Left(..) - Anweisung die Daten in ein Objekt sichern.