• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

excel 2007: zeilen in spalten schreiben

Mitglied seit
26.09.2004
Beiträge
2.334
Reaktionen
72
ok, der titel könnte etwas schwierig zu verstehen sein, hier also worums geht...
ich hab eine große menge an daten, die in folgendem format in excel vorhanden sind:



nun brauche ich die werte aber anders gereiht und zwar die stundenwerte (also die in den zeilen stehen, von 1-24 bzw. B-Y) brauch ich untereinander
also 24 zeilen für den 1.11.1983, darunter direkt anschließend die nächsten stundenwerte für den 2.11.1983 etc.
dass dabei das datum auch automatisch ergänzt wird, ist weniger wichtig, mir geht es darum, dass die in zeilenform vorhandenen stundenwerte automatisch untereinander gereiht werden

ich hoffe, dafür gibt es eine automatisierbare lösung in excel, da die reihe bis 2010 geht, und das für 6 verschiedene messwerte... das wär händisch eher hässliche
 
Mitglied seit
19.05.2003
Beiträge
19.993
Reaktionen
849
kopieren, Inhalte einfügen, transponieren anklicken.

ok ist scheinbar doch komplizierter, du willst jede Zageszeile als Spalte einzeln transponieren. Da fällt mir in Excel auch nix ein. Müsste man eventuell echt exportieren und ne schleife in R oder Matlab schreiben, das ginge.
 
Zuletzt bearbeitet:
Mitglied seit
26.09.2004
Beiträge
2.334
Reaktionen
72
jo, matlab wollt ich aber eher umgehen... :(

gings mit macro irgendwie?
 
Mitglied seit
19.05.2003
Beiträge
19.993
Reaktionen
849
K.a. Bestimmt...

also bin kein Matlab pro, aber jetzt für doofe wie mich kann ich mir das mit ner schleife gerade schon vorstellen. Musst ja nur alle Zeilen durchgehen und dann in nen neuen Vektor aus der Zeile die Werte 2-25 tun.
 
Mitglied seit
01.09.2002
Beiträge
1.456
Reaktionen
0
Kurz zum Verständnis:
du willst dann
27 (jahre) * 365 (Tage) * 24 (Stunden) = 236.520 Zeilen haben?

Was willst du damit machen? Evtl. gehts anders besser ans Ziel?
 
Mitglied seit
26.09.2004
Beiträge
2.334
Reaktionen
72
nein geht es nicht, ich brauche das ganze dann als textformat als eingabedatei für ein anderes programm, das nur eine so formatierte zeitreihe lesen kann (also alles in einer spalte)
 
Mitglied seit
01.09.2002
Beiträge
1.456
Reaktionen
0
Wenn deine Exceldatein immer gleich aufgebaut sind, dann n Makro.
Kannst du n weng vba?
Wenns nicht dringend ist, dann wart bis ca 1930 Uhr, dann tipp ichs dir kurz runter...
 
Mitglied seit
26.09.2004
Beiträge
2.334
Reaktionen
72
Wenn deine Exceldatein immer gleich aufgebaut sind, dann n Makro.
Kannst du n weng vba?
Wenns nicht dringend ist, dann wart bis ca 1930 Uhr, dann tipp ichs dir kurz runter...

wow, danke, also ich konnte zumindest mal vba :ugly:
aber mit einer schleife, wo ich dann nurmehr meine zeilen und spalten-nummern einzusetzen bräuchte, wär mir schon sehr geholfen!
 
Mitglied seit
01.09.2002
Beiträge
1.456
Reaktionen
0
rep = xls
und abgehts!

VERGESST DEN ANHANG HIER - Wie kann ich das löschen??!?
 
Zuletzt bearbeitet:
Mitglied seit
30.07.2000
Beiträge
4.626
Reaktionen
71
Hi viedion,
sauberes Makro, sympathische Geste von dir das einfach mal so zu schreiben! Könntest du es vllt noch ein bisschen weiter kommentieren? Ich kann kaum vb und verstehe z.B. nicht, warum es Range("B10") und Range("D42") ist.
 
Mitglied seit
01.09.2002
Beiträge
1.456
Reaktionen
0
a fuck, da war noch die aufzeichnung mit drinne - ich hatte auf die schnelle vergessen das zu löschen!

Saubere datei hier...

Code:
Sub untereinander()

quellBlatt = "Tabelle1" 'In die "" den Namen des Tabellenblattes mit den Werten
zielBlatt = "Tabelle2" 'In die "" den Namen des Tabellenblattes mit der neuen Darstellung
ersteZeile = 7 'Die Nummer der Zeile, wo die Werte anfangen (im Screenshot 7)

letztezeile = Sheets(quellBlatt).Cells(Rows.Count, 1).End(xlUp).Row
counter = 0
For i = ersteZeile To letztezeile
    For k = 2 To 25
                counter = counter + 1
                Sheets(zielBlatt).Cells(counter, 1).Value = Sheets(quellBlatt).Cells(i, 1).Value
                Sheets(zielBlatt).Cells(counter, 2).Value = Sheets(quellBlatt).Cells(i, k).Value
    Next k

Next i
End Sub

ich wollte zuerst das mit copy/paste nochmla probieren und hab mir dafür kurz die schritte aufgezeichnet - dann aber gemerkt das es grober humbug ist und mich für die einfach auszeichnungsvariante entschieden!

das schöne an copy-past ist, das man das arbeitsblatt wechseln lässt und dann, wenns arbeitet, der monitor so schön flackert und das unglaublich beeindruckend auf laien wirkt - besser als wenn im hintergrund einfach werte zugewiesen werden und dann zack fertig...
 
Mitglied seit
26.09.2004
Beiträge
2.334
Reaktionen
72
hey, vielen dank für die arbeit!
es läuft und funktioniert - allerdings nur etwa bis zum drittel der daten... :(

hier das makro mit fehlermeldung:



und hier das ende des ergebnisblattes:



€: hm, wenn ich mir die werte die das makro ausspuckt nochmal so grob anschaue dürfte auch da was nicht stimmen, am anfang werden alle werte aus dem ausgangs-tabellenblatt übernommen, am ende dann irgendwie nichtmehr, d.h. auch wenn ein wert im original blatt steht, steht in der ausgabe eine 0...


und dann hätt ich noch eine frage: wie muss ich das makro umschreiben, dass in der spalte A beim datum auch die stunde dabeisteht?
also in folgender form:

199101010000 ...für 01.01.1991 00:00 uhr
199101010100 ...für 01.01.1991 01:00 uhr
etc.

danke!
 
Zuletzt bearbeitet:
Mitglied seit
01.09.2002
Beiträge
1.456
Reaktionen
0
27 (jahre) * 365 (Tage) * 24 (Stunden) = 236.520 Zeilen haben?

This, denk ich mal!
Das alte Excel kann nur 65.536 Zeile.
Drum hab ich das oben ausgerechnet.
Hab dann bei mir nachgeschaut - excel 2007 kann viel mehr Zeilen.

Datum: da das ding ja durchzählt würde ich unkompliziert einen workaround machen ala select-case 1 uhrzeit = 0100, 2 uhrzeit = 0200 und dann in die datumsspalte verknüpfung aus datum und uhrzeit eintragen - kein problem, kann ich dir ergänzen.

Das das nicht durchläuft tipp ich auf einen Überlauf einer Variablen. könnte man vor counter = 0 ein
Dim counter as Variant
einfügen - könnte klappen - ich dachte das macht der excel automatisch, dass der undefinierte variablen als variant anlegt - kann mich aber auch irren.

Eine mögliche Lösung wegen der zu vielen Zeilen:
Welches Format versteht den dein Einleseprogramm? Wird doch CSV oder "Mit Tab getrennt" sein und nicht zwingend eine Excel-Datei. Dann könnte man das einfach statt in eine Excel-Datei zu schreiben in eine txt schreiben und zwischen Datum und Wert ein Komma einfügen - auch ne Sache von 5 Minuten...
 
Zuletzt bearbeitet:
Mitglied seit
26.09.2004
Beiträge
2.334
Reaktionen
72
siehe pm, das einleseformat ist eigentlich einfach eine textdatei mit tab getrennt, wenn das als ausgabeformat noch einfacher zu handhaben wäre, natürlich auch eine möglichkeit :)
 
Mitglied seit
01.01.1970
Beiträge
1.170
Reaktionen
0
du kannst das ganze auch als vbscript machen.
ist dieselbe syntax, nur zum öffnen und speichern der dateien musst nen filesystemobject verwenden.

als ergebnis hast ne anklickbare datei, die dir ne textdatei automatisch übersetzt.
 
Oben