AC2000 - Exceltabelle einlesen (schwierig!)

Hallo liebe Wissende,

Ich bekomme wöchentlich eine Excel-Tabelle mit einem ziemlich verqueren Aufbau,
die ich in Access einlesen muss:

lfdNr Art Fahrzeug Anzahl
------------------------------------------------------
 PKW 5
1 Audi Super 90 
2 BWM 501 
3 Opel Kadett A
4 Porsche Carrera
5 Ford Taunus
 LKW 6
6 Büssing
7 MAN
8 Mercedes
9 Kälble
10 Hanomag
11 Faun
 Fahrrad 3
12 Singer
13 Peugeot
14 Steyer

Folgendes soll automatisiert werden:

  1. Nehme den Wert in Spalte „Fahrzeug“, wenn in Spalte „Anzahl“ ein Wert steht.

  2. Nehme dann diesen Wert aus „Fahrzeug“ und fülle damit sooft (="Anzahl) die Zellen in Spalte „Art“ aus, bis du auf eine nächste Zeile triffst, in der die Spalte „Anzahl“ einen Wert enthält.

Die „umgebaute“ Tabelle sollte dann so aussehen (Leerzeilen stören nicht):

LfdNr Art Fahrzeug Anzahl
------------------------------------------------------
 5
1 PKW Audi Super 90 
2 PKW BWM 501 
3 PKW Opel Kadett A
4 PKW Porsche Carrera
5 PKW Ford Taunus
 6
6 LKW Büssing
7 LKW MAN
8 LKW Mercedes
9 LKW Kälble
10 LKW Hanomag
11 LKW Faun
 3
12 Fahrrad Singer
13 Fahrrad Peugeot
14 Fahrrad Steyer

Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt.

Klingt vielleicht blöd, aber so möchte ich es umsetzen - mir fehlen die Ideen …
Bei ca. 4.000 Datensätzen (ca. 26 Fahrzeuggruppen)gerät die ganze Sache langsam zur Quälerei.

Vielleicht hat jemand unter Euch einen Tipp für mich, wie ich die Aufbereitung in Excel bzw. Access 2000 (wäre mir lieber) auf die Schnelle erledigen kann …

Ich bedanke mich jetzt schon mal für Eure Mithilfe.

gruss
moritzbock

Hallo Moritz,

ich würde so an das Problem herangehen.

Lese die gesamte Tabelle von Excel in Access per Import (Neue Daten) ein.

Dann würde ich diese Tabelle per Programm öffnen und per Programm erkennen, wann eine neue Zeile beginnt, bei Anzahl steht was, dann sind die nächsten Zeilen „echte“ Daten, bis wieder bei Anzahl was steht.
Als Ansatz folgendes:

Dim db As Database
Dim rs As Recordset
Dim rs1 As Recordset

Set db = CurrentD
Set rs = db.OpenRecordset(„Alte Daten“, dbOpenDynaset)
Set rs1 = db.OpenRecordset(„Neue Daten“, dbOpenSnapshot)
rs1.movefirst
while not rs1.eof
if rs1.Anzahl=0 then

und hier käme dann der Block, der entscheidet, ob Daten geschríeben werden. Beim Schreiben der Daten muß dann auf rs zurückgegriffen werden, usw.

rs1.movenext
wend

Da ich im Moment im Stress bin, nur der kurze Ansatz, falls das nicht reicht maile oder poste nochmal, am Wochenende habe ich dann etwas mehr Zeit.

Peter

Hallo Peter,

Vielen Dank für Deinen Hinweis - wie ich schon geahnt habe, komme ich nicht besonders viel weiter.

Ich kriege es zwar hin, dass das erste Feld in „ART“ mit dem entsprechenden Wert aufgefüllt wird, aber in den restlichen Zellen tut sich nix.

Wenn es Dir paßt, würde ich gerne Dein Angebot annehmen und mich am Wochenende nochmal per Mail bei Dir melden …

gruss
moritzbock

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]