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

Werte aus einer Matrix für eine Andere benutzen

Werte aus einer Matrix für eine Andere benutzen
20.11.2018 11:30:03
Henri
Hallo,
Ich habe die letzten Tage versucht ein Problem zu lösen, aber leider ohne Erfolg. Im Grunde klingt es wahrscheinlich relativ banal, aber bei der Umsetzung hapert es dann leider plötzlich.
Vielleicht kann mir jemand helfen. Das wäre wirklich wunderbar.
Ich habe 100 Kunden mit ihren jeweiligen Entfernungen zueinander (Distanzmatrix) und von allen Kunden die Öffnungszeiten.
Ich möchte nun alle Kunden ausmachen, die innerhalb von 1km erreichbar sind und die ein gemeinsames Öffnungszeitenintervall haben. Also zB beide Kunden haben von 7-10 auf. Oder 10-13. (3 Stundenintervalle)
Die Öffnungszeiten der Kunden habe ich soweit aufbereitet, dass sie in einer Binärtabelle vorliegen. Hier mal ein kleiner Ausschnitt als Beispiel.
open 0-0:59 1-1:59 2-2:59 3-3:59
C01 1 0 0 0
C02 0 0 0 0
C03 1 0 1 0
C04 0 0 1 0
C05 1 1 0 0
km C01 C02 C03 C04
C01 1000 0.3 1.28 0.2
C02 2.65 1000 3.77 3.02
C03 3.59 2.3 1000 0.77
C04 3.39 2.74 0.52 1000
C05 3.08 2.77 0.55 1.24
Ich stelle mir vor, dass man in eine Zelle eintragen kann, in welchem Intervall und in welchem Radius die Kunden sein sollen und dass dann die entsprechend in Frage kommenden Kunden ausgespuckt werden.
Glaubt ihr das kann man machen? Vielleicht ohne VBA sogar?
Mich interessiert natürlich jede Lösung brennend.
Vielen Dank im Voraus!
Beste Grüße
Henri

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte aus einer Matrix für eine Andere benutzen
20.11.2018 14:00:46
Matthias
Moin!
MIt Formeln geht das bestimmt auch, wäre mit aber zu kompliziert. Mit VBA würde ich die entsprechende Spalte deiner Zeitmatrix durchlaufen. Wenn da eine 1 steht dann in der Entfernungsmatrix die entsprechende Zeile durchlaufen. Alle Werte die dann im Parameter liegen in ein Array oder Dictinary packen und am Ende dieses ausgeben.
Willst du aber wirklich das Zeitintervall vergleichen und nicht die wirklichen Öffnungszeiten (zumindest ob die sich überschneiden)?
VG
AW: Werte aus einer Matrix für eine Andere benutzen
20.11.2018 14:44:47
Henri
Hallo Matthias,
erst einmal vielen Dank für deine schnelle Antwort!
Ich hatte versucht, die Daten so aufzuarbeiten, dass ich irgendwie damit arbeiten kann. Ich bin wahrscheinlich in dem Sinne noch Anfänger in Excel und Programmieren habe ich Null Erfahrung.
Für mich waren daher die richtigen Öffnungszeiten einfach ungreifbar.
Wenn es auch mit denen geht, wäre das natürlich optimal.
Nr Offen MO DI MI DO FR SA SO
00 07:00-06:59 O O O O O O O
01 10:00-01:00 O O O O O O 10:00-00:00
02 11:00-24:00 O O O O O O O
03 08:00-01:00 O O O O O O O
04 16:00-24:00 O O O O O O CLOS
Allerdings schauen die wieder so aus, weil natürlich an verschiedenen Tagen verschiedene Öffnungszeiten sind.
Ist das möglich?
Viele Grüße!
Henri
Anzeige
AW: Werte aus einer Matrix für eine Andere benutzen
20.11.2018 15:57:12
Matthias
Moin!
ICh glaube, das würde auch gehen - der Code wäre nur ein wenig komplizierter. Damit ich das nicht alles nachbauen muss, kannst du mir mal einen Gefallen tun ein eine kleine Musterdatei mit den (Dummy)Daten hochladen. Dabei dann gleich mal aufzeigen, wohin das Ergebnis soll. Dann könnte man was programmieren so dass du es nur anpassen musst. Vorteil zudem, die Daten sehen schon so aus, wie du sie brauchst.Falls du es selber probieren willst, würde ich sonst nur mit Code skizzieren, wie es aussehen könnte.
Und deine Skizze soll heißen, dass die bspw. immer von 7 bis kurz vor 7 aufhaben, außer es steht was anderes in der Tagesspalte?
Und letzte Frage: Die Zeiten so wie hier oder wie anfangs vergleichen? Falls du was hochlädst, am besten mal ein Beispielergebnis an HAnd der Daten mit eintragen.
VG
Anzeige
AW: Werte aus einer Matrix für eine Andere benutzen
20.11.2018 19:08:03
Henri
Hi,
ich habe ein File zusammengeklaubt. Praktisch wäre, wenn man im ersten Sheet die Parameter eintragen könnte und die benötigten Kalkulationen erscheinen.
Es geht um Lieferungen für Kunden. Und ich möchte nur die Kunden in Betracht ziehen, die in einem Radius von 1 km bzw 2 km etc liegen und ungefähr die selben Öffnungszeiten haben, weil ansonsten macht es ja keinen Sinn, da diese Kunden sicher nicht gemeinsam beliefert werden können.
Das Ziel ist dann die durchschnittliche Entfernung für diese Kunden zu berechnen. Daher habe ich im Beispiel Sheet den Output eingefügt.
https://www.herber.de/bbs/user/125533.xlsx
Beste Grüße!
Anzeige
AW: Werte aus einer Matrix für eine Andere benutzen
20.11.2018 19:59:27
Matthias
Moin!
NOchmal eine Frage: Soll es einen Startparameter geben (Zeit oder Kunden)? Ansonsten könnte es ja auch verschiedene Varianten/Touren geben die sich gegenseitig ausschließen. Was soll in so einem Fall geschehen? Da dachte ich, dass man da irgendwo bzw. irgendwann starten muss.
VG
AW: Werte aus einer Matrix für eine Andere benutzen
20.11.2018 21:31:33
Henri
Hi,
das sind dann die Fragen, an denen ich später arbeiten werde. J
Dafür brauche ich diese Durchschnittsberechnungen für jeden Kunden.
Beste Grüße
Henri
AW: Werte aus einer Matrix für eine Andere benutzen
21.11.2018 19:00:02
Matthias
Moin!
Das macht es aber nicht wirklich einfacher. Habe deine Datei mal dahingehend geändert, dass ich noch einen Wochentag im ersten Blatt eingefügt habe. Damit wird die Auswertung nicht zu unübersichtlich. Ansonsten könnte man noch eine Schleife über alle 7 TAge einfügen und hätte alles - da wäre dann aber die Frage, wie das dargestellt werden soll. Ich bin jetzt davon ausgegangen, dass die einzelen Matrizen und auch die Werte vorne immer in der selben Reihenfolge stehen. Ansonsten müsste man den Code ändern. Neben dem Kunden werden dann der Durchschnittskm und die Kunden dazu aufgelistet.
Und noch ein Hinweis. Deine Entfernungsmatrix war m.E. falsch. Die Werte sollten über die Diagonale gespiegelt sein. Bei dir standen da andere Werte. Damit war es von 0 zu 01 anders als von 01 zu 0. Habe das mal angepasst.
HIer die Datei, einfach mal probieren.
https://www.herber.de/bbs/user/125566.xls
VG
Anzeige
AW: Werte aus einer Matrix für eine Andere benutzen
22.11.2018 10:42:32
Henri
Hallo,
vielen Dank für deine tolle Hilfe!
Ich habe bereits alle meine weiteren Daten einsetzen können und es rechnet fleißig.
Das mit dem Wochentag habe ich komplett vergessen, da hast du Recht. Super, dass das auch mit vorne drin steht.
Dass die Matrix nicht symmetrisch war, das hat schon so gestimmt. Hin und Retour kann in dem Fall unterschiedlich dauern. Iteriert der Code jetzt nur durch die eine Hälfte der Matrix? Leider stimmen nämlich die durchschnittlichen Distanzen nicht mehr. Fällt dir vielleicht ein, woran das liegen könnte?
Beste Grüße!
Henriette
AW: Werte aus einer Matrix für eine Andere benutzen
22.11.2018 19:47:35
Matthias
Moin!
Das musst du jetzt mal genauer erklären. In der Datei hatte ich da keinen Hinwei szu gefunden.
1. Wen Hin- und Rückfahrt unterschiedlich sind, welcher Wert soll genommen werden?
2. ICh weiß nicht, welche Durchschnitte du bisher hast, bzw. aus was die sich zusammensetzen. Die Kilometerstrecke durch die Anzahl der Kunden? Oder meinst du den Durchschnitt von Hin- und Rückfahrt? Wenn letzteres, wie soll das dann dargestellt werden?
Da die Distanzmatrix symetrisch ist, nutze ich sie komplett, da es sich schneller programmieren lies. Kann man alles auch ändern. Müsste nur wissen, wie es aussehen soll und woraus es sich zusammen setzten soll.
VG
Anzeige
AW: Werte aus einer Matrix für eine Andere benutzen
23.11.2018 08:09:17
Henri
Hi,
es reicht, wenn mit dem Hin-Wert berechnet wird. ICh hatte einfach wennsumme/countsumme bisher.
Das sollte auch reichen. Es sollen Richtwerte darstellen, um Relationen zwischen den einzelnen aufzuzeigen.
Beste Grüße!
AW: Werte aus einer Matrix für eine Andere benutzen
23.11.2018 15:26:41
Matthias
Moin!
Also hier mal der Code angepasst. Ich nehme jetzt das untere Dreieck der Distanzmatrix. Keine Ahnung, ob das so richtig ist. Deine Erklärung hat meine Frgen nicht wirklich erklärt. Habe mir deine BEispielmappe nochmal angeschaut, kann da aber nicht erkennen, wie du da bei den KM vorgehen willst - du nimmst dort ja Hin- und Rückwerte (wenn die durch die jeweiligen Dreiecke in der Distanzmatrix dargestellt werden - welcher ist was). Und einen Durchschnitt hattest du da auch nicht. Von welchen Zellen nimmst du wennsumme und welche Werte standen da drin?
https://www.herber.de/bbs/user/125605.xls
Also am Besten du erklärst mal an einem Beispiel Schritt für Schritt, wie du das auswählen willst. Zum Vergleich mal die Erklärung des Codes:
- Schleife über alle Kunden im Ausgangsblatt
- ausgehend vom Kunden und dem Tag werden an Hand der Öffnungszeiten mögliche andere Kunden ausgesucht
- zu den ausgesuchten Kunden wird geschaut, ob sie innerhalb des Strecke liegen (unters Km Dreieck)
- wenn ja, werden die gelistet und die KM addiert
- wenn alle möglichn Kunden geprüft wurden, werden deren Namen eingetragen und die gesamten KM durch die Anzahl der Kunden geteilt eingetragen (oder sollte da die reine KM Strecke hin?)
- auf zum nächsten Kunden
- wenn alle Kunden durch fertig
Wie gesagt, schau dir das mal an, ob du auch so vorgehst. An Hand deiner Datei hatte ich fast die Vermutung, dass du ert die KM prüfst (beide Dreiecke) und dann die Zeit vergleichst.
VG
Anzeige
AW: Werte aus einer Matrix für eine Andere benutzen
24.11.2018 20:36:06
Henri
Hallo,
als erstes Mal vielen Dank, dass du noch dran bleibst!
Intuitiv würde ich zuerst schauen, welche Kunden innerhalb des km-Radius liegen und dann schauen, ob die Kunden, die nah genug sind auch ähnliche Öffnungszeiten haben. Richtig. Aber man kann auch erst schauen, welche Kunden, ähnliche Öffnungszeiten haben und dann schauen, ob sie nah sind.
Schritt für Schritt wäre das:
Innerhalb das Sheets schaue ich in der Distanzmatrix zB für den 4. Kunden: In der Zeile von Kunde 4, wo sind die km kleiner Radius und dann kann man oben ablesen, welcher Kunde das ist. In der Beispieldatei heißt das in A6 Kunde 04 finden und dann nur alle Einträge in der Zeile anschauen, ob der Weg zu welchem anderen Kunden für 1 km kleiner 1 ist. Hier Kunden 2 und 3, weil die Entfernung .6 bzw .52 ist.
Dann schaue ich nach den Öffnungszeiten für Kunden 4, 2 und 3. 4 macht um 16 Uhr auf, 2 um 11 und 3 um 8. Kunden 2 und 3 kommen also nicht für Kunden 4 in Frage, weil sie nicht innerhalb eines Toleranzbereichs von hier 3 stunden öffnen.
(Nächste Überlegung wäre dann, ob man den Tag vielleicht noch mal unterteilen kann, sodass man diese Kunden innerhalb des Nachmittags beliefern kann. Sorry, das fällt mir jetzt erst ein. Kann man vielleicht auch noch unterscheiden zwischen vormittag und nachmittag? Also, wie bei dem Beispiel, dass man Kunden zwar nicht am Vormittag zusammen beliefert werden können, aber eben am nachmittag? Theoretisch. Oh man, wow, das wird immer komplizierter.)
Also, wenn man dann Kunden gefunden hat, sagen wir, dass für Kunden 4 doch die Kunden 2 und 3 in Frage kommen, dann sollte die durchschnittliche Entfernung zu Kunden 2 und 3 für den Kunden 4 berechnet werden. Also die km zu2: .6 und zu 3: .52 durch 2 (die Anzahl der nahen kunden, die auch ähnliche Öffnungszeiten haben)
Dh vom Code oben, was du geschrieben hast, passt es im Grunde, aber das mit dem unteren km-Dreieck nicht ganz. Es müsste durch die Zeile pro Kunden iterieren, wie was ich oben beschrieben habe mit den durchschnitts-km für Kunden 4. Deswegen hatte ich auch sumif/countif geschrieben. Das über die Zeile schmeißen pro Kunde, wobei sich das if dabei darauf bezieht, ob der Kunde nah ist UND ob er offen hat.
Ich hoffe, dass das ein bisschen Klarheit gebracht hat. Ich weiß, es ist mühsam, also wie gesagt, danke!
Beste Grüße
Anzeige
AW: Werte aus einer Matrix für eine Andere benutzen
25.11.2018 11:40:40
Matthias
Moin!
Kein Problem, das bekommen wir schon hin. Solltest ggf. aber mal einen neuen Beitrag aufmachen, weil man in dem hier in 1 bis 2 Tagen nicht mehr antworten kann. Verlinke die aber miteinander.
Habe deine Antwort gelesen. Zugegeben, alles ist mir noch nicht klar. Zumindest in Bezug auf die Summe habe ich noch Fragezeichen im Kopf. HAbe sie erstmal so wie bisher gelassen und addiere die Strecke der einzelnen Kunden und teile die gleich durch die Anzahl. Die eingetragene Zahl ist also schon der Durchschnitt. Falls du extra zu jedem Kunden die KM brauchst, könnte man das auch einbauen.
Die Distanzmatrix habe ich wie bei deinem Ausgangspost wieder geändert - die Werte 0 zu 01 sind daher ggf. abweichend zu 01 zu 0. Er geht jetzt die Zeile durch und nimmt die Werte aus der Zeile zum jeweiligen Kunden.
Bin jetzt bei meine Variante geblieben: Erst Zeit schauen und dann KM. Wenn du es andersrum brauchst, einfach sagen, wäre auch kein Problem.
https://www.herber.de/bbs/user/125641.xls
Wo du nochmal schauen müsstest, ist allgemein, ob es passt und dann ob das mit der Summe so richtig ist.
Nachmittag wäre m.E. auch kein Problem. Müsstest nur mal an einem Beispiel deine gewünschte Zeitmatrix darstellen. Wobei du ggf. auch keine neue Zeitmatrix brauchst. Die Öffnungszeiten ändern sich ja nicht. Sollte eigentlich reichen, wenn wir im Ausgangsblatt eine Zelle mit der Nachmittagsstartzeit festlegen und aber der dann wieder x Stunden +/- durchgehen. Wie soll das Ergebnis dann ausgegeben werden (darunter oder daneben?). Hier mal ein Beispiel (ohne funktionierenden Code) wie es aussehen könnte:
https://www.herber.de/bbs/user/125643.xls
Achja, man könnte den Code auch in ein Event packen, so dass die Anzeige beim Ändern der Parameter aktualisiert wird. Dann wäre der Button nicht mehr notwendig (oder halt auch extra dazu).
VG
Anzeige
AW: Werte aus einer Matrix für eine Andere benutzen
26.11.2018 08:44:28
Henri
Guten morgen,
scheinbar hast du beim Einfügen, das falsche Sheet erwischt. J Der erste Link ist für etwas Anderes. Lad doch noch noch mal bitte das Richtige rein.
Das Beispiel für den Nachmittag gefällt mir gut. Da das Original aber 100 Einträge hat, macht es vielleicht mehr Sinn, wenn die "Nachmittags-Kunden" auf einem Extra-Tab ausgegeben werden, damit das ganze relativ übersichtlich bleibt.
Was genau kann man dann bei zeitpunkt und Zeitraum eintragen? Bei Zeitpunkt: Nachmittag geht um 14 Uhr los und bei Zeitraum: für die nächsten 6 Stunden, sodass alle Kunden enthalten sind, die gemeinsam von unter anderem 14 bis 20 Uhr geöffnet haben?
Beste Grüße und eine schöne Woche!
Anzeige
AW: Werte aus einer Matrix für eine Andere benutzen
26.11.2018 20:18:30
Matthias
Moin!
Upps mein Fehler. HIer die richtige Datei.
https://www.herber.de/bbs/user/125664.xls
Habe da mit dem Nachmittag mal angefangen aber da sind noch Fehler drin. Fehlt mit heute aber die Zeit, muss ich morgen mal schauen.
Wie geschrieben, werde ich wohl morgen nicht mehr antworten können, da wir dann im Archiv liegen. Da einfach einen neuen Beitrag eröffnen.
Für den Nachmittag, würde ich deinen Vorschlag (ab dem Beginn für den Zeitraum offen) übernehmen. Außer du brauchst es anders.
Ansonsten nochmal bzgl. der Strecken testen.
VG

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige