Daten aus Zeilen in Spalten
#1
Hallo,

ich bin der Neue und komm jetzt öfter. Smile

Ich hoffe hier kann mir geholfen werden.

Ich habe eine Excel Tabelle in der folgende Sachen stehen (Gibt noch mehr Spalten [A-V], aber diese ist wichtig):

M17.1
I10.00
5-822.01
8-561.1

M54.5
F45.41
I10.00
J45.99
M25.51
R07.0
U07.2
R51
Z11
U99.0
Z58
8-918.12

K62.3
K59.01
5-486.4
5-932.42

Jede Leerzeile bedeutet ein neuer Fall (hier nur zur Veranschaulichung). Das was da in den Zeilen steht hätte ich gerne in Spalten. Da es sich um 526.024 Zeilen handelt scheidet eine händische Bearbeitung aus.
Leider habe ich auch pro Fall eine Unterschiedliche Anzahl an Zeilen; es gibt welche mit 1 Zeile, aber auch welche mit 30 Zeilen.

Kann mir jemand sagen, ob und wenn ja, wie ich das hinbekomme?

Vielen Dank und viele Grüße
Antworten Top
#2
Hallo,

mit VBA geht es so:

Code:
Sub F_en()
For Each ar In Columns(1).SpecialCells(xlCellTypeConstants).Areas
    ar.Copy
    Sheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
Next ar
End Sub

Die Daten stehen in Sheets(1), das Ergebnis in Sheets(2).

mfg


Angehängte Dateien
.xlsm   Gorus.xlsm (Größe: 17,04 KB / Downloads: 8)
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • Gorus
Antworten Top
#3
Hallo,

ohne VBA benötigt man für die folgende Formel mindestens Excel2024 (oder Excel365):
=TEXTTEILEN(WECHSELN(TEXTVERKETTEN("|";0;A1:A22);"||";"¶");"|";"¶";;;"")

Dabei dürfen die beiden Zeichen "|" bzw. " ¶" nicht in den Daten A1:A22 enthalten sein. Es handelt sich dabei um nur 1 Formel.

Will man den gleichen Bereichsermittlungsmechanismus, wie es @Fennek mit seinem VBA-Code realisiert hat, mit einer bloßen Excel-Formel umsetzen:
=TEXTTEILEN(WECHSELN(TEXTVERKETTEN("|";0;Tabelle1!$A:.$A);"||";"¶");"|";"¶";;;"")
so benötigt man ein ganz aktuelles Excel365 (möglicherweise ein Excel365-Beta).
Mit lieben Grüßen
Anton.

Windows 10 64bit
Office365 32bit
[-] Folgende(r) 1 Nutzer sagt Danke an EA1950 für diesen Beitrag:
  • RPP63
Antworten Top
#4
Code:
Sub M_snb()
  sn = Sheet1.UsedRange
  ReDim sp(2000, 100)
 
  For j = 1 To UBound(sn)
    If sn(j, 1) = "" Then
      n = n + 1
      jj = 0
    Else
      sp(n, jj) = sn(j, 1)
      jj = jj + 1
    End If
  Next
 
  sheet1.Cells(1, 4).Resize(UBound(sp), UBound(sp, 2)) = sp
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#5
Wenn ich den Bereich A1:A22 dynamisch haben will,
und A:.A (noch) nicht akzeptiert wird, ginge
A1:INDEX(A:A;VERGLEICH("";A:A;-1))

A1:INDEX(A:A;ANZAHL2(A:A))
funktioniert natürlich wegen der Leerzellen nicht.

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)
Antworten Top
#6
Inclusive der Patientendaten (A-V) lässt sich das sehr gut mit Power Query realisieren.
[-] Folgende(r) 1 Nutzer sagt Danke an ws-53 für diesen Beitrag:
  • Gorus
Antworten Top
#7
Hallo,

erst mal vielen Dank für die Antworten.

Bei den meisten bin ich leider komplett überfordert  20

@ws-53: Ah, jemand vom Fach.  Shy
Power Query hatte ich auch schon gefunden und hab es versucht. Leider sind es trotz Bereinigung 105.000 Zeilen. Wenn ich die Tabelle eingelesen habe und "Transformieren" und "Vertauschen" wähle, sagt mir Excel dann immer "Anfrage ist zu komplex" und bricht ab.

Da ich diese Tabelle bald brauche, werde ich wohl alles irgendwie aufsplitten müssen.

@All: machen diese VBA Seminare online Sinn, oder ist das, was man lernt, nicht ausreichend für die Arbeit.

Viele Grüße
Antworten Top
#8
Hallo Gorus,

verstehe ich das richtig, du willst dass jeder Block/Fall in eine Spalte kopiert wird?

Also 

1. Block/Spalte A
M17.1
I10.00
5-822.01
8-561.1

2. Block/Spalte B
M54.5
F45.41
I10.00
J45.99
M25.51
R07.0
U07.2
R51
Z11
U99.0
Z58
8-918.12

3.Block/Spalte C
K62.3
K59.01
5-486.4
5-932.42

LG, Alexandra
Antworten Top
#9
Hallo.

Ja.

M17.1 I10.00 5-822.01
M54.4 F45.41 usw

Alles jeweils in eine eigene Spalte.

Es gibt zu Beginn eine fallnummer die ein primärschlüssel ist.
Es gibt keine leerzeilen.
Für jeden Patienten gibt es unterschiedlich viele Zeilen.
Antworten Top
#10
Hallo Gorus,

siehe Anhang...

LG, Alexandra


Angehängte Dateien
.xlsm   BlöckeInSpalteAufteilen - Kopie.xlsm (Größe: 17,45 KB / Downloads: 5)
Antworten Top


Gehe zu:


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