Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wenn Wert dann KW eintragen

Wenn Wert dann KW eintragen
04.05.2018 00:08:04
Marc
Guten Abend alle,
ich habe da mal eine Frage und zwar lese ich werte per makro in ein excel blatt das mehrere reiter hat. in der spalte A steht immer das datum mit uhrzeit. in der spalte B habe ich folgendes eingetragen "=kalenderwoche(A1)" und diesen befehl über mehrere zeilen nach unten gezogen.
Jetzt möchte ich den befehl aber nicht jeden tag aufs neue per hand runterziehen. kann man irgendwie automatisieren das wenn jetzt in Spalte A was drin steht automatisch die Kalenderwoche in Spalte B eingetragen wird? Vielleicht über bedingte formatierung oder gibt es eine formel die werte in eine zelle schreibt wenn in einer anderen ein wert eingetragen ist? Oder kann man das nur über VBA lösen?
Jetzt kommt sicher die Frage wieso ich den Befehl nicht einfach total weit runter ziehe. Das kann ich machen, aber ich habe ein Makro das Werte vergleicht und Zeilen löscht wenn bestimmte bedingungen erfüllt sind. somit werden auch irgendwann die Befehle in Spalte B gelöscht wenn das makro läuft.
Kann mir jemand bitte bei meinem problem weiter helfen?
Gruß Marc

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

Betreff
Datum
Anwender
Anzeige
AW: Wenn Wert dann KW eintragen
04.05.2018 06:33:41
Rainer
Hallo Marc,
zeig mal das Makro welches die Werte einliest.
Es ist eigentlich sehr einfach. Du prüfst den Bereich in Spalte A mit Werten. In dein Makro schreibst du dann:
Range("B20").AutoFill Destination:=Range("B20:B25"), Type:=xlFillDefault
Wobei B20 die Musterzelle ist mit der Formel zum "Runterziehen".
Gruß,
Rainer
AW: Wenn Wert dann KW eintragen
04.05.2018 19:50:57
MArc
Danke für deine Hilfe Rainer.
Geht das auch ohne die Formel zur kopieren? Also eine Funktion die wie die Formel ist nur mit dem unterschied das anstatt die Formel in die Zelle zu kopieren gleich den KW Wert rein zu schreiben?
Gruß MArc
Anzeige
AW: Wenn Wert dann KW eintragen
04.05.2018 20:12:02
Werner
Hallo Marc,
meinst du so?
Das ist ein Event-Makro und gehört ins Codemodul des Tabellenblattes auf dem sich der Code auswirken soll.
-Rechtsklick auf den Blattreiter - Code anzeigen - Code rechts ins Codefenster kopieren
Sobald in Spalte A etwas in eine Zelle eingegeben wird (Datum) wird in der gleichen Zeile in Spalte B die Kalenderwoche eingetragen.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
If Not Target Is Nothing Then
If Target.Count = 1 Then
If Target.Value  "" Then
If IsDate(Target) Then
Target.Offset(, 1) = DatePart("ww", Target, vbMonday, vbFirstFourDays)
End If
Else
Target.Offset(, 1) = ""
End If
Else
MsgBox "Keine Mehrfachauswahl zulässig."
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End If
End If
End Sub
Gruß Werner
Anzeige
AW: Wenn Wert dann KW eintragen
05.05.2018 00:45:45
MArc
Abend Werner, das makro funzt aber wieso kann ich immer nur einen wert nach der reihe eingeben? wenn ich jetzt mehrere daten kopiere kommt die meldung keine mehrfachauswahl zulässig
AW: Wenn Wert dann KW eintragen
05.05.2018 09:11:50
Rainer
Hallo Marc,
Werner's Makro funktioniert in dieser Form nur mit einzelnen Zellen, das ist Absicht.
Zeig doch mal deine Mappe mit Code, dann machen wir eine Schleife mit
WorksheetFunction.WeekNum(Datum, 21)
Gruß, Rainer
AW: Wenn Wert dann KW eintragen
05.05.2018 14:31:10
Marc
Hallo Rainer,
die Mappe kann ich leider nicht rausgeben, ich kann nur den Inhalt bzw die Struktur der Zeilen nachbauen und zur Verfügung stellen. In Spalte B steht das Datum und in Spalte C sollte die KW da stehen. Kann ich die Schleife sofern du eine machen solltest nicht einfach mit einem Button abfragen oder am ende meines Code kopieren vor dem End Sub?
BeispielDatei
https://www.herber.de/bbs/user/121456.xlsm
Anzeige
AW: Wenn Wert dann KW eintragen
05.05.2018 14:53:17
Werner
Hallo Marc,
offensichtlich kopierst du ja deine Daten mit einem Makro in die Tabelle, das habe ich völlig übersehen. Du hast jetzt eine Datei hochgeladen, aber ohne dein Makro - das macht nicht wirklich viel Sinn.
Zudem weicht dein Tabellenaufbau von deiner Eingangsbeschreibung ab. Laut Beschreibung Datumswerte in Spalte A in der Beispielmappe jetzt die Datumswerte in Spalte B.
Ich hab dir mal ein Makro geschrieben, das vom Aufbau der Beispielmappe ausgeht. Einfach den Code am Ende deines Makros einfügen.
Dim loLetzte As Long
With Worksheets("Tabelle1") 'Blattname ggf. anpassen
loLetzte = .Cells(.Rows.Count, 2).End(xlUp).Row
.Range(.Cells(2, 3), .Cells(loLetzte, 3)).FormulaLocal = "=KALENDERWOCHE(B2;21)"
.Range(.Cells(2, 3), .Cells(loLetzte, 3)).Value = .Range(.Cells(2, 3), .Cells(loLetzte, 3)). _
Value
End With
Gruß Werner
Anzeige
Vielen Dank
05.05.2018 15:15:46
Marc
So habe ich mir das vorgestellt danke =)
Gerne u. Danke für die Rückmeldung. o.w.T.
05.05.2018 15:37:10
Werner
AW: Wenn Wert dann KW eintragen
06.05.2018 11:35:35
Rainer
Hallo Marc,
ein kleiner Hinweis noch:
.FormulaLocal ist manchmal gemein, weil es nur auf Excel und Windows mit deutscher Sprache funktioniert.
 .Formula = "=WEEKNUM(B2,21)"
Das geht auch und ist flexibler.
Wir haben hier 2 Veränderungen:
Der Funktionsname ist english.
Das "Listentrennzeichen" ist nun ein Komma. (Wie auch im ganzen restlichen VBA)
Das schöne daran ist, dass man als "Listentrennzeichen" das Komma benutzen kann und es trotzdem klappt, obwohl im deutschen Windows da ein Semikolon sein sollte. Bei .FormulaLocal kann auch das Probleme machen, wenn man das Listentrennzeichen in der Systemsteuerung geändert hat.
Gruß,
Rainer
Anzeige
Nochmals Danke
06.05.2018 18:39:26
Marc
Ich habe deinen Änderungsvorschlag übernommen.

355 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige