[erledigt] CSV/Excel-Datei bedingt zählen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 726
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

[erledigt] CSV/Excel-Datei bedingt zählen

Beitrag von kralle »

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
Zuletzt geändert von kralle am Mi 24. Mär 2021, 22:09, insgesamt 1-mal geändert.
Linux Mint 20.1, FPC-Version: 3.3.1 , Lazarus 2.1.0
+ Delphi XE7SP1

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4591
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: CSV-Datei bedingt zählen

Beitrag von af0815 »

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.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 3686
Registriert: Fr 8. Apr 2011, 09:01

Re: CSV/Excel-Datei bedingt zählen

Beitrag von wp_xyz »

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.

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 726
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: CSV/Excel-Datei bedingt zählen

Beitrag von kralle »

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
Linux Mint 20.1, FPC-Version: 3.3.1 , Lazarus 2.1.0
+ Delphi XE7SP1

Antworten