Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Zeilen in Spalten umwandeln

538 views
Skip to first unread message

Michael Köster

unread,
Jul 12, 2002, 11:52:03 AM7/12/02
to
Hallo zusammen.

Habe eine Tabelle aus der ich eine Adressdatenbank (Access 97) erstellen
möchte.

In der Tabelle (Excel) liegen meine Daten allerdings nicht nebeneinander,
sprich
Spalte A = Name, Spalte B = Anschrift, Spalte C= PLZ und Ort (so dass eine
Zeile ein Datensatz eines Kunden ergibt)
sondern "alle untereinander":

Müller
Martin
Poststrasse 1
59939 Olsberg
Meier
Karl
Bahnhofstrasse 5
59929 Brilon
usw.

Das ganze für 800 Kunden, also läppische 3200 Zeilen.

Kann man mit Access (97, oder auch 2000/XP) die in Zelleninhalte in 4
Spalten aufteilen, so wie es für eine Adressdatenbank richtig sein muss?

Danke für jede Hilfe. - Ich bin absolut ratlos :-(( und kein ausgemachter
VBA-Profi!

Gruß
Michael


Horst Lange

unread,
Jul 12, 2002, 1:34:53 PM7/12/02
to
Hallo Michael,

schon einmal mit "Transponieren" probiert? Ist zwar eine Excel-Funktion, ist
dafür jedoch einfach zu handhaben. Bei einmaligem durchlauf könnte das
durchaus Sinn machen (so braucht man nicht esrt VBA programmieren):

Markiere Deine Excel-Zellen, kopiere die Daten und wechsle am besten zu
einem zweiten Tabellenfenster. Dort begibst Du Dich in eine Zelle und führst
den Befehl "Bearbeiten | inhalte einfügen" (dort unten rechts transponieren
anklicken) aus. Deine Daten werden nun um "90° gedreht" eingefügt: Spalten
sind nun Zeilen und umgekehrt.

HTH

Horst

"Michael Köster" <michi_dot...@t-online.de> schrieb im Newsbeitrag
news:#xi1QwbKCHA.2320@tkmsftngp11...

Jürgen Volke

unread,
Jul 12, 2002, 2:59:21 PM7/12/02
to
Hallo Horst

>
> schon einmal mit "Transponieren" probiert? Ist zwar eine
Excel-Funktion, ist
> dafür jedoch einfach zu handhaben. Bei einmaligem
durchlauf könnte das
> durchaus Sinn machen (so braucht man nicht esrt VBA
programmieren):
>
> Markiere Deine Excel-Zellen, kopiere die Daten und wechsle
am besten zu
> einem zweiten Tabellenfenster. Dort begibst Du Dich in
eine Zelle und führst
> den Befehl "Bearbeiten | inhalte einfügen" (dort unten
rechts transponieren
> anklicken) aus. Deine Daten werden nun um "90° gedreht"
eingefügt: Spalten
> sind nun Zeilen und umgekehrt.

meinst du nicht, daß das bei 800 Kunden ein klein wenig
lange dauert??!!

Hallo Michael

importiere die Exceltabelle in eine Hilfstabelle mit dem
Feld ZwischenText
dann schreibst du eine Procedur:

dim db as Database
dim rss as recordset
dim rsd as recordset
dim i as Integer
set db=currentdb
set rss=db.OpenRecordset("Hilfstabelle")
set rsd=db.OpenRecordset("DeineTabelle")
do until rss.eof
select case i
case 0
rsd.AddNew
rsd("Name1")=rss("ZwischenText")
case 1
rsd("Name2")=rss("ZwischenText")
case 2
rsd("Straße")=rss("ZwischenText")
case 3
rsd("PLZ_Ort")=rss("ZwischenText")
rsd.Update
end Select
i = i+1
if i > 3 then
i = 0
end if
rss.MoveNext
loop
rss.close
rsd.close
set rss = Nothing
set rsd = Nothing
set db = Nothing

und läßt sie laufen Feldnamen und Tabellennamen deinen
Gegebenheiten anpassen

HTH Jürgen


Horst Lange

unread,
Jul 13, 2002, 1:38:11 PM7/13/02
to

"Jürgen Volke" <juerge...@hotmail.com> schrieb im Newsbeitrag
news:agn92q$mt2$06$1...@news.t-online.com...
> Hallo Horst
Hallo Jürgen,

> > schon einmal mit "Transponieren" probiert? Ist zwar eine
> Excel-Funktion, ist
> > dafür jedoch einfach zu handhaben. Bei einmaligem
> durchlauf könnte das
> > durchaus Sinn machen (so braucht man nicht esrt VBA
> programmieren):
> >
> > Markiere Deine Excel-Zellen, kopiere die Daten und wechsle
> am besten zu
> > einem zweiten Tabellenfenster. Dort begibst Du Dich in
> eine Zelle und führst
> > den Befehl "Bearbeiten | inhalte einfügen" (dort unten
> rechts transponieren
> > anklicken) aus. Deine Daten werden nun um "90° gedreht"
> eingefügt: Spalten
> > sind nun Zeilen und umgekehrt.
>
> meinst du nicht, daß das bei 800 Kunden ein klein wenig
> lange dauert??!!

Gute Frage!
- ich teste -
256 Datensätze nach vorgegebenem Muster werden bei mir in
etwa 1 Sekunde transponiert. Leider konnte ich dies mit 800
Datensätzen nicht durchführen, denn bei 256 Spalten ist Schluß
mit Excel. Eine Matrix von 256 Spalten x 256 Zeilen werden
innerhalb 1-2 Sekunden umgewandelt, das Markieren dauerte
Länger :-))
Die 800 Datensätzten liegen wahrscheinlich nicht in einer Reihe,
sondern in mehreren Blöcken untereinander, da in Excel wohl
nur 256 Spalten möglich sind; diese müßten jeweils einzeln
transponiert werden. Und selbst auf einem betagteren System
(400 Mhz/64 MB Speicher) sollten 4 - 8 Blöcke mit je 100-200
Datensätze innerhalb weniger Minuten transponiert werden
können; das Einlesen in Access dürfte da schon etwas länger
dauern (1500 Datensätze lese ich derzeit öfter mal aus einer
Exceltabelle ein, und das dauert bei 1,5 GHz/512MBRAM
eine gute halbe Minute - über Tabelle importieren.)

Entgegen meinem ersten Zweifeln erscheint das manuelle
Umwandlen in diesem _einmaligen_ Fall wohl doch als eine gute
Alternative, wenn auch die VBA-Lösung proffessioneller ist.
Letztere werde ich mir jedoch merken, da nicht alles
einmalig ist und ich in VBA noch Anfänger bin.

Bleibt zu Hoffen, daß Michael seine optimale Lösung gefunden
hat. Wahrscheinlich ist er schon fertig, während wir über das
für und wieder sinnieren... ;-))

Viele Grüße

Horst

Jürgen Volke

unread,
Jul 14, 2002, 2:38:22 AM7/14/02
to
Moin Horst

jetzt frage ich dich was soll er mit 256 Spalten?
er will doch nur 4 Spalten: Name1, Name2, Straße, PLZ_Ort
also können nach deinem Muster immer nur 4 Zeilen auf einmal
markiert werden.
Deßhalb auch meine berechtigte Frage

> Die 800 Datensätzten liegen wahrscheinlich nicht in einer
Reihe,
> sondern in mehreren Blöcken untereinander, da in Excel
wohl
> nur 256 Spalten möglich sind;

was haben die 256 Spalten mit den Zeilen zu tun?? IMO kannst
du in Excel knapp 65000 Zeilen verwalten

> diese müßten jeweils einzeln
> transponiert werden. Und selbst auf einem betagteren
System
> (400 Mhz/64 MB Speicher) sollten 4 - 8 Blöcke mit je
100-200
> Datensätze innerhalb weniger Minuten transponiert werden
> können; das Einlesen in Access dürfte da schon etwas
länger
> dauern (1500 Datensätze lese ich derzeit öfter mal aus
einer
> Exceltabelle ein, und das dauert bei 1,5 GHz/512MBRAM
> eine gute halbe Minute - über Tabelle importieren.)
>
> Entgegen meinem ersten Zweifeln erscheint das manuelle
> Umwandlen in diesem _einmaligen_ Fall wohl doch als eine
gute
> Alternative, wenn auch die VBA-Lösung proffessioneller
ist.
> Letztere werde ich mir jedoch merken, da nicht alles
> einmalig ist und ich in VBA noch Anfänger bin.
>
> Bleibt zu Hoffen, daß Michael seine optimale Lösung
gefunden
> hat. Wahrscheinlich ist er schon fertig, während wir über
das
> für und wieder sinnieren... ;-))

das glaube ich auch

Schönen Sonntag

Jürgen


Horst Lange

unread,
Jul 14, 2002, 5:52:30 AM7/14/02
to
Hallo Jürgen,

"Jürgen Volke" <juerge...@hotmail.com> schrieb im Newsbeitrag
news:agr6dn$vl$02$1...@news.t-online.com...

Einen Test mit 800 Zeilen -> 800 Spalten ist nicht möglich, deshalb
256 Spalten/Zeilen:
beim Transponieren werden Spalten und Zeilen getauscht. Hierdurch
gilt der kleineste gemeinsame Wert. Somit können maximal 256 Zeilen
in 256 Spalten gewandelt werden. Die 256 Spalten sind die maximal in
einem zu wandelnden Zeilenzahl - mein Beispiel nutzte diesen Maximalwert
zur Abschätzung der theoretischen Geschwindigkiet.

> er will doch nur 4 Spalten: Name1, Name2, Straße, PLZ_Ort
> also können nach deinem Muster immer nur 4 Zeilen auf einmal
> markiert werden.

Eigentlich nicht: zum Transponieren kann der komplette Bereich markiert
werden, der _zusammenhängend_ bei Excel paßt. Somit kann er alle
Datensätze, die nebeneinander liegen in einem Durchgang umwandeln.
Da jedoch nicht alle 800 Datensätze nebeneinander passen, sind diese
wahrscheinlich in Blöcken (oder auch Gruppen) zu max. 266 Datensätzen
untereinander angelegt. Jeder dieser Blöcke muß einzeln gewandelt
werden. Im günstigsten Fall wären das 3 x 256 + 1 x 32 Datensätze,
also 4 Duchläufe.


> Deßhalb auch meine berechtigte Frage

Ack

>
> > Die 800 Datensätzten liegen wahrscheinlich nicht in einer
> Reihe,
> > sondern in mehreren Blöcken untereinander, da in Excel
> wohl
> > nur 256 Spalten möglich sind;
>
> was haben die 256 Spalten mit den Zeilen zu tun?? IMO kannst
> du in Excel knapp 65000 Zeilen verwalten

...aber nicht in Spalten! (Siehe oben:Transponieren)
Alle 800 Daten können jedoch im Endergebnis in 4 Spalten x 800
Zeilen angelegt werden, die sich dann in einem Rutsch nach Access
importieren lassen.

> > diese
(Blöcke - nicht einzelne Spalten :-)

Dito

>
> Jürgen
>

Horst


0 new messages