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

Kreuztabelle per VBA berechnen

Kreuztabelle per VBA berechnen
25.11.2016 14:02:57
Andy
Hallo Experten,
ich möchte eine vom Benutzer vorgegebene Kreuztabelle, in die der Benutzer nur die erste Zeile und erste Spalte füllt, automatisch berechnen lassen. Die konkrete Aufgabenstellung findet ihr im Bild.
Schon mal vielen Dank für euer "Hirnschmalz".
Userbild

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Schon möglich, aber...
25.11.2016 14:13:09
Michael
Hallo Andy,
...das lässt doch ein paar Fragen offen:
- mit dem derzeitigen Info-Stand kann man Dir maximal ein Schema aufzeigen, ein konkretes Programm wohl nicht, da die "Berechnungen im Blatt 2" nicht klar sind. Willst Du das oder was konkretes?
- Warum müssen die Berechnungen in einem 2. Blatt erfolgen? Warum können diese Berechnungen nicht gleich im Programm erfolgen, und dann in die "Kreuztabelle" zurückgeschrieben werden? Auch hier ist natürlich wieder die Frage, um welche Art von Berechnung es sich handelt.
- Sollen immer die gleichen Berechnungen durchgeführt werden, oder ändern sich diese auch? Also nicht nur die Berechnungsparameter, wie in der Kreuztabelle aufgeführt, sondern eben auch die Berechnungen an sich.
- Je nach Komplexität der eigentlichen Berechnungen ist evtl. eine Bsp-Mappe Deinerseits hilfreich...
Ich werde mich darum heute sicher nicht mehr kümmern können, aber diese Fragen sind vermutlich auch für andere Helfer_innen interessant.
LG
Michael
Anzeige
AW: Schon möglich, aber...
25.11.2016 15:01:32
Andy
Hallo Michael,
danke für die schnelle Antwort.
Bei der ganzen Geschichte geht es um die Erstellung einer Preistabelle, die im "Hintergrund" eine Kalkulation laufen lassen soll. Diese Kalkulation als solches ist vorhanden, aber sehr umfangreich/komplex und von x-verschiedenen Parametern abhängig. Das jetzt zu schildern ist meines Erachtens nicht notwendig.
Mein Wunsch ist es, dass das Makro die Spaltenwerte (Wert A, Wert B, ...) in die Tabelle namens "Kalkulation" in die Zelle "B4" und die Zeilenwerte (Wert 1, Wert 2, ...) in die Zelle "E4" schreibt. Sobald diese Zellen gefüllt sind, wird das Ergebnis (der Preis) innerhalb des Tabellenblattes "Kalkulation" in Zelle "M39" berechnet. Die genannten Zellen sind von der Position her fix. Das Makro braucht im Prinzip also "nur" die Spalten- und Zeilenwerte an den genannten Ort eintragen und das Ergebnis von M39 in die Kreuztabelle schreiben. Und das für alle Variationen.
Die Berechnung der einzelnen Preise erfolgt durch eine "Grundeinstellung" im Tabellenblatt "Kalkulation". D.h. der Nutzer muss im Vorfeld die Berechnungsparameter gesetzt haben. Das passiert ausserhalb des Makros. Die Paramter sind dann für alle möglichen Varianten gleich. Erst wenn diese Einstellungen gemacht wurden, soll das Makro starten und die Preise rechnen.
Schön wäre eine relativ konkreter Code. Leichtere Anpassungen wie Pfade oder Zellenbezüge kann ich selber anpassen, aber wenn es ans "Eingemachte" geht, gehen meine VBA-Kenntnisse zur Neige.
Ich hoffe das hilft erstmal weiter!
Gruß
Andy
Anzeige
"relativ konkreter Code" erfordert,
25.11.2016 16:02:05
Michael
Andy,
eine relativ konkrete Aufgabenstellung.
Ich schließe mich also dem Michael(migre) an und hätte gerne eine Beispieltabelle: aus Deiner Aufgabenstellung geht nämlich nicht hervor, wo die Spalten- und Zeilen- Werte "zur Berechnung" hinsollen und insbesondere, von wo das Ergebnis "abgeholt" werden soll.
Naja, es könnte so aussehen: https://www.herber.de/bbs/user/109719.xlsm
Schöne Grüße,
Michael
AW: "relativ konkreter Code" erfordert,
25.11.2016 16:39:41
Andy
Hallo Michael,
da ich jetzt gleich einen Termin habe kann ich heute nicht mehr detailliert antworten. Aber, ...
ich habe mir dein Makro schonmal kurz angeschaut und im Prinzip macht das genau das, was es soll! MEGA und vorab schon mal vielen Dank!! Wie gesagt komme ich heute nicht mehr dazu, aber ich fühle mich im Stande den Code auf die Echtdateien umzuschreiben. Das versuche ich über das Wochenende mal und werde mich anschließend nochmal melden!!!
Viele Grüße und danke.
Andy
Anzeige
ok, dann schönes WE & Gruß, owT
25.11.2016 17:33:44
Michael
M.
AW: ok, dann schönes WE & Gruß, owT
28.11.2016 08:19:44
Andy
Guten Morgen Michael,
ich muss mich riesig bei dir bedanken! Ich konnte den Code in die Originaltabelle integrieren, sodass dieser genau das macht was er soll. Die Ergebnisse kommen sogar relativ schnell zusammen, vorallem wenn man beachtet welche Berechnung dahiner steht. Super !!! Ich frage mich immer, "wie kommt man auf sowas"? Der Code sieht zwar "realtiv einfach" aus, aber ich wäre da nie drauf gekommen. Hast du dir das selber angeeignet? Ich bin grade in der Lernphase.
Weil es so gut gelaufen ist, möchte ich nun mal übermütig werden und dich mit zwei weiteren Punkten herausfordern. ;-)
Der erste ist für dich vermutlich ein Klax! Irgendwo unter die Kreuztabelle sollen zusätzlich zur Kreuztabelle die ermittelten Ergebnisse in Tabellenform aufgelistet werden. In der Form: Zeilenwerte - Spaltenwerte - Ergebnis . Und das untereinander. In Tabellenform halt. Möglich? Ich denke ja.
Schwieriger könnte der zweite Punkt werden. Besteht irgendwie die Möglichkeit mehrere identische (bis auf die Ergebnisse) Kreuztabellen zu vergleichen und das jeweils niedrigste Ergebnis aller Vergleichstabellen in eine Kreuztabelle zu bringen? Klingt ziemlich kompliziert und ich habe keine Ahnung wie das aussehen könnte. Hast du da eine Idee? Vielleicht ein Vergleich zwischen den Daten in Tabellenform, oder so. Das Ganze muss übrigens nicht in ein Makro, sondern kann auch in zwei oder drei Schritten gemacht werden. Wäre super wenn du da auch helfen könntest. Verwende dazu einfach deine Beispieltabelle.
Viele Grüße.
Andreas
Anzeige
bitte testen
28.11.2016 16:01:29
Michael
Hi Andreas,
was soll ich sagen? Jahrzehnte lange Erfahrung mit Schleifen. Learning by doing...
Anbei die erweiterte Datei: https://www.herber.de/bbs/user/109763.xlsm
Unter dem neuen Button (probiere den bitte mehrmals nacheinander aus) gibst Du das Blatt ein, wo die "Liste" hin soll. Die habe ich etwas erweitert: in Spalte A erscheint der "Titel" der Tabelle (aus dem Schnittpunkt links oben) + Uhrzeit, dann die drei gewünschten Spalten und insbesondere ein "x" in der Zeile mit dem (ersten) niedrigsten Ergebnis.
Du brauchst die Tabelle nur nach Spalte E zu sortieren, dann hast Du alle niedrigsten Werte beisammen, samt Angabe, wo sie herstammen: das wiederum in einer "Kreuztabelle" darzustellen erscheint mir etwas unnütz.
Happy exceling,
Michael
Anzeige
AW: bitte testen
29.11.2016 09:00:34
Andy
Hallo Michael,
ok, wir sind schon wieder einen Schritt weiter gekommen. Ich habe dir mal ein Beispiel angehangen, welches ich nur per Hand erstellt habe. Damit soll deutlich werden was das Ziel ist. Das ist alles in Tabelle 1 zu finden.
https://www.herber.de/bbs/user/109781.xlsm
Die oberste Tabelle (Zeile 1-5) ist deine ermittelte Tabelle. Das passt so und die kann so bleiben. In den Zeilen 10-20 soll im Prinzip die "Zwischenrechnung" stattfinden. A11:B20 sind alle möglichen Varianten nach der obersten Tabelle. Die Ergebnisse der ersten Berechnung sind in C12:C20 zu finden. Nach jeweils anderen Berechnungen (aus der oberen Tabelle) sind die weiteren Ergebnisse in D12:D20 bzw. E12:E20 aufgeführt. Aus diesen drei Ergebnisreihen soll nun der jeweilige MIN-Wert ermittelt werden und dieser in die Zieltabelle geschrieben werden. Dann wäre das Ziel erreicht. Wo nun im Tabellenblatt was steht ist erstmal egal.
Es gibt tatächlich Kunden, die so eine Zieltabelle (Preistabelle) haben möchten.
Viele Grüße.
Andy
Anzeige
also gut...
29.11.2016 17:40:42
Michael
Hi,
dann teste mal das: https://www.herber.de/bbs/user/109807.xlsm
Die Zwischenergebnistabellen unterhalb Deiner Eingabematrix muß man ja nicht ausgeben; ich habe aber zur Veranschaulichung mal mit einer bedingten Formatierung gespielt...
Klicke einfach ein paar Mal auf "rechnen", dann wirst Du sehen, was ich meine.
Viel Spaß,
Michael
P.S.: das Ganze leidet für meinen Geschmack daran, daß man bei der Ergebnistabelle zwar den kleinsten Wert sieht, nicht jedoch, woher er stammt!
Deshalb hatte ich schon zuvor gesagt, daß eine Kreuztabelle (vermutlich) nicht zielführend ist.
Anzeige
AW: also gut...
30.11.2016 10:23:00
Andy
Hallo Michael,
Super! Das Ergebnis, die Zieltabelle, passt schonmal. Auch die Listen-Darstellung in "Liste" ist so ok. Die Zwischentabellen und farbliche "Gestaltung" kann entfallen und muss nicht dargestellt werden.
Für mich geht es jetzt hauptsächlich um das Verständis für den Code, damit ich diesen in die Originaldatei übertragen kann (und zum lernen natürlich). Ich muss quasi wissen, welcher Befehl was bewirkt. Deshalb würde ich dich bitten, den Code zu kommentieren.
Zu deinem "PS": In der Zieltabelle, die der Kunde bekommt, muss die Herkuntft nicht erkenntlich sein. Wir wollen das aber sehen und können das in der Listendarstellung unter "Liste" nachverfolgen. Für diese kann ja unter EINGABE:A1 das Schlagwort der Herkunft eingegen werden und wird in der Liste mit angezeigt. Das ist absolut ausreichend!
Viele Grüße und Danke vorab!!
Andy
Anzeige
AW: also gut...
30.11.2016 14:17:44
Michael
Hi Andy,
schon die Programmierung ging eigentlich über eine "schnelle" Forumshilfe hinaus; eine "gute" Doku braucht noch Minmum zwei Stunden...
insbesondere, wenn es darum geht, Hinweise anzubringen, was wo geändert werden muß, um das Makro an andere Gegebenheiten anzupassen bzw. an bestimmten Stellen noch ein, zwei Codevarianten zum besseren Verständnis einzufügen
... für die ich andere Sachen liegen lassen müßte.
Wärst Du evtl. bereit, für diesen Aufwand einen Obulus zu entrichten?
Abgesehen davon wird die Frage voraussichtlich ab übermorgen nicht mehr in der "Forumsliste" angezeigt; vielleicht magst Du mir ne mail senden, siehe
https://www.herber.de/cgi-bin/profile/call_profile.pl?user=1857094
Hm, laß es mich mal so formulieren: ich will Dir nicht die Pistole auf die Brust setzen, aber ich weiß nicht, ob ich es bis morgen schaffe, egal ob mit oder ohne Obulus.
Schöne Grüße,
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige