gnude
Anmeldungsdatum: 11. Juli 2014
Beiträge: 806
|
Hallo
ich habe eine Excel Liste mit Rechnungsnummern und möchte nun die Vollständigkeit
prüfen, sprich..... ob die Liste vollständig ist oder Nummern fehlen. Beispiel: 24233 Rechnung_1
24235 Rechnung_2
24237 Rechnung_3
24238 Rechnung_4 Bei diesem Beispiel müsste man jetzt herausfinden das eine Nummer fehlt.
Nun weiss ich nicht ob es sinniger ist das in Libreoffice zu lösen oder nen
kleines Script auf eine CSV loslässt. Hat jemand eine Idee?
|
unbuntuS12
Anmeldungsdatum: 2. Juni 2010
Beiträge: 1816
|
Zunächst mal musst du dich genauer ausdrücken. Es liegt zwar nahe, dass es dir um die erste Spalte geht, aber du solltest es explizit machen. Ich kann weder mit Libreoffice, noch mit Excel wirklich umgehen. Ich würde mir das als CSV exportieren und skripten.
|
Ruudsy
Anmeldungsdatum: 1. Mai 2012
Beiträge: 328
|
Ein spontaner Ansatz wäre die Summe aller Rechnungsnummern auf zwei arten zu berechnen und diese Werte zu vergleichen. Ob man das in einer Tabellenkalkulation oder in einem Skript realisiert ist dann egal.
Welche genau fehlt, lässt sich dann im Anschluss auch mathematisch angehen.
|
gnude
(Themenstarter)
Anmeldungsdatum: 11. Juli 2014
Beiträge: 806
|
Die Tabelle hat 19 Spalten und die Nummer ist in der 4. Spalte.
In der ersten Zeile steht noch eine Überschrift, die ich aber problemlos rausnehmen kann. Nun hätte ich aber spontan keine Idee, wie ich das Scripten kann.....
|
gnude
(Themenstarter)
Anmeldungsdatum: 11. Juli 2014
Beiträge: 806
|
Ruudsy schrieb: Ein spontaner Ansatz wäre die Summe aller Rechnungsnummern auf zwei arten zu berechnen und diese Werte zu vergleichen. Ob man das in einer Tabellenkalkulation oder in einem Skript realisiert ist dann egal.
Welche genau fehlt, lässt sich dann im Anschluss auch mathematisch angehen.
Klappt das denn auch wenn mehrere Nummern fehlen? Mit einer Formel kann man
das vermutlich schlecht erfassen...
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11176
Wohnort: München
|
Was für Trennzeichen und Escaping willst du denn in der CSV-Datei nutzen? Wenn man die Felder an Whitespace auftrennen darf, ginge das z.B. so (wenn man annehmen darf, dass die Datei nach der Rechnungsnummer sortiert ist):
| #!/usr/bin/env python3
import fileinput
last_num = 0
for line in fileinput.input():
if not line.strip(): continue # skip emtpy lines
_, _, _, num, *_ = line.strip().split()
num = int(num)
if last_num and (num - last_num) > 1:
print("missing value(s) between {} and {}".format(last_num, num))
last_num = num
|
$ ./check_for_gaps.py << EOF
> Spalte1 Spalte2 Spalte3 24233 Rechnung_1
> Spalte1 Spalte2 Spalte3 24235 Rechnung_2
> Spalte1 Spalte2 Spalte3 24237 Rechnung_3
> Spalte1 Spalte2 Spalte3 24238 Rechnung_4
> EOF
missing value(s) between 24233 and 24235
missing value(s) between 24235 and 24237
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11176
Wohnort: München
|
Oder als Bash-Skript unter der Annahme, dass die Felder mit Tabs getrennt sind:
| #!/bin/bash
last_num=0
while read -r num
do
[ $last_num -gt 0 ] &&
[ $(( num - last_num )) -gt 1 ] &&
echo "missing value(s) between $last_num and $num"
last_num=$num
done < <(sort -t \t -k4 -n rechnungsnummern.csv | cut -f 4)
|
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
Moin, Excel gehört zwar hier nicht her, aber wieso rechnest das nicht direkt in der Tabelle? Angenommen in A1:A99 stehen deine RG-Nummern und die sind immer 5-stellig: Formel für Zelle A2 und runterkopieren =Wenn(wert(links(A2;5)=wert(links(A1;5)+1);"";"Fehlende Nummer:"&wert(links(A1;5)+1)
Links(Zelle,Anzahl) gibt die ersten 5 Stellen aus wert wandelt diese von text in eine zahl wenn der wert der obenstehenden Zeile+1 nicht der wert in der aktuellen Zeile ist: Meckern
(Gerade ungetestet, bin zuhause und hab hier zum glück kein Excel ^^)
|
umbhaki
Supporter
Anmeldungsdatum: 30. Mai 2010
Beiträge: 2521
Wohnort: Düren/Rhld
|
ChickenLipsRfun2eat schrieb: (Gerade ungetestet, bin zuhause und hab hier zum glück kein Excel ^^)
Excel habe ich auch nicht, aber Calc, und ich bin gerade auf dieselbe Idee wie du gekommen, nur ein bisschen simpler: In die nächste freie Spalte neben der Tabelle kommt in die zweite Zeile folgende Formel:
=WENN(A1+1=A2;"";"Ziffer fehlt")
Dabei bin ich davon ausgegangen, dass die Tabelle in A1 beginnt. Bitte gegebenenfalls anpassen. Diese Formel kann man jetzt die ganze Tabelle hinunterkopieren und findet bei korrekt fortlaufender Nummer nichts, bei einer fehlenden Nummer steht da „Ziffer fehlt“.
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
umbhaki schrieb: =WENN(A1+1=A2;"";"Ziffer fehlt")
Funktioniert das in Calc, wenn der Zelleninhalt "24233 Rechnung_1" heisst? Falls die RG-Nummer einzeln steht, klar. Dann braucht man keinen Split oder ne Wertumwandlung. Hätte ich vllt vorher mal fragen sollen 😀
|
umbhaki
Supporter
Anmeldungsdatum: 30. Mai 2010
Beiträge: 2521
Wohnort: Düren/Rhld
|
ChickenLipsRfun2eat schrieb: Funktioniert das in Calc, wenn der Zelleninhalt "24233 Rechnung_1" heisst?
Nein. Ich war tatsächlich davon ausgegangen, dass die Zahl in einer eigenen Zelle steht.
|
umbhaki
Supporter
Anmeldungsdatum: 30. Mai 2010
Beiträge: 2521
Wohnort: Düren/Rhld
|
Hallo ChickenLipsRfun2eat, deine Formel habe ich neugierigerweise auch gerade ausprobiert. Sie stimmt nicht so ganz, aber so:
=WENN(WERT(LINKS(A2;5))=WERT(LINKS(A1;5)+1);"";"Fehlende Nummer: "&WERT(LINKS(A1;5)+1))
funktioniert sie, wenn die Nummer und der Text in derselben Zelle stehen. (Da war vorne 'ne Klammer zuwenig und ganz hinten hat die schließende Klammer gefehlt.) ChickenLipsRfun2eat schrieb: (Gerade ungetestet, bin zuhause und hab hier zum glück kein Excel ^^)
Dafür, dass du das nicht ausprobiert hast, war das aber gar nicht schlecht! 👍
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
[OT]
umbhaki schrieb: Dafür, dass du das nicht ausprobiert hast, war das aber gar nicht schlecht! 👍
Ja, traurig was die eingeschränkte Softwarewahl am Arbeitsplatz aus einem macht 😀
[/OT]
|