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

Excelformel in VBA umsetzen

Excelformel in VBA umsetzen
21.12.2021 12:13:42
Aigner
Hallo!
Muss das noch mal aufrollen.
Ich hoffe mir kann jemand helfen. Ich möchte 2 Excel Matrixformeln in VBA umsetzen, und Textboxen sollen sich aktualisieren wenn ich im Bereich "Durchschnitt H9:Q21"
eine Zelle anclicke.
Habe eine Beispieldatei erstellt und auch noch nähere Beschreibung reingeschrieben.
https://www.herber.de/bbs/user/149929.xlsm
Danke schon mal !!!

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excelformel in VBA umsetzen
21.12.2021 13:18:18
Yal
Moin Ewald,
ich war bisher unbeteiligt, daher kenne ich die Hintergründe nicht.
Ich schlage auch eine komplette andere Ansatz vor:
_ Über deine Tabelle in "Werteblatt Eingabeliste" einen Überschrift "Nummer", "Name", "Details", "Wert 1" bis "Wert 10"
_ dann wandle ich diese in sog. Intelligente Tabelle um (Zellemarkierung muss auf einer Zelle der Tabelle liegen): Strg+t oder "Einfügen", "Tabelle", hat Überschrift : ja
_ im Menü "Daten", "Aus Tabelle",
dann bist Du in einem komischen neuen Welt, die man Power Query nennt (PQ). Kein Stress, ich hole dich auch daraus ;-)
_ Du markierst die Spalten "Wert 1" bis "Wert 10"
_ in "Transformieren" findest Du die Funktion "entpivotieren" (schon nur wegen dieser Funktion sollte PQ kennen! Die habe ich früher immer wieder in VBA nachgebaut. Bääh!).
Siehe wie diese Transformierungsschritt in der Liste recht sich hinzufügt. Bei selektieren eine andere Schritt kannst Du den entsprechende Vorschau sehen (in PQE ist alles Vorschau).
_ Dann hast Du alle deine Überschriften "Wert 1" bis "Wert 10" in einer Spalte "Attribut". Die Zeilenkopf Nummer, Name, Details sind wiederholt worden.
Schon da könnte man aussteigen und der Rest mit einer Pivottabelle machen (wäre sogar sinnvoller).
Aber weil es so einfach ist, wollen wir mehr:
_ im Menü "transformieren", "Grupppieren nach" anklicken
_ auf "weitere" Klicken
_ auf "Gruppierung hinzufügen" 3 mal klicken
_ die 4 Felder mit Nummer, Name, Details, Attribut befüllen
_ unten, 2 mal "Gruppierung hinzufügen"
_ der erste "neue Spaltenname" mit "Min", der Vorgang "Min" auswählen, Datenspalte "Wert"
_ Dito für Max und Durchschnitt ("Mittelwert")
Sieht schon ordentlich aus, oder?
Man könnte schon jetzt aus "Schliessen & Laden" (im "Datei") klicken. Dann wäre den Weg zurück im Editor über die Liste "Abfragen", rechtsklicken und auf "Bearbeiten" gene, dann wäre wir wieder im PQ-Editor.
Wollen wir mehr? Wir sind noch im PQ-Editor, auf die letzte Schritt
_ wir markieren die Spalte Min, Max, Durchschnitt
_ wir entpivotieren
_ wir markieren die Spalte Attribut und die neue Attribut.1
_ wir klicken in Transformieren" auf "Spalte zusammenführen", wählen der Leerzeichen als Trennzeichen
_ dann wählen wir deise neue Spalte aus,
_ und klicken in "Transformieren" auf "Spalte pivotieren", legen die Spalte "Wert" als Wertespalte
Jetzt haben wir 30 Spalten, für jede Wert 1 bis 10 den Min, Max, Durchschnitt
Ohne VBA, ohne Formeln.
Gehe jetzt auf "Schliesen & laden". Das Ergbenis erscheint in einer separaten Tabelle.
Ändert sich etwas in der Quelle, einfach auf das Ergebnistabelle Rechtsklick und "Aktualisieren" (das kann man übrigens mit VBA automatisieren).
Aber da dein Anliegen ist, VBA zu lernen, bist Du damit wahrscheinlich wenig geholfen. Schöne wäre, wenn Du trotzdem auf dem Spiel einlässt, um besser einzuschätzen, dass Formeln + VBA nicht immer "the easiest way" ist.
VG
Yal
Anzeige
AW: Excelformel in VBA umsetzen
21.12.2021 13:31:28
Aigner
Danke für die Antwort!
Du meinst "Start"und"als Tabelle formatieren", wenn ja. so weit war ich vor einiger Zeit schon, nur Arbeiten einige Personen mit dieser Datei
und dadurch ist sie Blattgeschützt. dann funktioniert das leider nicht mehr.
Ist es nicht möglich das was ich möchte umzusetzten?
Mfg
AW: Excelformel in VBA umsetzen
21.12.2021 14:04:00
Yal
Hallo Ewald,
ach so: kann man eine Tabelle auch so definieren.
Die Lösung mit Power Query führt dazu, dass Du eine Seite mit der Quelldaten, die kannst Du sperren, es stört die Power Query Abfrage nicht, und eine Seite mit den Ergebnisse, diese wird bei Bedarf aktualisiert. Wenn es hier einen temporäre Blattschutzaufhebung braucht, kann es auch per VBA erreicht werden.
Ich halte allgemein nicht viel von Blattschutz wegen "meine Kollege sind zu doof". Da wo es ein Risiko gibt, muss man Verantwortung verteilen. Bei Bedarf schulen.
VG
Yal
Anzeige
AW: Excelformel in VBA umsetzen
21.12.2021 15:13:30
Aigner
Sorry aber dann müsste ich die ganze Datei umbauen. Die Beispieldatei ist ja von der Grösse grad mal 1%.
Meine Originaldatei geht von B9:FA****
D.h. beginnend mit Zeile 9 und es kommen täglich mindestens 3 Zeilen dazu, und es ist ja soweit alles fertig, es hängen auch noch andere Tabellenblätter daran.
Daher möchte / brauche ich auch nicht mehr als diese Anzeige.
Für Andere Sachen gefällt mir das.
Danke.
Also mein Anliegen dürfte nicht umzusetzten sein.
Doch!
21.12.2021 16:45:23
Yal
... aber ich wollte nicht diese Möglichkeit unerwähnt lassen.
Erst recht, wenn die Datei umfangreich ist und täglich wächst, ist PQ predestiniert.
Wie kommen übrigens die Daten dazu? Wenn Du die Daten aus einer Datenbank holst, dann nochmal Argument für PQ: die PQ-interne Dialekt (M-Formelsprache) ist so aufsgelegt, dass so viel Verarbeitung wie möglich an dem Datenlieferant übergeben wird. Es führt zu einer schlankeren Exceldatei und ein schnellere Verarbeitung.
Also nochmal zu dein Ursprungsbedarf: für jede 3-stelligen Code, möchtest Du pro Wertespalte Min, Max. Durchschnitt sehen, richtig?
Ich merke gerade, dass mein Beipiel viel zu komplex war, da alles auf die 3 ersten Buchstaben gruppiert wird. Ich bleibe aber dabei, dass alles ausser PQ unnötig kompliziert ist. Hier die neue Version, gruppiert auf die 3 ersten Buchstaben:
https://www.herber.de/bbs/user/149937.xlsm
VG
Yal
Anzeige
AW: Doch!
21.12.2021 17:29:16
Aigner
Danke noch mal!
Gefällt mir recht gut.
Leider muss ich hier gleich nachhacken da ich damit nicht versiert bin
1.) Benötige ich die rechten 3 Ziffern
2.) 2 Spalten nach links verschoben
wo wird das eingestellt?
Mfg
AW: Doch!
21.12.2021 18:30:56
Yal
Hallo Ewald,
wo die Tabelle steht, ist egal. Hauptsache sie heisst "Tabelle1": prüfe in Menü "Tabellentools", das nur erscheint, wenn Du gerade auf einem Tabellenzelle bist. Solltest Du einen anderen Namen bevorzügen, in Power Query Editor auf dem Schritt Quelle erscheint im Formelfenster:
(Um an dem PQ Editor zu gelanden, gehst Du auf "Daten", "Abfragen", dann kommt die Liste rechts.)

= Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content]
Da kannst Du "Tabelle1" in etwas anderes umbenennen.
Es könnte sein, dass Du viel mehr Spalten hast, als im Beispiel, dann sollte es nur für den zweiten Schritt "Geänderte Typen" ein Problem sein. Einfach eine neue Abfrage auf die Quelltabelle starten, dann wird einen neuen Typen-Bewertung hersgestellt. Den nehmen und in die bisherige Abfrage übernehmen, oder einfach versuchen, die Abfrage komplett neuzubauen (ist echt kein Hexenwerk, nur ungewonnt).
Die Entpivotierung ist auf den festen Spalten aufgebaut (die, die nicht entpivotiert werden). Man hätte auch umgekehrt aufbauen können.
Letzten 3 Buchstaben anstatt 3 ersten: im 4ten Schritt "Eingefügte erste Zeichen"

= Table.AddColumn(#"Entpivotierte Spalten", "Erste Zeichen", each Text.Start(Text.From([Nummer], "de-DE") , 3), type text) 
ändern in

= Table.AddColumn(#"Entpivotierte Spalten", "Erste Zeichen", each Text.End(Text.From([Nummer], "de-DE") , 3), type text) 
(Jetzt sieht es etwas näher zu deinem Beispiel)
Achtung case sensitive. Spaltename "Erste Zeichen" könnte man umbenennen, aber es könnte auf die Folgeschritt wirken, also nur falls man die Abfrage komplett neubaut. Man kann immer noch ganz am Ende umbenennen.
Das Rumbasteln direkt in der Formel macht man normalerweise erst, wenn man die erste Schritten hinter sich hat ;-)
Man kann die Aktionen über das Rädchen im Schrittliste bearbeiten, aber nur deren Parameter, nicht die Aktion selbst. Daher nicht vom erste Zeichen auf letzte Zeichen wechseln.
Für mehr Details gibt es Google: "power query text ende".
Die Stärke von PQ zu entdecken, ist eine echte Befreiung. Datenmanipulation in wenigen Klicks. Nach und nach denkt man das Thema "Datendesign" in Excel ganz anders: eine klare Erkennung was gut ist, und was nicht.
Wenn Du noch mehr über die Fähigkeit von PQ sehen möchte, hier meine Lieblingstutorial:
Excel Hero Power Query Playlist
https://www.youtube.com/playlist?list=PLy5TtUB84yrN2VVRzp8Tif8bxQKJD_2bo
(eine gut investierte Stunde! Man kann auch den Durchlauf in 1,5 Geschwindigkeit. Der Daniel nimmt sich viel Zeit)
und die Erklärungsseite dazu
https://excelhero.de/power-query/power-query-ganz-einfach-erklaert/
VG
Yal
Anzeige
AW: Doch!
21.12.2021 18:50:27
Aigner
Is cool! Gefällt mir!
Mal sehen ob ich damit zurecht komme.
Vielen dank glaube werd es in diese Richtung ändern.
Eine weitere Möglichkeit...
22.12.2021 09:59:10
Case
Hallo, :-)
mittel- bzw. langfristig würde ich auch auf PQ umsteigen. Ist einfach bequemer für eine Datenauswertung aller Art. Kurzfristig könntest du zwei Zeilen in deinem Code hinzufügen: ;-)
Deine Datei zurück...
Du kannst mit Evaluate Formeln auswerten. Es lassen sich alle Teile der Formel in Bezug zur gerade aktiven Zelle setzen.
Servus
Case

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige