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

Aggregat - vba

Aggregat - vba
06.04.2022 20:57:05
Fredy
Hallo zusammen
Ich habe beim durchstöbern des Forums den VBA Code für eine Formel mit Aggregat gefunden und wollte dies entsprechend meiner Anwendung Anpassung.
Weiss nun nicht, ob ich dies so richtig gemacht habe.
Die Formel habe ich in der Zelle B8:
=WENNFEHLER(INDEX(EinsatzplanungTabelle;AGGREGAT(15;6;ZEILE(EinsatzplanungTabelle) /((EinsatzplanungTabelle[Mitarbeiter]=Wochenplan!$H$3) *(EinsatzplanungTabelle[Datum]=Wochenplan!$E$7) *(EinsatzplanungTabelle[Uhrzeit von]>=Liste!$I$2) *(EinsatzplanungTabelle[Uhrzeit bis] Den VBA Code habe ich somit wie folgt angepasst:

Sub TestAggregate()
Dim res As Long
Dim k as Long
With ActiveWorkbook.Sheets("Wochenplan")
For k = 1 to 30
res = Evaluate("=AGGREGATE(15,6,ROW(EinsatzplanungTabelle)/((EinsatzplanungTabelle[Mitarbeiter]=Wochenplan!$H$3)*(EinsatzplanungTabelle[Datum]=Wochenplan!$E$7)*(EinsatzplanungTabelle[Uhrzeit von]>=Liste!$I$2)*(EinsatzplanungTabelle[Uhrzeit bis]
Wie merkt das VBA, dass das Resultat in der B8 rein muss?
Danke für eure wertvolle hilfe.
Gruss Felsenhau

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

Betreff
Datum
Anwender
Anzeige
AW: Aggregat - vba
06.04.2022 21:09:42
Daniel
Hi
das "merkt" VBA gar nicht von allein. das musst du ihm sagen:

Range("B8").value = res
bzw, da ich mal davon ausgehe, dass du das in die 29 Zellen unter B8 auch noch schreiben willst:

Range("B7").Offset(k, 0).value = res
was du noch wissen solltest: eine Variable, die innerhalb von Anführungszeichen verwendet wird, wird nicht als Variable erkannt! man muss den Text beenden und die Variable mit & mit dem restlichen Text verketten.
Beispiel:

myName = "Bernd das Brot"
msgbox "+++ myName +++"
ergibt als Ausgabe: "+++ myName +++"
folgendes hingegen:

myName = "Bernd das Brot"
msgbox "+++ " & myName & " +++"
ergibt als Ausgabe: "+++ Bernd das Brot +++"
genauso musst du das mit deiner Variable k in deinem Formeltext auch machen.
sinnvoller ist hier allerdings, die Formel gleich in alle Zellen zu schreiben und zwar gleichzeitg, nicht als Schleife für jede Zelle einzeln, und dann die Formeln durch Werte zu ersetzen.
Gruß Daniel
Anzeige
AW: Aggregat - vba
06.04.2022 21:31:16
Fredy
Hallo
Das verwirrt mich doch nun etwas. Ich denke, dass es das einfachste wäre, wenn ich das Excel hochlade.
https://www.herber.de/bbs/user/152307.xlsm
Hoffe, dass dies so korrekt ist.
Gruss
Fredy
AW: Aggregat - vba
06.04.2022 22:05:01
Yal
Hallo Fredy,
deine Datei zeigt einige Sachen, aber sehr wenig, was mit deiner Frage zu tun hat.
Du kannst ruhig alle Sub zusammen in einem Modul haben und die leeren Modulen löschen (Rechtsklick "Modul entfernen")
Probiere fogendes:

Sub TestAggregate()
With ActiveWorkbook.Sheets("Wochenplan")
.Range("B8").FormulaLocal = "=WENNFEHLER(INDEX(EinsatzplanungTabelle;AGGREGAT(15;6;ZEILE(EinsatzplanungTabelle) /((EinsatzplanungTabelle[Mitarbeiter]=Wochenplan!$H$3) *(EinsatzplanungTabelle[Datum]=Wochenplan!$E$7) *(EinsatzplanungTabelle[Uhrzeit von]>=Liste!$I$2) *(EinsatzplanungTabelle[Uhrzeit bis]
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige