146 Aufrufe
Gefragt in Tabellenkalkulation von jelena Mitglied (750 Punkte)

Hallo guten Tag, kann mir jemand ein excel makro schreiben. Datum ab Spalte W3 mit Datum ab Spalten B3, E3,H3, K3, N3 und Q3 vergleichen und Text ab Spalte X3 in der dazugehörigen Zeile D, G, J, M, P, und S eintragen. Musterdatei “kalender 2024“ teilweise ausgefüllt angehängt. Danke

https://supportnet.de/forum/?qa=blob&qa_blobid=5086548412180073092

8 Antworten

0 Punkte
Beantwortet von
Ist zwar ohne vba aber wie wäre es mit der Formel

=SVERWEIS(W2;BEREICH.VERSCHIEBEN($B$3:$D$33;WENN(MONAT(W2)>6;32;0);3*REST(MONAT(W2)-1;6));3;0)&""

oder

=SVERWEIS(W2;WAHL(MONAT(W2);$B$3:$D$33;$E$3:$G$33;$H$3:$J$33;$K$3:$M$33;$N$3:$P$33;$Q$3:$S$33;$B$35:$D$65;$E$35:$G$65;$H$35:$J$65;$K$35:$M$65;$N$35:$P$65;$Q$35:$S$65);3;0)&""
0 Punkte
Beantwortet von jelena Mitglied (750 Punkte)

Hallo myname;"Anonym";myname, es werden zwar die Monate ausgewählt aber keine Daten aus Spalte X in der Spalte D, G, J usw. eingetragen. In welcher Zelle soll die Formel eigetragen werden. Besser wäre ein makro da in manchen Zellen steht zB. Neujahr oder Hl. 3 Könige. Trotzdem vielen Dank.

0 Punkte
Beantwortet von
Ok sorry Problem flasch rum verstanden - die Fromel hätte in X geschrieben^^

dann wohl doch vba

versuch mal das in Tabelle1(Kalender) einzufügen

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 24 Then
    Dim zeile As Long
    Dim my_val As Long
    Dim my_res
    Dim myCells
    zeile = 2
    Application.ScreenUpdating = False
    Do Until Cells(zeile, 23) = ""
        my_val = Cells(zeile, 23).Value
        my_res = Cells(zeile, 24).Value
        For Each myCells In Range(Cells(1, 1), Cells(70, 19))
            If myCells.Value = my_val And myCells.NumberFormat = "dd" Then
                myCells.Select
                ActiveCell.Offset(rowOffset:=0, columnOffset:=2).Activate
                ActiveCell.Value = my_res
            End If
        Next
        zeile = zeile + 1
    Loop
    Cells(1, 1).Select
    Application.ScreenUpdating = True
End If
End Sub
0 Punkte
Beantwortet von jelena Mitglied (750 Punkte)
Bearbeitet von jelena

Hallo myname;"Anonym";myname, dieses vba wäre OK aber der Name “Private Sub Worksheet_Change(ByVal Target As Range)“ ist leider in Tabelle1(Kalender) schon vorhanden, wie kann man das lösen. Ich möchte dieses vba manuell starten. Vielen Dank

0 Punkte
Beantwortet von

In dem Fall einfach in ein Modul geben und die Target Abfrage weg lassen

Sub FreundlicherName


Dim zeile As Long
Dim my_val As Long
Dim my_res
Dim myCells
zeile = 2
...
Application.ScreenUpdating = True
End Sub

0 Punkte
Beantwortet von jelena Mitglied (750 Punkte)
wieder angezeigt von jelena

Hallo guten Morgen, dieses vba wäre OK aber der Name “Private Sub Worksheet_Change(ByVal Target As Range)“ ist leider in Tabelle1(Kalender) schon vorhanden, wie kann man das lösen. Ich möchte dieses vba manuell starten. Vielen Dank

0 Punkte
Beantwortet von

Hallo myname;"Anonym";myname, super vielen Dank.

0 Punkte
Beantwortet von jelena Mitglied (750 Punkte)

Hallo myname;"Anonym";myname, echt super vielen Dank.

...