Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1196to1200
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

Datum mit VBA konvertieren

Datum mit VBA konvertieren
Udo
... und mit dem Ergebis in anderer Tabelle suchen.
Hallo Zusammen!
Folgendes Problem beschäftigt mich nun schon seit einiger Zeit und ich bekomme nicht den richtigen Code zusammen.
Ich habe in der Tabelle 1 ein DropDown Feld, das auf ca. 20 Datumswerte (MM.JJJJ) verweist.
Nun möchte ich, das wenn ein Datumswert gewählt wurde:
- automatisch (sprich bei "Change") ein VBA-Script startet
- das Script das Datum in Monat und Jahr auseinandernimmt und mit diesen Werten einen Bereich in einer anderen Tabelle durchsucht.
Problem dabei: Das Jahr ist per Zellverkettung über mehrere Zellen gezogen
Wenn das Jahr gefunden ist, dann liegen in der Zeile drunter die jeweilen Monate
Wenn Monat gefunden, dann möchte ich in der Zelle darunter einen Wert übertragen.
Ich hoffe, das das nachvollziehbar ist.
Ich habe gesucht und probiert, aber nix vernünfitges zusammenbekommen.
Vielen Dank für jede Hilfe
Udo
AW: Datum mit VBA konvertieren
09.02.2011 18:15:23
Oberschlumpf
Hi Udo
Ne Bsp-Datei (die vom Aufbau genau wie deine echte aussieht) + Bsp-Daten + noch mal Erklärung in Datei wäre schön
Ciao
Thorsten
AW: Datum mit VBA konvertieren
09.02.2011 20:11:05
Oberschlumpf
Hi
Ich wusste schon, wieso ich um noch mal Erklärung in der Datei bat.
In Tabelle 1 hast du drei DropDown-Felder - in deiner Startfrage ist aber nur von einem DropDown-Feld die Rede.
Und was soll denn genau passieren, wenn Monat + Jahr aus DropDown in Tabelle2 gefunden?
Ciao
Thorsten
ps
bitte immer darauf achten, dass wirklich alles erklärt wird.
denn nur du kennst deine Gedanken, wenn du sie nicht aussprichst/aufschreibst
und ein Neuling (der deine Datei zum 1. Mal sieht) hat dann gar keinen Plan, was du erreichen möchtest
Anzeige
AW: Datum mit VBA konvertieren
09.02.2011 20:16:50
Udo
Hi Oberschlumpf,
nun, das hatte ich schon in den VBA-Bereich geschrieben.
Das da nun 3 DD sind soll nicht ausschlaggebend sein. In der Zieldatei sind da nachher ca. 100.
Daher auch die Frage, ob man das in eine Schleife packen kann.
Ich möchte also aus der DD das Datum lesen, nach Monat und Jahr aufteilen.
Auf dem zweiten Blatt (Output) das Jahr und darunter den Monat suchen. Unterhalb des Monats möchte ich den Wert, der links vom DD steht.
Sorry, wenn ich das ein wenig kompliziert erklärt habe und Danke für die Zeit und Mühe!
Udo
AW: Datum mit VBA konvertieren
09.02.2011 20:17:00
Udo
Hi Oberschlumpf,
nun, das hatte ich schon in den VBA-Bereich geschrieben.
Das da nun 3 DD sind soll nicht ausschlaggebend sein. In der Zieldatei sind da nachher ca. 100.
Daher auch die Frage, ob man das in eine Schleife packen kann.
Ich möchte also aus der DD das Datum lesen, nach Monat und Jahr aufteilen.
Auf dem zweiten Blatt (Output) das Jahr und darunter den Monat suchen. Unterhalb des Monats möchte ich den Wert, der links vom DD steht.
Sorry, wenn ich das ein wenig kompliziert erklärt habe und Danke für die Zeit und Mühe!
Udo
Anzeige
nach Jahr und Monat suchen
09.02.2011 20:56:35
Erich
Hi Udo (JW lässt grüßen ;-),
vielleicht meinst du das so - und das geht dann ohne Schleife:

Option Explicit            ' immer zu empfehlen
Private Sub Worksheet_Change(ByVal Target As Range)
Dim pJ, pM
If Intersect(Target, Range("E6:E8")) Is Nothing Then Exit Sub
With Sheets("Output")
pJ = Application.Match(Year(Target), .Cells(4, 3).Resize(, 32), 0)
If IsNumeric(pJ) Then
pM = Application.Match(Month(Target), .Cells(5, pJ + 2).Resize(, 12), 0)
If IsNumeric(pM) Then
If Not Intersect(.Cells(4, pM + pJ + 1), _
.Cells(4, pJ + 2).MergeArea) Is Nothing Then _
.Cells(6, pM + pJ + 1) = Target.Offset(, -1)
End If
End If
End With
End Sub
Den Bereich, in dem das wirkt (E6:E8), musst du anpassen.
Über der Prozedur steht bei dir: Public Active_Cell Was soll das denn bedeuten?
Lieber hätte ich da Option Explicit gelesen...
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: nach Jahr und Monat suchen
10.02.2011 08:28:23
Udo
Hallo Erich,
das funktioniert 1a.
Und wieder etwas zum lernen ;-)
Aber ganz steige ich durch den Code nicht durch. Kannst du mir da noch kurz ein paar Infos zu geben?
' das erste Mal, das Intersect bei mir eine Anwendung findet ... aber soweit klar.
If Intersect(Target, Range("E6:E8")) Is Nothing Then Exit Sub
' Das man so mit Sheets arbeiten kann, wusste ich nicht
With Sheets("Output")
' Kannst du mir den nachfolgenden Befehl etwas auseinander nehmen?
pJ = Application.Match(Year(Target), .Cells(4, 3).Resize(, 32), 0)
' und wie funktioniert hier die Suche nach dem Monat (was macht das Resize)
pM = Application.Match(Month(Target), .Cells(5, pJ + 2).Resize(, 12), 0)
' OK - hier wird es spannend. Kannst du das kurz erklären?
If IsNumeric(pM) Then
If Not Intersect(.Cells(4, pM + pJ + 1), _
.Cells(4, pJ + 2).MergeArea) Is Nothing Then _
.Cells(6, pM + pJ + 1) = Target.Offset(, -1)
End If
Danke Erich
Auch JW lässt grüßen
Anzeige
AW: nach Jahr und Monat suchen
10.02.2011 08:36:44
Udo
Hallo Erich,
ich spiele gerade mit dem Code bzw. den Variablen ...
In pJ bekomme ich je nach Jahr 1 bzw. 6 zurück. Das ist wohl der Wert, der nachher für die Bereichsberechnung herangezogen wird, korrekt?
Ich werde neugierig - das scheinen sich völlig neue Möglichkeiten zu eröffnen.
Bin sehr auf deine Erklärungen gespannt.
Udo
ein paar Erklärungen
10.02.2011 10:04:42
Erich
Hi Udo,
vermutlich bist du ja inzwischen beim gedanklichen Verarbeiten des Codes schon weiter gekommen.
Hier ein paar Erklärungen - aber auch Verweise auf die VBA-Hilfe ;-)
Application.Match(Year(Target), .Cells(4, 3).Resize(, 32), 0)
Mit Application.Match kann man die Excel-Tabellenfunktion VERGLEICH aufrufen.
(oft auch mit WorksheetFunction - siehe VBA-Hilfe)
Das entspricght der Formel (in einer Zelle des Blattes Input) - hier mal für E6:
=VERGLEICH(JAHR(E6);Output!C4:AH4;0)
JAHR(E6) bzw. Year(Target) ist die Zahl 2011 oder 2012, nach der gesucht wird,
Output!C4:AH4 bzw. .Cells(4, 3).Resize(, 32) ist der zu durchsuchende Bereich.
(AH bzw. 32 ist gegriffen, muss nur groß genug sein - ich weiß nicht, wie viele Spalten deine Tabelle hat.)
Zu Resize schau dir bitte die VBA-Hilfe an. Cells(4, 3).Resize(, 32) ist C4:AH4 - nur so als Beispiel.
Application.Match(Month(Target), .Cells(5, pJ + 2).Resize(, 12)
sucht in Zeile 5 ab Spalte P1+2 nach dem Monat, der Suchbereich hat hier 12 Spalten.
Wenn pM nicht nummerisch ist, ist es ein Fehlerwert - dann wurde das Gesuchte nicht gefunden.
Zu "If IsNumeric(pM) Then" muss ich wohl weiter nichts schreiben.
Zu "MergeArea" schau bitte aucgh erst mal in die VBA-Hilfe. Das sind deine verbundenen Zellen in Output-Zeile 4.
"In pJ bekomme ich je nach Jahr 1 bzw. 6 zurück. Das ist wohl der Wert, der nachher
für die Bereichsberechnung herangezogen wird, korrekt?"
JA!
"ich spiele gerade mit dem Code bzw. den Variablen ..."
Mein Tipp: Weitermachen!
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: ein paar Erklärungen
10.02.2011 11:34:34
Udo
Hallo Erich,
super und erst einmal vielen Dank.
Du drehst gerade am Dimmer meiner kleinen Lampe ;-)
In die VBA-Hilfe bin ich auch eingestiegen, nur finde ich die Erklärungen oft recht umständlich.
Verwundert hat mich in der Tat der Resize-Wert. Da hatte ich so schnell nix gefunden. Nach deinem guten Vergleich mit "Vergleich" habe ich auch das verstanden. Nur der optionale "Vergleichstyp" (hier bei dir "0") - den verstehe ich noch nicht. Da muss ich wohl noch etwas suchen ...
Ok, das Application.Match(Year(Target)) gibt mir die erste Zelle des Bereichs zurück, indem der Treffer war - auch verstanden. Daher mal 1 und mal 6 ... entsprechend beim Monat ...
Hier wird also nicht mit dem Monat oder Jahr jongliert, sondern einfach von Pos. 1 aufaddiert. Cool!
Letzte Frage zu dieser Geschichte (damit der Post nicht zu lang wird ;-))
Kannst du mir die Zeile
If Not Intersect(.Cells(4, pM + pJ + 1), .Cells(4, pJ + 2).MergeArea) Is Nothing Then .Cells(6, pM + pJ + 1) = Target.Offset
bis zum "then" noch erklären?
Wenn ich z.B. das Datum 03.2012 auswähle, dann erhalten die Variablen pJ=6 und pM=3 - soweit OK.
Aber wenn ich das übernehme, dann sieht die Formel so aus :
If Not Intersect(.Cells(4, 10), .Cells(4, 8).MergeArea) Is Nothing Then .Cells(6, 10) = Target.Offset
Die beiden Zellen befinden sich im gleichen Bereich ...
Hast du das gemacht, da der Intersect-Befehl 2 Ranges braucht?
Das nachfolgende Script habe ich durch diese ersten Erkenntnisse gleich komplett verstanden ;-) (Hab' ja was dazugelernt!)
Auch hier hätte man den Vergleichstyp beim Match "0" weglassen können, oder?
Gruß
Udo ;-)
Anzeige
unxd eine neue Codevariante
10.02.2011 10:08:58
Erich
Hi Udo,
damit du noch ein wenig mehr ins Grübeln kommst :-)) noch eine Variante:

Option Explicit            ' immer zu empfehlen
Private Sub Worksheet_Change(ByVal Target As Range)
Dim pJ, pM, lngC As Long
If Intersect(Target, Range("E6:E8")) Is Nothing Then Exit Sub
With Sheets("Output")
pJ = Application.Match(Year(Target), .Cells(4, 3).Resize(, 200), 0)
If Not IsNumeric(pJ) Then Exit Sub
lngC = .Cells(4, pJ + 2).MergeArea.Columns.Count
pM = Application.Match(Month(Target), .Cells(5, pJ + 2).Resize(, lngC), 0)
If IsNumeric(pM) Then .Cells(6, pM + pJ + 1) = Target.Offset(, -1)
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: unxd eine neue Codevariante
10.02.2011 12:38:12
Udo
Hallo Erich,
schau doch mal 2 Posts weiter oben - da hatte ich auf deine erste Version noch geantwortet ...
Danke
Udo
AW: unxd eine neue Codevariante
10.02.2011 14:04:10
Udo
.... eingebaut und funktioniert, aaaaaber ....
Kannst du mir mit einem folgeproblem helfen, oder soll ich für das Nachfolgende einen neuen Post aufmachen?
Durch die obere Funktion lasse ich einen Counter hochzählen. Wenn nun aber auf ein anderes Datum gewechselt wird, dann setze ich zwar auch dort den Counter hoch, aber der vorherige wird nicht wieder um 1 reduziert.
Da das Script erst NACH einer Änderung greift, kenne ich auch nicht das alte Datum um das noch zu machen.
Gibt es für dieses Problem eine Lösung?
Danke
Udo
Anzeige
Counter?
10.02.2011 17:53:26
Erich
Hi Udo,
das Folgeproblem habe ich jetzt überhaupt nicht kapiert.
Mit "die obere Funktion" meinst du doch die Prozedur Worksheet_Change, oder?
"lasse ich einen Counter hochzählen": Wo passiert da wie was?
"aber der vorherige wird nicht wieder um 1 reduziert": Sollte er das denn? Ich kenne die Aufgabe nicht.
Und was ist "der vorherige"? Stell dir vor, der User ändert Input!E7. Dadurch wird ein Wert in Output-Zeile 6 eingetragen.
(Das ist mein Stand der Dinge...)
Dann schreibt der User etwas in irgend eine andere Zelle in der Mappe, speichert die Mappe
und hat Feierabend.
Am nächsten Morgen ändert der User Input!E6. Was ist jetzt der "vorherige"?
Nehmen wir mal an, der "vorige" wäre irgendwie bestimmt, der Counter stünde auf 17.
Wenn danach an 5 anderen Stellen geändert wird, wird er dann auf 12 vermindert, oder nur einmalig auf 16?
Wie gesagt: Das verstehe ich (noch) nicht. Das meine ich nicht technisch, sondern logisch, als Aufgabe.
Nun zu früheren Fragen:
"Nur der optionale "Vergleichstyp" (hier bei dir "0") - den verstehe ich noch nicht. Da muss ich wohl noch etwas suchen..."
"Auch hier hätte man den Vergleichstyp beim Match "0" weglassen können, oder?"
Nicht alles, was optional ist oder was man nicht versteht, kann/darf man weglassen.
Wenn man den 3. Parameter weglässt, wird als Defaultparameter die 1 verwendet (steht in der Hilfe).
Da kann dann schon mal ein anderes Ergebnis rauskommen als jetzt mir der 0.
Bei 0 wird der exakte Wert gesucht, bei 1 oder -1 eine möglichst gute Näherung von unten oder oben.
Du willst ja wohl das Jahr bzw. den Monat nicht nur annähern, sondern exakt finden.
Zur VBA-Zeile für das Datum 03.2012, daraus pJ=6 und pM=3:
If Not Intersect(.Cells(4, pM + pJ + 1), .Cells(4, pJ + 2).MergeArea) Is Nothing Then
If Not Intersect(.Cells(4, 10), .Cells(4, 8).MergeArea) Is Nothing Then
Hier ist 10 die Nummer der ermittelten Spalte, also die Spalte J.
Cells(4, 10) ist die Zelle J4 (also in der Zeile mit den Jahren).
Cells(4, pJ + 2) = Cells(4, 8) ist die Zelle H4, in der das Jahr gefunden wurde,
Cells(4, 8).MergeArea ist der Bereich der mit H4 verbundenen Zellen - das sind 12 Stück: H4:S4
Nun wird geprüft, ob der Durchschnitt der Bereiche J4 und H4:S4 etwas oder nichts ist.
Ist er nichts, liegt J4 nicht in der MergeArea, dann soll nichts getan werden.
Ist er etwas, liegt die Zelle drin, dann erfolgt der Einterag in Spalte J.
In der neueren Code-Version ist diese Prüfung nicht mehr drin, weil der Monat von vornherein
nur in den Zellen unterhalb der Jahres-MergeArea gesucht wird.
Alles klar? ;-)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Counter?
14.02.2011 08:01:11
Udo
Hallo Erich,
sorry für die späte Rückmeldung.
Und Danke für die Erklärung der "0". Hast natürlich völlig recht - nicht jeder optionale Parameter
ist wirklich zu vernachlässigen.
Die "0" ist in diesem Kontext erforderlich.
Auch die "If not Intersect ..." istz nun klar - Danke.
Zu meiner letzten Frage mit dem Counter : Sorry, da gingne die Gedanken "lokal" natürlich schon weiter als ich dann in dem Post erklärt habe.
Kurzer Hintergrund:
- wenn über die DD ein Datum ausgewählt wurde, dann wird in der Zielzelle der Wert um "1" erhöht.
- wenn nun das Datum in genau dem eben gewählten DD-Feld verändert wird, dann müssen 2 tasks passieren.
- die Zielzelle, die vorher um 1 erhöht wurde muss nun wieder um 1 verringert werden und die neue Zielzelle um 1 erhöht werden.
Das Problem liegt also in der Korrektur der "alten Zelle". Hier werde ich wohl so ein Konstrukt bauen müssen, das ich mir alle Werte der DDs in einem Array oder so merke und dann mit einer Art "Nachverfolgung" die alte Zielzelle ermittel.
Hmmm - kann man das verstehen?
Gruß
Udo
AW: Counter?
14.02.2011 19:37:32
Udo
Hallo Erich,
können wir das Problem noch mal angehen?
Ich komme da nicht weiter ...
Hier eine Beispieldatei : https://www.herber.de/bbs/user/73540.xls
Spalten C, E und F bitte ignorieren - spielen keine Rolle
Wenn ich einen Wert in den gelben Feldern in D auswähle, dann wird
in der Tabelle "Out" der Wert in der entsprechenden Zelle um 1 erhöht.
Soweit passt das fast.
Meine Probleme: (leider gleich mehrere)
- leider werden mir die Jahre 2013 und 2014 nicht mehr mit einzelnen Monaten sondern mit der Anzahl
der Monate (mal 12 mal 6) vorgegeben ...
- wenn nun der Wert in einer DD geändert wird, dann muss ich den vorherigen Wert wieder um 1
reduzieren (mein Versuch, hier mit arrays zu arbeiten, scheiterte leider ...)
In der Tabelle zum Beispiel 07.2011 ...
Danke
Udo
Frage unklar
14.02.2011 19:38:49
Erich
Hi Udo,
sorry, die Aufggabenstellung verstehe ich so nicht. Ich wiederhole einfach meine Fragen:
Und was ist "der vorherige"? Stell dir vor, der User ändert Input!E7. Dadurch wird ein Wert in Output-Zeile 6 eingetragen.
Dann schreibt der User etwas in irgend eine andere Zelle in der Mappe, speichert die Mappe
und hat Feierabend.
Am nächsten Morgen ändert der User Input!E6. Was ist jetzt der "vorherige"?
Nehmen wir mal an, der "vorige" wäre irgendwie bestimmt, der Counter stünde auf 17.
Wenn danach an 5 anderen Stellen geändert wird, wird er dann auf 12 vermindert, oder nur einmalig auf 16?
Wie gesagt: Das verstehe ich (noch) nicht. Das meine ich nicht technisch, sondern logisch, als Aufgabe.
Vermutlich ist es nützlich, wenn du eine Beispielmappe hochlädst,
in der auch der Zusammenhang zur obigen Ereignisprozedur sichtbar wird.
(ZIPen ist nicht nötig, so groß ist die Mappe ja nicht.)
Noch eine Bemerkung:
Mit DD meinst du vermutlich DropDown. Da gibt es ein DD-Feld und eine Zielzelle.
Das alles sagt mir recht wenig. Die Ereignisprozedur reagiert auf Änderungen in den Zellen.
Ob eine DropDown-Liste (bzw. eine Gültigkeitsprüfung) beteiligt ist, spielt dabei gar keine Rolle.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Counter?
14.02.2011 19:40:41
Udo
der Eintrag vom 07.2011 fehlt leider ...
Also einmal mit 07.2011, dann z.b. mit dem gleichen DD den 09.2011 auswählen.
Bei 07.2011 muss dann nix oder eine 0 stehen ...
Danke
Udo
Rätsel oder Zählen?
14.02.2011 20:35:28
Erich
Hi Udo,
"der Eintrag vom 07.2011 fehlt leider ..." Wo fehlte der und warum?
Den Rest verstehe ich jetzt so einigermaßen.
Geht es jetzt eigentlich nur darum, dass in Out!D5:X5 steht, wie oft Monat/Jahr bzw. Jahr
in Check!$D$3:$D$7 vorkommt?
Das ginge leichter als mit VBA-Rauf-und-runterzählen, einfach mit einer Art ZÄHLENWENN
(hier wegen der 2 Bedingungen mit SUMMENPRODUKT).
Spielt eigentlich eine Rolle, ob in W3:X4 eine 6, eine 12 oder irgend etwas anderes steht?
Die Formeln von D5 kannst du auf E5:J5 kopieren, die von K5 auf L5:V5 und die von W5 auf X5:
Out

 BCDEFGHIJKLMNOPQRSTUVWX
3Jahr 2011201220132014
4Monat 6789101112123456789101112126
5Anzahl 001000100000000000101

Formeln der Tabelle
ZelleFormel
D5=SUMMENPRODUKT(($D$3=JAHR(Check!$D$3:$D$7))*(D4=MONAT(Check!$D$3:$D$7)))
E5=SUMMENPRODUKT(($D$3=JAHR(Check!$D$3:$D$7))*(E4=MONAT(Check!$D$3:$D$7)))
F5=SUMMENPRODUKT(($D$3=JAHR(Check!$D$3:$D$7))*(F4=MONAT(Check!$D$3:$D$7)))
G5=SUMMENPRODUKT(($D$3=JAHR(Check!$D$3:$D$7))*(G4=MONAT(Check!$D$3:$D$7)))
H5=SUMMENPRODUKT(($D$3=JAHR(Check!$D$3:$D$7))*(H4=MONAT(Check!$D$3:$D$7)))
I5=SUMMENPRODUKT(($D$3=JAHR(Check!$D$3:$D$7))*(I4=MONAT(Check!$D$3:$D$7)))
J5=SUMMENPRODUKT(($D$3=JAHR(Check!$D$3:$D$7))*(J4=MONAT(Check!$D$3:$D$7)))
K5=SUMMENPRODUKT(($K$3=JAHR(Check!$D$3:$D$7))*(K4=MONAT(Check!$D$3:$D$7)))
L5=SUMMENPRODUKT(($K$3=JAHR(Check!$D$3:$D$7))*(L4=MONAT(Check!$D$3:$D$7)))
M5=SUMMENPRODUKT(($K$3=JAHR(Check!$D$3:$D$7))*(M4=MONAT(Check!$D$3:$D$7)))
N5=SUMMENPRODUKT(($K$3=JAHR(Check!$D$3:$D$7))*(N4=MONAT(Check!$D$3:$D$7)))
O5=SUMMENPRODUKT(($K$3=JAHR(Check!$D$3:$D$7))*(O4=MONAT(Check!$D$3:$D$7)))
P5=SUMMENPRODUKT(($K$3=JAHR(Check!$D$3:$D$7))*(P4=MONAT(Check!$D$3:$D$7)))
Q5=SUMMENPRODUKT(($K$3=JAHR(Check!$D$3:$D$7))*(Q4=MONAT(Check!$D$3:$D$7)))
R5=SUMMENPRODUKT(($K$3=JAHR(Check!$D$3:$D$7))*(R4=MONAT(Check!$D$3:$D$7)))
S5=SUMMENPRODUKT(($K$3=JAHR(Check!$D$3:$D$7))*(S4=MONAT(Check!$D$3:$D$7)))
T5=SUMMENPRODUKT(($K$3=JAHR(Check!$D$3:$D$7))*(T4=MONAT(Check!$D$3:$D$7)))
U5=SUMMENPRODUKT(($K$3=JAHR(Check!$D$3:$D$7))*(U4=MONAT(Check!$D$3:$D$7)))
V5=SUMMENPRODUKT(($K$3=JAHR(Check!$D$3:$D$7))*(V4=MONAT(Check!$D$3:$D$7)))
W5=SUMMENPRODUKT(1*(W$3=JAHR(Check!$D$3:$D$7)))
X5=SUMMENPRODUKT(1*(X$3=JAHR(Check!$D$3:$D$7)))

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Rätsel oder Zählen?
15.02.2011 08:17:16
Udo
Hallo Erich,
vielen Dank für deine Mühe.
Für den 07.11. sollte imTemplate schon eine Zahl hinterlegt sein - dachte ich - ... die fehlte aber.
Spielt aber auch keine Rolle.
"Geht es jetzt eigentlich nur darum, dass in Out!D5:X5 steht, wie oft Monat/Jahr bzw. Jahr
in Check!$D$3:$D$7 vorkommt?"
Ja, denn Anhand dieser Zahl soll/muss weitergerechnet werden. Die DropDowns (DD) geben die Möglichkeit, eine Ware zum Zeitpunkt x (Monat/Jahr) zu kaufen. Dieser Zeitpunkt und die Anzahl der Waren (die Abhängigkeit zu den einzelnen Warengruoppen kommt später noch rein) sind für die weitere Berechnung relevant.
Mit dem Summenprodukt hast du in die 12 getroffen - passt!
Leider denkt man (ich) oftmals viel zu kompliziert. Ich dachte, das wäre nur mit VBA zu machen - bin einmal auf diesen Zug aufgesprungen und habe nicht mehr über Alternativen nachgedacht (shit ... :-)
"Spielt eigentlich eine Rolle, ob in W3:X4 eine 6, eine 12 oder irgend etwas anderes steht?"
Ja, denn auch hier wird mit der Anzahl der Monate gerechnet. Das Jahr 2013 wird dann komplett (12) und 2014 nur zum Teil (6 Monate) berechnet.
Supi - Klasse - Danke - Frage mehr als hinreichend geklärt!
Udo

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige