Anzeige
Archiv - Navigation
1336to1340
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

Neue, alte und einfache Kunden

Neue, alte und einfache Kunden
15.11.2013 14:01:07
Johannes
Hallo Zusammen,
ich habe eine Bestelltabelle mit folgenden Informationen in den Spalten A-D: Datum, Kalenderwoche, Kundennummer und Bestellmenge.
Ich möchte aktuell 4 Dinge auslesen, 1 Problem wurde bereits im Forum gelöst.
1. (das bereits gelöste Problem): einfache Zählung aller Kunden, die in der letzten Woche bestellt haben. siehe dazu folgenden Forumspost: https://www.herber.de/forum/archiv/1332to1336/t1335791.htm
2. einfache Zählungen aller Kunden, die in den letzten 2 Wochen bestellt haben. Das habe ich, wie im Link zu sehen, auch versucht so wie dort zu lösen, das hat allerdings noch nicht geklappt. Mit dem "Oder" als Variante zählt er leider Kunden, die in beiden Wochen bestellt haben doppelt. Ich möchte aber alle nur einfach zählen, auch wenn sie in der beiden Wochen bestellt haben.
3. Neue Kunden im Vergleich zur Vorwoche. Wieviel zusätzliche Kunden gibt es im Vergleich zur Woche zuvor? Am besten wäre auch noch wieviele Kunden es im Vergleich mit den 2 Vorwochen gibt.
4. Verlorene Kunden zur Vorwoche / 2 Vorwochen. Wieviele Kunden, die in der Vorwoche bzw den 2 Vorwochen bestellt haben, haben in der aktuellen Woche nicht mehr bestellt?
Ich hoffe ich finde Hilfe, vielen Dank im Voraus :-)
Johannes

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Neue, alte und einfache Kunden
15.11.2013 14:34:15
Rudi
Hallo,
als UDFs:
Function AnzKdZeitRaum(rKunden As Range, rDatum As Range, dVon As Date, dBis As Date)
'Anzahl Kunden, die im Zeitraum bestellt haben
Dim rngC As Range, objKd As Object, lCounter As Long
Set objKd = CreateObject("Scripting.dictionary")
For Each rngC In rDatum
lCounter = lCounter + 1
Select Case rngC
Case dVon To dBis
objKd(rKunden(lCounter).Value) = 0
End Select
Next
AnzKdZeitRaum = objKd.Count
End Function
Function AnzZusKdZeitRaum(rKunden As Range, rDatum As Range, dVonA As Date, dBisA As Date,  _
dVonB As Date, dBisB As Date)
'Anzahl Kunden, die in Zeitraum A aber nicht in B bestellt haben
'A: Vorperiode, B: akt. Periode
Dim rngC As Range, objKdA As Object, objKdB As Object, oKd, lCounter As Long
Set objKdA = CreateObject("Scripting.dictionary")
Set objKdB = CreateObject("Scripting.dictionary")
For Each rngC In rDatum
lCounter = lCounter + 1
Select Case rngC
Case dVonA To dBisA
objKdA(rKunden(lCounter).Value) = 0
Case dVonB To dBisB
objKdB(rKunden(lCounter).Value) = 0
End Select
Next
For Each oKd In objKdB
If Not objKdA.exists(oKd) Then AnzZusKdZeitRaum = AnzZusKdZeitRaum + 1
Next
End Function
Function AnzVerlKdZeitRaum(rKunden As Range, rDatum As Range, dVonA As Date, dBisA As Date,  _
dVonB As Date, dBisB As Date)
'Anzahl Kunden, die in Zeitraum B aber nicht in A bestellt haben
'A: Vorperiode, B: akt. Periode
Dim rngC As Range, objKdA As Object, objKdB As Object, oKd, lCounter As Long
Set objKdA = CreateObject("Scripting.dictionary")
Set objKdB = CreateObject("Scripting.dictionary")
For Each rngC In rDatum
lCounter = lCounter + 1
Select Case rngC
Case dVonA To dBisA
objKdA(rKunden(lCounter).Value) = 0
Case dVonB To dBisB
objKdB(rKunden(lCounter).Value) = 0
End Select
Next
For Each oKd In objKdA
If Not objKdB.exists(oKd) Then AnzVerlKdZeitRaum = AnzVerlKdZeitRaum + 1
Next
End Function

Gruß
Rudi

Anzeige
AW: Neue, alte und einfache Kunden
15.11.2013 14:49:26
Johannes
Hallo Rudi,
vielen dank für deine Antwort. Mein Problem mit VBA ist ein bisschen, dass ich noch keine wirklichen Erfahrungen habe (super Basic würd e ich es vielleicht nennen) und deswegen die Befehle nicht 100% verstehe. Könntest du es mir entweder noch etwas genauer erklären oder gibt es wahlweise eine nicht VBA basierte Lösung?
Viele Grüße und danke schonmal!!
Johannes

AW: Neue, alte und einfache Kunden
15.11.2013 15:17:14
Rudi
Hallo,
die ersten beiden Functions in ein Modul kopieren. Die 3. ist überflüssig. Du musst nur die Zeiträume umdrehen.
In der Tabelle:
ABCDEFG
1DatumKunde     
201.10.2013a  vonbis 
302.10.2013b  06. Okt19. Okt12
403.10.2013c     
504.10.2013d A06. Okt12. Okt6
605.10.2013e B13. Okt19. Okt 
706.10.2013f     
807.10.2013g A13. Okt19. Okt5
908.10.2013d B06. Okt12. Okt 
1009.10.2013e     
1110.10.2013s     
1211.10.2013w     
1312.10.2013g     
1413.10.2013f     
1514.10.2013h     
1615.10.2013j     
1716.10.2013u     
1817.10.2013z     
1918.10.2013t     
2019.10.2013r     

ZelleFormel
G3=AnzKdZeitRaum(B2:B43;A2:A43;E3;F3)
G5=AnzZusKdZeitRaum(B2:B43;A2:A43;E5;F5;E6;F6)
G8=AnzZusKdZeitRaum(B2:B43;A2:A43;E8;F8;E9;F9)

Gruß
Rudi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige