Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1596to1600
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

datenbanknachbau mit excel - Konzeption???

datenbanknachbau mit excel - Konzeption?
13.12.2017 09:58:22
biba
Hallo Beisammen,
ich möchte/muss mit Excel eine datenbank simulieren und mach mir gerade gedanken über die geschwindigkeit von aktualisierungen bzw. der effizienz in der vba programmierung.
Folgende Situation:
ich habe ca. 1500 einzelne Tabellenblätter in ca. 30 Dateien in denen verschiedene Daten zu jeweils einem Objekt enthalten sind. Also jedes Tabellenblatt für ein Objekt.
Die Objekte lassen sich in drei Ebenen klassifizieren.
Der Code für die verschiedenenen Ebenen ist fix vorgegeben und lässt sich auch problemlos auslesen.
Zur Veranschaulichung: Die Objektnummer setzt sich wie folgt zusammen AABBBBCC)
AA hat 26 verschiedene Ausprägungen, BBBB 140 und CC 9.
Problematisch ist aber das es immer mehrere Objete mit der gleichen Nummer gibt.
Also eigentlich müsste die Nummer so ausschauen AABBBBCCD :)
Variable D kann ich aber nicht in die Objektblätter schreiben sondern muss beim kopieren der daten dynamisch erzeugt werden, da sich die Objekte ändern können, die Variable D aber immer mit eins beginnen und aufsteigend sein muss.
Für eine Auswertungsdatei (eigentlich mehrere, aber das soll hier nicht Thema sein) sollen diese Objektdaten regelmäßig aktualisiert werden.
Die Auswertungsdatei ist folgendermaßen aufgebaut:
Die Tabellenblätter sind nach AA benannt und immer gleich aufgebaut. BBBB steht also immer in der gleichen Spalte und in Zeile 47 (mal für das BSp. als X1 bezeichnet) oder 97 oder 147 oder ....
CC steht, je nach Wert in Zeile X1 plus 9 oder 16 oder 21 oder.... ( nennen wir das mal Y1)
Je nachdem wie viele Objekte es mit einem identischen Code AABBBBCC gibt müssen also die Daten in Zeile Y1 oder Y1 + 1... geschrieben werden.
AA,BBBB und CC haben also für jeden individuellen wert eine Fixe Zeile.
Wobei AA das Tabellenblatt bezeichnet und idR. BBBB immer nur auf einem bestimmten Tabellenblatt vorkommt (mit ausnahme von einigen Objekten die kein spezifischen BBBB Wert haben also 9999 als Dummy) und CC eine unterkategorie von BBBB ist. CC gbit es aber für jedes BBBB.
Anders gesagt, BBBB ist also idR. das Hauptidentifikationsmerkmal, aber nicht immer :(
Ich könnte also einen Code schreiben der die Daten kopiert und je nach Ausprägung von AABBBBCC in eine bestimmte Zeile schreibt und in Abhängigkeit von D eine Zeile dazu addiert. Finde ich aber ziemlich uneffektiv, da das Ganze abertausende Codezeilen (und mir damit ein haufen Arbeit) schafft.
und, ein weiteres Problem: Die aktualisierung dauert ewig.... passiert aber i.d.R. nachts, also nicht das Hauptproblem. Ist aber in Einzelfällen dann schon ätzend, wenn die aktualisierung während der Arbeitszeit passieren muss.
Wie könnte man das rationaler schaffen?
Mit einer Abgleichsliste? z.B. nach dem Muster wenn AA=01 BBBB=1234 und CC gleich 01 dann Blatt(01),Zeile 97 ? und später nach dem Motto kopiere die Daten in die Zeile die im Abgleichsblatt steht?
BBBB ist in der Auswertungsdatei fix eingeschrieben. Man könnte also auch sagen: Kopiere die Daten in Blatt (AA) und suche hier nach dem Code BBBB und schreibe -in abhängigkeit von CC die Daten in die jeweilige Zeile. Der Abstand von CC zu dem Wert BBBB ist im Auswertungsblatt fix. Würde also wahnsinnig viel Code sparen. Was dann aber mit der Variable D machen?
Oder?
Oder?
Bin etwas ratlos, da ich ansonsten für solche Aufgaben auf ein Datenbanksystem zurückgreifen konnte. In diesem Fall (viele, viele Anwender) muss aber mit Excel gearbeitet werden :(
Hier der Code der das veranschaulichen soll:
'Verschiedene Annahmen werden getroffen, wie die Datei erfassung und festlegung der Variablen. Führe ich hier aus Platzgründen aber nicht weiter aus... Nur die relevanten variablen möchte ich für das Beispiel aufzeigen:
...
Dim WbQuelle as workbook, WbZiel as Workbook
Dim lngZeileA1 as long 'und noch 1259 weitere Zeilenvariablen (140 BBBB mal je 9 CC)
Dim Dummy_AA as string, Dummy_BBBB as integer, Dummy_CC as integer
...
'Die erste Quelldatei wird geöffnet und die Daten ausgelesen... Das Ganze muss natürlich für alle Quelldateien durchgeführt werden. Hier nur mal exemplarisch an einem verkürztem Beispiel ....
WbQuelle1.Activate
For Each sh In ActiveWorkbook.Worksheets
sh.Activate
Dummy_AA = Range („AL1“).Value
Dummy_BBBB = Range („B23”).Value
Dummy_CC = Range (“AL2”).value
lngZeileA1 = 61 'Die Zuordnung von BBBB=1234 und CC=01 zu lngZeileA1 würde ich für dieses Bsp. über eine Abgleichsliste machen. Dass ganze natürlich für alle 1260 Fälle :)
If BBBB = 1234 And CC = 01 then
Range("B1:B23").Copy
WbZiel.Worksheets("dummy_AA").cells(lngzeileA1, 1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
lngzeileA1 = lngzeileA1 + 1
End If
If BBBB = 1234 And CC = 02 then
Range("B1:B23").Copy
WbZiel.Worksheets("dummy_AA").cells(lngzeileA2, 1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
lngzeileA2 = lngzeileA2 + 1
End If
'Jetzt kämen der Code für die weiteren Ausprägungen von CC
....
' und dann natürlich für die weiteren Werte von BBBB
If BBBB = 1234 And CC = 01 then
Range("B1:B23").Copy
WbZiel.Worksheets("dummy_AA").cells(lngzeileB1, 1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
lngzeileB1 = lngzeileB1 + 1
End If
.....
Der Code funktioniert so in echt, ich hoff also dass ich hab keine Rechtschreibfähleer hier im Beispiel eingebaut hab:)
Hier nochmals meine Frage an die ultimativen Excel Cracks:
Wie kann der Code beschaffen sein, dass
-ich nicht 1260 Bedingungen schreiben muss. (Prio1) und
-Die aktualiserung verhältnismäßig zügig geht (Prio2)
Ich hoffe das Beispiel ist verständlich geschriebn und es findet sich jemand der Spaß an einer solch komplexen Aufagbe hat :)
Schon mal ein herzliches Dankeschön an alle!!!!!!
Gruß

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ich vermute, dass schon beim Lesen des 2. Satzes
13.12.2017 10:08:10
lupo1
... die meisten weitergeblättert haben.
AW: Ich vermute, dass schon beim Lesen des 2. Satzes
13.12.2017 10:18:03
biba
würd ich auch machen :)
hoff aber trotzdem weiter auf Tipps
Um meine Anfrage etwas zu verkleinern:
ich erwarte ja keinen Code sondern eher Hinweise wie so etwas prinzipiell aussehen könnte.
Hab schon ewig gegoogelt, merke aber dass mir hierfür das Fachwissen fehlt um zu wissen wo nach ich denn eigentlich suchen müsste :)
AW: datenbanknachbau mit excel - Konzeption?
13.12.2017 10:14:27
Ralf
Hi biba,
bevor ich mir Deinen ganzen Text durchlese, hier geht es schon los.
ich habe ca. 1500 einzelne Tabellenblätter in ca. 30 Dateien in denen verschiedene Daten zu jeweils einem Objekt enthalten sind. Also jedes Tabellenblatt für ein Objekt.
Bei 1500 Objekten bin ich mir nicht sicher, was Du unter Objekt verstehst? Sind es 1500 unterschiedliche Artikel oder sind es Artikel, Kunden, Lieferanten.... also 1500 vollkommen unterschiedliche Dinge? Da geht es schon los.
Aber sei es wie es sei, Du solltest trotzdem auf eine DB zurückgreifen.
In diesem Fall (viele, viele Anwender) muss aber mit Excel gearbeitet werden :(
Gerade da ist eine DB besser geeignet als Exel.
Anzeige
AW: datenbanknachbau mit excel - Konzeption?
13.12.2017 10:28:41
biba
:)
[Ironie on]
Danke für den Hinweis auf die Sinnhaftigkeit einer Datenbank. Ein ganz neuer Gedanke, damit werde ich mich mal auseinandersetzten... :)
Aber weist Du was das kostet? Ein paar tausend... das geht ja gar nicht!
Nur weil man so tausende Personalstunden sparen könnte bei gleichzeitig gestiegener Qualität ist diese Investition nicht zu rechtfertigen. Wo kämen wir denn da hin?
[Ironie off]
Wie gesagt, ist leider die Arbeit mit Excel nicht diskutabel.
Um Dir den tag zu verschönern, überlege Dir mal wie die sache aktuell abläuft :)
Schönen Gruß
Es geht nicht um eine "technische" Datenbank, ...
13.12.2017 10:43:35
lupo1
... sondern um eine inhaltliche (und auch das nur im Sinne von "alle gleichartigen in einer Tabelle", also nicht etwas Normalisierung oder so).
Würdest Du etwas suchen, was die 1500 Tabellen in einer untereinander schreibt, und Dich dann nie wieder zu 1500 Tabellen zurückkehren lässt, würde man Dir helfen.
Aber nicht bei Beibehaltung derer.
Anzeige
AW: datenbanknachbau mit excel - Konzeption?
13.12.2017 10:53:11
Zwenn
Hallo biba,
da sieht man mal wieder, was passieren kann, wenn BWL-Menschen IT-Entscheidungen treffen, die von IT absolut keinen Schimmer haben. Das in Excel umzusetzen grenzt schon an Wahnsinn. Jede Menge Leute damit parallel arbeiten zu lassen ist schlicht verrückt!
Excel ist KEIN Datenbanksystem! Mehr als eine Machbarkeitsstudie, bei der rauskommt, es ist nicht machbar (im Sinne von "viele Leute können damit sinnvoll arbeiten"), kommt dabei nicht raus. Mach Deinem Auftraggeber besser jetzt klar, dass es am Ende viel teurer wird, wenn er weiterhin auf Excel beharrt.
An Deiner Stelle würde ich mich nicht mit der Entwicklung eines Datenmodells für Excel beschäftigen, sondern fachliche Argumente sammeln, warum Excel sinnfrei für diese Aufgabe ist, warum es am Ende teurer wird (es wird nicht laufen und dann fängt man mit einem richtigen Datenbanksystem von vorn an) und warum man deshalb direkt von Anfang an mit den richtigen Werkzeugen arbeiten sollte.
Was nützt denn die fertige DB in Excel? Es wird doch auch noch das DBMS benötigt. Oder soll das en passant mal eben mit entwickelt werden?
Viele Grüße,
Zwenn
Anzeige
AW: datenbanknachbau mit excel - Konzeption?
14.12.2017 08:15:52
biba
Morgen Zwenn,
gibt es einen "wirklichen" Grund warum das Ganze nicht laufen sollte mit excel oder ist das eher Bauchgefühl? So einen Quatsch in diesem Umfang hab ich bisher auch noch nicht gemacht. Nicht dass ich mich da verrenne :)
Im "kleinen" läuft das, zwar elend langsam, aber es läuft. :)
Gruß
AW: datenbanknachbau mit excel - Konzeption?
14.12.2017 09:49:23
guenni
Zur Grundsätzlichen Verwendung von Excel:
Wenn es bei drei Dateien langsam ist, werden 30 ein Problem, das ist absehbar. Nachtjobs laufen meist in der Zeit mit der hohen Netzwerklast durch Backups und andere zeitaufwändige Nachtjobs. Damit sind sie in der Regel langsamer und störanfälliger als gedacht.
Bei der Menge an Objekten wäre ein Umstieg auf Datenhaltung in DBMS und Export der Daten zur Präsentation in Excel-Sheets zu überlegen. Würde bei den Verkäufern keine Umstellung erfordern, die Auswertungsmöglichkeiten in andere Dimensionen heben, Datensicherheit und -Verfügbarkeit erhöhen.
Die Fragestellung wäre dann "Excel als Datenbank-Frontend", was auch keine Out-of-the-box-Lösung ist.
Meiner Erfahrung nach macht Excel bei großen Sheets immer wieder Fehler. Im Zusammenspiel mit der Komplexität, die mit der Zeit in die Sheets kommt werden die Probleme nicht nachvollziehbar und teuer. hinzu kommen die unnötigen DAU-Probleme, weil die Schutzmöglichkeiten völlig unzureichend sind.
Aus verschiedenen Gründen bleibt aber Excel oft der einzige gangbare Weg, auch wenn es kein guter ist.
Gruß,
Günther
Anzeige
AW: datenbanknachbau mit excel - Konzeption?
13.12.2017 11:37:12
guenni
Hallo,
1) Zum Thema Aktualisierung würde ich ein Aktualisierungsdatum speichern, und nur seit dem geänderte Dateien analysieren
2) evtl kann auf den Blättern auch ein Zeitstempel hinterlegt werden, dann kann bei geänderten Dateien noch anhand des Blattstempels eine Aktualisierung eingespart werden.
In den Zeilen müsste halt die Referenz auf Datei, und Aktualisierungsdatum hinterlegt werden.
Die Daten würde ich möglichst roh in der Ordnung in eine Import-Tabelle schreiben, in der sie am schnellsten eingelesen werden können.
Für letztliche Auswertung und Darstellung extra Blätter mit verwenden.
Gruß,
Günther
Anzeige
AW: datenbanknachbau mit excel - Konzeption?
14.12.2017 08:09:19
biba
Hallo Günther,
die Idee mit dem Aktualiserungsdatum find ich gut.
hab zwar keinen direkten Schreibzugriff auf die Quelldateien, werde aber das letzte Dateiänderungsdatum in meine Abgleichsliste übernehmen. Spart schon mal einen Teil der Quelldateien zu durchlaufen. TOP.
Merci.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige