Moin,
ich habe in meinem neuen Job gerade eine Aufgabe zu erledigen, die ich ungerne von Handerledigen möchte.
Gebe ist eine Excel-Arbeitsmappe mit 5 Arbeitsblättern,
Auf jedem Arbeitsblatt liegen bis zu 4000 Zeilen mit Artikeldaten.
Ich muss jetzt die gleichen Artikel zählen und am Ende ein Ergebnis je Arbeitsblatt ausgeben.
Ein Artikel ist identisch wenn er den gleichen Inhalt in den Spalten D,E und K hat.
Ich habe jetzt schon viele Excel-Tipps incl. VBA-Scripte ausprobiert, aber ein brauchbares Ergebnis kam dabei nicht heraus.
Also, habe ich mit überlegt, ob es nicht eine Möglichkeit gibt das mit Lazarus zu lösen.
Entweder in dem man das Excelarbeitsblatt direkt einliest und bearbeitet oder in dem ich von Excel zu CSV expotiere und dann die CSV-Datei bearbeite.
Nun habe ich beide Varianten noch nie programmiert.
Bevor ich nur stundenlang versuche das Rad neu zu erfinden, hat vielleicht hier jemand etwas passendes liegen und würde es mir zur Verfügung stellen?
Gruß HEiko
[erledigt] CSV/Excel-Datei bedingt zählen
- kralle
- Lazarusforum e. V.
- Beiträge: 1199
- Registriert: Mi 17. Mär 2010, 14:50
- OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
- CPU-Target: 64Bit
- Wohnort: Bremerhaven
- Kontaktdaten:
[erledigt] CSV/Excel-Datei bedingt zählen
Zuletzt geändert von kralle am Mi 24. Mär 2021, 22:09, insgesamt 1-mal geändert.
OS: MX Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1
- af0815
- Lazarusforum e. V.
- Beiträge: 6782
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: CSV-Datei bedingt zählen
Grundlegend kannst du die meisten Excelsheet in ein Workbook einlesen. Dann das ganze einfach Zelle für Zelle durchackern und eine Liste daraus machen. Dazu deine 3 Spalten Abfragen. Wenn du die Kombination in deiner Liste hast, zählst du einfach einen Zähler in der Liste höher. Wenn du es nicht in der Liste findest, legst du einen neuen Eintrag mit dem Zählerstand 1 an. Geht relativ einfach. Die Liste ist bei mir ganz einfach eine von den Listen, die der FPC für Objekte bereitstellt. Die Suche im Speicher geht recht rasch, ev. kann man einen Hashverwenden.
Jede andere Lösung erscheint nur mehr Zwischenschritte zu benötigen.
Jede andere Lösung erscheint nur mehr Zwischenschritte zu benötigen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: CSV/Excel-Datei bedingt zählen
Die Datei in fpspreadsheet einlesen, Sheet für Sheet durchlaufen. Jedes Sheet nach den Spalten D, E, K sortieren. Dann die Zeilen von oben nach unten durchlaufen. Immer wenn ein Block aufeinanderfolgender Zeilen denselben Inhalt in den Zellen Dn, En, Kn (n = Zeilenindex) hat, liegt eine Doublette vor.
- kralle
- Lazarusforum e. V.
- Beiträge: 1199
- Registriert: Mi 17. Mär 2010, 14:50
- OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
- CPU-Target: 64Bit
- Wohnort: Bremerhaven
- Kontaktdaten:
Re: CSV/Excel-Datei bedingt zählen
Danke für die Tipps.
Dank eines fähigen Supportmitarbeiters, komme ich ich jetzt mittels Freier Attribute im Quellprogramm und einer Xecel-Pivot-Tabelle, sehr schnell und sauber zu Ziel.
Gruß Heiko
Dank eines fähigen Supportmitarbeiters, komme ich ich jetzt mittels Freier Attribute im Quellprogramm und einer Xecel-Pivot-Tabelle, sehr schnell und sauber zu Ziel.
Gruß Heiko
OS: MX Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1