Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datenbankergebnis in Tabelle darstellen

Datenbankergebnis in Tabelle darstellen
02.07.2024 12:40:53
MCO
Mahlzeit!

Ich frage Daten in SQL ab und bekomme einen langen String geliefert, der sowohl Spalten- als auch Zeileninformation beinhaltet.

Der String ist scheinbar zu lang um in mit TEXTTEILEN wieder in Form zu bringen. Der Beispielstring ist natürlich deutlich kürzer.
Daher war mein Gedanke, den String im VBA so herzurichten, dasss er als Matrix bzw Array dargestellt wird und dann als Range eingefügt werden kann.

Bin ich da auf dem Holzweg? Geht´s einfacher?
Eine direkte Abfrage in SQL kommt leider nicht in frage, da die Abfrage nach Zellinhalten modifiziert wird.

Also Ergebnis in VBA:
"10$D$10#10$E$10#10$F$10#10$G$10#10$H$10#10$I$10§11$D$11#11$E$11#11$F$11#11$G$11#11$H$11#11$I$11§12$D$12#12$E$12#12$F$12#12$G$12#12$H$12#12$I$12§13$D$13#13$E$13#13$F$13#13$G$13#13$H$13#13$I$13§14$D$14#14$E$14#14$F$14#14$G$14#14$H$14#14$I$14§15$D$15#15$E$15#15$F$15#15$G$15#15$H$15#15$I$15§16$D$16#16$E$16#16$F$16#16$G$16#16$H$16#16$I$16§17$D$17#17$E$17#17$F$17#17$G$17#17$H$17#17$I$17§18$D$18#18$E$18#18$F$18#18$G$18#18$H$18#18$I$18§19$D$19#19$E$19#19$F$19#19$G$19#19$H$19#19$I$19§20$D$20#20$E$20#20$F$20#20$G$20#20$H$20#20$I$20§21$D$21#21$E$21#21$F$21#21$G$21#21$H$21#21$I$21§22$D$22#22$E$22#22$F$22#22$G$22#22$H$22#22$I$22§23$D$23#23$E$23#23$F$23#23$G$23#23$H$23#23$I$23§24$D$24#24$E$24#24$F$24#24$G$24#24$H$24#24$I$24"


Gewünscht in Tabelle




-DEFGHI
1010$D$1010$E$1010$F$1010$G$1010$H$1010$I$10
1111$D$1111$E$1111$F$1111$G$1111$H$1111$I$11
1212$D$1212$E$1212$F$1212$G$1212$H$1212$I$12
1313$D$1313$E$1313$F$1313$G$1313$H$1313$I$13
1414$D$1414$E$1414$F$1414$G$1414$H$1414$I$14
1515$D$1515$E$1515$F$1515$G$1515$H$1515$I$15
1616$D$1616$E$1616$F$1616$G$1616$H$1616$I$16
1717$D$1717$E$1717$F$1717$G$1717$H$1717$I$17
1818$D$1818$E$1818$F$1818$G$1818$H$1818$I$18
1919$D$1919$E$1919$F$1919$G$1919$H$1919$I$19
2020$D$2020$E$2020$F$2020$G$2020$H$2020$I$20
2121$D$2121$E$2121$F$2121$G$2121$H$2121$I$21
2222$D$2222$E$2222$F$2222$G$2222$H$2222$I$22
2323$D$2323$E$2323$F$2323$G$2323$H$2323$I$23
2424$D$2424$E$2424$F$2424$G$2424$H$2424$I$24


Gruß, MCO
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenbankergebnis in Tabelle darstellen
02.07.2024 13:23:19
peter
Hallo

Als Code Schnipsel




Sub test()

mystr = "10$D$10#10$E$10#10$F$10#10$G$10#10$H$10#10$I$10§11$D$11#11$E$11#11$F$11#11$G$11#11$H$11#11$I$11§12$D$12#12$E$12#12$F$12#12$G$12#12$H$12#12$I$12"
mysplit1 = Split(mystr, "§")

For i = LBound(mysplit1) To UBound(mysplit1)
mysplit2 = Split(mysplit1(i), "#")
Range("A" & i + 1).Resize(, UBound(mysplit2) + 1) = mysplit2
Next


End Sub



Peter
Anzeige
AW: Datenbankergebnis in Tabelle darstellen
03.07.2024 08:13:07
MCO
Hallo Peter!

Das Prinzip hab ich verstanden, danke.

Was ich noch nicht umsetzen kann, ist , dass es als function läuft, nicht als sub.

Meine bisherige Formel lautet so:
=TEXTTEILEN(Project_LIAZ(C2);"#";"§";0)

Damit wird bei Änderung von C2 die Tabelle neu generiert.

Auf deine Sub angepasst würde es so aussehen:

Sub test_arr_to_Range()

mystr = Project_LIAZ(C2)
Array_to_Range mystr, Range("D6")
End Sub


Sub Array_to_Range(Arr, Ziel_rng As Range)
'Aufruf: Array_to_Range mystr, Range("D6")

mysplit1 = Split(Arr, "§")

For i = LBound(mysplit1) To UBound(mysplit1)
mysplit2 = Split(mysplit1(i), "#")
Ziel_rng.Offset(i, 0).Resize(, UBound(mysplit2) + 1) = mysplit2
Next
End Sub


Aber eigentlich hatte ich mir das vorstellt, dass eine Funktion auch ein Array wiedergeben könnte.
Nur muss ich das vorher definieren und füllen, oder?

Gruß, MCO

Anzeige
AW: Datenbankergebnis in Tabelle darstellen
03.07.2024 10:00:09
peter
Hallo

Als UDF



Function String_to_Range(str As String)
Dim arrS() As String

mysplit1 = Split(str, "§")
mysplit2 = Split(mysplit1(0), "#")

ReDim Preserve arrS(UBound(mysplit2), UBound(mysplit1))

For i = LBound(mysplit1) To UBound(mysplit1)

mysplit2 = Split(mysplit1(i), "#")
For j = LBound(mysplit2) To UBound(mysplit2)
arrS(j, i) = mysplit2(j)
Next
Next
String_to_Range = WorksheetFunction.Transpose(arrS)

End Function


in Zelle D6 schreibst Du

=String_to_Range(C2)


Peter
Anzeige
Anmerkung!
03.07.2024 10:37:14
peter
Hallo

Hab gerade noch einige Test gemacht.
Sowohl meine Funktion als auch die Textteilen Funktion akzeptieren nur Strings mit 32767 Zeichen maximaler Länge (auch die Zelle ist auf dieses Limit begrenzt).

Sorry
Peter
AW: Datenbankergebnis in Tabelle darstellen
02.07.2024 14:39:04
Luschi
Hallo MCO,

hier mal 1 Lösung mit Excel-Power Query: https://www.herber.de/bbs/user/170625.xlsx

Gruß von Luschi
aus klein-Paris
Anzeige
AW: Datenbankergebnis in Tabelle darstellen
03.07.2024 08:02:48
MCO
Danke Luschi!

Das übersteigt meinen Horizont von PQ schon wieder :-(
Oder anders gesagt: schon wieder etwas, was es zu lernen gilt.

Allerdings glaube ich nicht, dass das direkt in eine Funktion einzubauen ist, da die Abfrage ja im Tabellenblatt liegt.

Trotzdem danke für die Horzont-Erweiterung!

Gruß, MCO
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige