Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1404to1408
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

Rechnungsnummern generieren

Rechnungsnummern generieren
03.02.2015 02:23:02
Debian

Hallo zusammen :-)
In einem Excel-Programm zur Rechnungserstellung sollen fortlaufende Rechnungsnummern vergeben werden. Eine bereits vergebene Rechnungsnummer soll kein zweites mal vergeben werden. Im Wesentlichen besteht die Excelmappe aus den Blättern "Kundenstammdaten", (in welcher die Adressen der Kunden eingetragen werden), "Verkauf fortlaufend" (hier werden nacheinander alle Dienstleistungen/Verkäufe mit allen Details, Einzelpreis, Anzahl und Gesamtpreis aufgeführt), dem Blatt "Rechnungsformular" (Blankovorlage für die Rechnungen. Via Dropdownliste werden jeweils am Monatsletzten die Kunden ausgewählt und alle Daten aus den beiden anderen Blättern als Monatsrechnung zusammengestellt).
Die Rechnungsnummer soll im Blatt "Rechnungsformular" in einer eigens dafür reservierten Zelle generiert werden, und zwar für jede neu erstellte Rechnung. Nummern fortlaufend und ohne Wiederholung/doppelte Vergabe.
In den Kundenstammdaten habe ich die Nummern deswegen nicht drin, weil nicht immer alle dort angelegten Kunden eine Rechnung bekommen, also auch nicht alle Kunden in dieser Liste eine Nummer bekommen sollen.
Leider kann ich die Datei hier nicht hochladen, da sie wohl zu gross sei (421 kb).
Hat jemand eine Idee, wie man das machen kann?
Vielen Dank im Voraus:-)
Grüsse.
Debian

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
da gäbe es mehrere Möglichkeiten, ...
03.02.2015 07:47:35
neopa C
Hallo Debian,
... zum Einen könnte man dazu einfach die Datensätze mit ANZAHL() oder ANZAHL2() einer bestimmten Datenspalte zählen oder man könnte mit ZÄHLENWENN() einfach spez. Daten zählend auswerten oder ...
An Hand einer Beispieltabelle (mit Dummydaten) könnte man es auch konkret machen.
Gruß Werner
.. , - ...

AW: da gäbe es mehrere Möglichkeiten, ...
03.02.2015 14:53:35
debian
Hey hey :-)
Merci für die rasche Antwort. Also ich würd super gern die Datei hochladen, leider bekomm ich sie nicht kleiner :-/
Gibt es eine Möglichkeit, sie Dir via Email zu senden?
Lieben Gruss.
Debian

nicht eine Datei mit allen Daten ...
03.02.2015 15:04:46
neopa C
Hallo Debian,
... sondern reduziere diese auf max 30 Datensätze so, dass das relevante noch ersichtlich ist. Evtl. sensible Daten ersetze zuvor durch entsprechende Dummydaten.
Gruß Werner
.. , - ...

Anzeige
AW: nicht eine Datei mit allen Daten ...
03.02.2015 15:48:15
Debian
Ok, hab es soweit zusammengequetscht, das ich es hochladen kann. Wäre toll, wenn ihr was damit anfangen könnt :-)
https://www.herber.de/bbs/user/95521.xlsm

hast Du Dir den Beitrag von Armin angeschaut ? ...
03.02.2015 16:12:52
neopa C
Hallo Debian,
... denn nun offensichtlich zielst Du in Richtung einer VBA-Lösung und aus einer solchen halte ich mich raus.
Außerdem macht es mir den Anschein, dass in der Datei Daten stehen, die noch nicht anonymisiert sind. Wenn dass der Fall ist, solltest Du Kontakt zu Hans Herber aufnehmen und ihn bitten, die Datei zu löschen.
Gruß Werner
.. , - ...

Anzeige
AW: hast Du Dir den Beitrag von Armin angeschaut ? ...
03.02.2015 16:17:51
Debian
Ah das ist ok, sind keine sensiblen Daten in der Tabelle. Aber merci für den Hinweis :-)
Naja, persönlich ist mirs "Wurscht", ob die Aufgabe über eine Formel oder mittels VBA gelöst wird. Jedoch vermute ich, dass das mit VBA besser gemacht werden kann. Danke Dir dennoch für Deine Bemühungen Werner :-)

AW: hast Du Dir den Beitrag von Armin angeschaut ? ...
07.02.2015 11:13:46
Debian
Hallo zusammen :-)
Ich wollt mal fragen, ob jemand von euch eine Idee zu meinem Problem mit den Rechnungsnummern hat. Ich häng an der Stelle einfach fest.
Hier nochmal der Link zur Datei: https://www.herber.de/bbs/user/95521.xlsm
Wäre echt super, wenn jemand eine Lösung parat hat :-)
Merci im Voraus.
Grüsse aus Zürich
Debian

Anzeige
Du wolltest ja nur einen Vorschlag ...
08.02.2015 08:23:33
neopa C
Hallo Debian,
... generiere Deine RNr aus dem Jahr und der laufenden Nummer nach dem Schema: =JAHR(HEUTE()*1000+MAX({bisherige lfd Nr im Jahr])+1 und formatiere die Zahl mit dem benutzerdefinierten Zahlenformat 0000;"_"000. Somit bleibt es eine Zahl und Du kannst die max. bisherige RNr ermitteln, indem Du das [bisherige lfd Nr im Jahr] einfach um JAHR()*1000 kürzt. Wobei Du dafür ein negatives "Teilergebnis" mit MIN([Teilergebnis];0) abfängst. Ich hoffe Du verstehst, was ich meine.
Gruß Werner
.. , - ...

AW: Du wolltest ja nur einen Vorschlag ...
08.02.2015 11:41:45
Debian
Hallo und guten Morgen Werner :-)
Merci für Deine Antwort.
Wo müsste die bisherige/letzte Nummer dann stehen? Bisher hab ich die Rechnungsnummern immer im Blatt Kundenstammdaten für jeden Kunde manuell zugeteilt. Die wurde dann beim Rechnung erstellen von dort bezogen.
Gruss.
Debian

Anzeige
nun genau da könnte sie auch stehen ...
09.02.2015 08:54:37
neopa C
Hallo Debian,
... das ist doch letztendlich egal. Entscheiden tust Du es doch.
Noch ein Hinweis: Der Thread wird möglicherweise Morgen ins Archiv "wandern". Solltest Du den weiterführen wollen, solltest Du einen neuen aufmachen und einen Link auf diesen setzen.
Gruß Werner
.. , - ...

AW: nun genau da könnte sie auch stehen ...
09.02.2015 11:46:12
Debian
Warum einen neuen Thread, wenn der hier noch gar nicht abgeschlossen ist?
Hhhmm, dachte, man hätte das hier abschliessen können.

wenn Du Dich entschieden hast ...
09.02.2015 13:52:48
neopa C
Hallo Debian,
... können wir den Thread hier auch noch heute abschließen.
ich weiß nicht, wo Du Deine Rechnungs-Nr. dann letztendlich hinschreibst, wenn Du eine Rechnung geschrieben hast. Wenn Du diese wieder in den Kundenstamm schreibst, kannst Du diesen Bereich genau so auswerten wie von mir allgemein vorgeschlagen. Oder gibt es da ein Problem?
Gruß Werner
.. , - ...

Anzeige
AW: wenn Du Dich entschieden hast ...
09.02.2015 14:09:00
Debian
Da liegt glaub ich das Missverständniss. Bislang hab ich im Blatt Kundenstammdaten in Spalte H die Rechnungsnummern händisch vergeben. Im Blatt Rechnungsformular wurden die dann bei Auswahl des gewünschten Kunden in Zelle D26 eingetragen. Nachteil dabei: Ich darf nicht vergessen, die Nummern jeweils vorher einzutragen. Ausserdem werden nicht allen Kunden jeden Monat Rechnungen geschickt, es würden also Nummern übersprungen werden. Oder man müsste für jede Rechnung manuell die Nummer eintragen und irgendwo notieren, welches die letzte war.
Meine Frage ist nun, wie man die Nummern fortlaufend automatisch vergibt. Es soll einfach ausgeschlossen werden, das Nummern doppelt vergeben werden. Die Nummer besteht aus dem Jahr und einer dreistelligen, fortlaufenden Nummer. Zum Beispiel: 2015_149
Das Jahr soll im nächsten Jahr automatisch wechseln.
Wie löst man das am geschicktesten?
Lieben Gruss.
Debian

Anzeige
ich glaubte das wäre verständlich ...
09.02.2015 15:21:33
neopa C
Hallo Debian,
... nun denn, hier ein ein kleines Beispiel wie ich es konkret meinte:
ergänzend ...
09.02.2015 18:14:47
neopa C
Hallo Debian,
... natürlich müssen wie bereits gestern geschrieben, die entsprechenden Zellen alle im benutzerdefinierten Zahlenformat: 0000;"_"000 formatiert sein.
Ich geh für heute offline. Sollte der Thread Morgen schon im Archiv sein, dann siehe mein Hinweis von heute Morgen.
Gruß Werner
.. , - ...

AW: ergänzend ...
09.02.2015 18:36:26
Debian
Für sich allen genommen ja. In der bestehendem Mappe eher nicht. Beim Erstellen der Rechnung aus dem Blatt "Rechnungsformular" passiert nichts in Richtung weiterzählen. Das wird am Ende wohl nur via Makro laufen können.

Anzeige
AW: Rechnungsnummern generieren
03.02.2015 07:49:01
ede
Hallo Debian,
dann erstell dir zusätzlich ein Tabellenblatt "Ausgangsrechnungen", wo du alle AR dokumentierst.
In Deinen Formular kannst du dann mit max(spalte aus Ausgangsrechnungen)+1 die nächste freie AR-Nummer berrechnen.
gruss
ede

AW: Rechnungsnummern generieren
03.02.2015 14:53:31
debian
Hey hey :-)
Merci für die rasche Antwort. Also ich würd super gern die Datei hochladen, leider bekomm ich sie nicht kleiner :-/
Gibt es eine Möglichkeit, sie Dir via Email zu senden?
Lieben Gruss.
Debian

AW: Rechnungsnummern generieren
03.02.2015 15:15:36
Armin
Hier ein Makro mit dem du die Rechnungsnummer generieren kannst.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim myPfad As String
'Pfad bitte anpassen
myPfad = Application.DefaultFilePath
ThisWorkbook.SaveAs myPfad & "\" & Range("Rechnungsnummer") & ".xls", True
End Sub

Sub Fortlaufende_RechnungsNummer()
'byRamses
On Error GoTo R_Error
Dim newNr As Variant, oldNr As Variant
Dim FileName As String
FileName = "C:\Rechnung.ini"
'Prüfen ob bereits eine Rechnungsnummer in der Zelle steht
'Um ein erneutes hochzählen bei späterem öffnen der Datei zu vermeiden
If Range("Rechnungsnummer") <> "" Then Exit Sub
'Erstellen einer externen Datei zum dokumentieren der
'fortlaufenden 5 stelligen Nummer
Close #1
'Öffnen der INI Datei
Restart:
'Pfad der Datei bitte anpassen
Open "c:\Rechnung.ini" For Input As #1
'einlesen der alten Nummer
Line Input #1, oldNr
Close #1
'Berechnen und schreiben der neuen Nummer
newNr = oldNr + 1
Open "c:\Rechnung.ini" For Output As #1
Write #1, newNr
'Schliessen der INI Datei
Close #1
'Länge der Zahl bestimmen
Select Case Len(newNr)
Case 1
newNr = "00" & newNr
Case 2
newNr = "0" & newNr
Case 3
newNr = newNr
Case 4
MsgBox "Zahlenlimit überschritten"
Exit Sub
End Select
'Rechnungsnummer ist ein Name der sich auch eine Zelle bezieht
'Achtung:: Es dürfen keine Doppelpunkte, Slash oder Backslasch verwendet werden
Range("Rechnungsnummer") = "R" & Format(Now, "yyyy") & "-" & newNr
R_Exit:
Exit Sub
R_Error:
Select Case Err
Case 53
'Datei ist noch nicht vorhanden
Open "c:\Rechnung.ini" For Output As #1
Close #1
Open "c:\Rechnung.ini" For Output As #1
Write #1, 0
Close #1
Err.Clear
Resume Restart
Case 54
'Datei ist bereits geöffnet und wurde noch nicht wieder geschlossen
Close #1
Resume Restart
Case Else
MsgBox Err & ": " & Err.Description
Resume R_Exit
End Select
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige