Registriert seit: 22.09.2022
Version(en): Office 365
Hi
Hier mein Problem (Formel soll in Zelle M4 stehen):
Wenn in Zelle D4 „Feiertag“ oder „Urlaub“ oder „Zeitausgleich“ steht sollen in den Zellen B4 die Uhrzeit „7:30“ und in C4 die Uhrzeit „15:42“ stehen!
Das ist jetzt nur eine Zeile, das ganze soll sich dann bis Zeile 35 fortsetzen.
Hoffentlich kann mir jemand weiterhelfen
Danke
Registriert seit: 11.04.2014
Version(en): Office 365
22.09.2022, 09:22
(Dieser Beitrag wurde zuletzt bearbeitet: 22.09.2022, 09:30 von Klaus-Dieter.)
Hallo,
Zitat:Hier mein Problem (Formel soll in Zelle M4 stehen):
das geht so nicht, Formeln können nur auf die Zelle wirken, in der sie stehen.
So würde das gehen:
Tabelle1 | A | B | C | D |
3 | | | | |
4 | | 7:30 | 15:42 | Urlaub |
5 | | 7:30 | 15:42 | Feiertag |
6 | | 7:30 | 15:42 | Zeitausgleich |
Formeln der Tabelle |
Zelle | Formel | B4 | =WENN(ODER(D4="Urlaub";D4="Feiertag";D4="Zeitausgleich");0,3125;0) | C4 | =WENN(ODER(D4="Urlaub";D4="Feiertag";D4="Zeitausgleich");0,65416667;0) | B5 | =WENN(ODER(D5="Urlaub";D5="Feiertag";D5="Zeitausgleich");0,3125;0) | C5 | =WENN(ODER(D5="Urlaub";D5="Feiertag";D5="Zeitausgleich");0,65416667;0) | B6 | =WENN(ODER(D6="Urlaub";D6="Feiertag";D6="Zeitausgleich");0,3125;0) | C6 | =WENN(ODER(D6="Urlaub";D6="Feiertag";D6="Zeitausgleich");0,65416667;0) |
|
Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter,
der Misserfolg ist ein Waisenkind
Richard Cobden
Registriert seit: 16.08.2020
Version(en): 2019 64bit
Hallo,
falls du in den Zellen der Spalte D auch andere Begriffe verwenden willst und in Spalte B bzw. C manuell andere Zeiten eintragen willst, werden dann die Formeln überschrieben.
Man kann die Formeln mit VBA wiederherstellen oder manuell neu eintragen.
Aber man kann es auch gleich so machen (Ins Modul des Tabellenblattes):
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i%, varTage$
varTage = "feiertag~~urlaub~~zeitausgleich" 'ggf. Anpassen/Erweitern
If Not Intersect(Target, Range("D4:D35")) Is Nothing Then
i = ActiveCell.Row
If Target.Cells <> "" Then
If InStr(1, varTage, LCase(Cells(i, 4))) > 0 Then
Cells(i, 2) = "07:30"
Cells(i, 2).NumberFormat = "h:mm"
Cells(i, 3) = "15:42"
Cells(i, 3).NumberFormat = "h:mm"
End If
Else
Cells(i, 2) = ""
Cells(i, 3) = ""
End If
End If
End Sub
Gruß Uwe
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Hi Uwe,
ist das wirklich Dein Rat an einen "Neuling"?
Abgesehen davon fliegt Deine Code bei Mehrfacheingabe ab - aber viel entscheidender: Die Einträge verrutschen 1 Zeile nach unten, da Du mit ActiveCell arbeitest (es sei denn, man hat in den Optionen eingestellt, dass Enter keine Selektionsänderung bewirkt).
Registriert seit: 16.08.2020
Version(en): 2019 64bit
22.09.2022, 13:57
(Dieser Beitrag wurde zuletzt bearbeitet: 22.09.2022, 13:57 von Egon12.)
Hallo Boris,
Sorry, das mit dem Neuling, hatte ich überlesen.
Du hast recht - war unüberlegt von mir. Das letztere kann man auffangen. Runterziehen und im Block geht nur mit On Error.
Gruß Uwe
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
22.09.2022, 22:24
(Dieser Beitrag wurde zuletzt bearbeitet: 22.09.2022, 22:26 von MisterBurns.)
Hallo ChewChew,
dass das so nicht geht, hat Klaus-Dieter ja schon erläutert. Dein Ansatz muss ein anderer sein. Es gibt ja mit Sicherheit eine Zelle (angenommen es ist N4), in der du die Differenz zwischen Anfang und Ende errechnest. Und genau in dieser Zelle (N4) musst du Urlaub, ZA usw. vorher abfragen. Also WENN in D4 einer der besagten Werte drinsteht, DANN muss in N4 die Differenz zwischen 15:42 und 7:30 errechnet werden. WENN das nicht der Fall ist, dann rechne die Differenz zwischen C4 und B4.
Code:
=WENN(ODER(D4="Urlaub";D4="Zeitausgleich";D4="Feiertag");ZEITWERT("15:42")-ZEITWERT("7:30");C4-B4)
Noch etwas feiner, ohne Zeitwert:
Code:
=WENN(ODER(D4="Urlaub";D4="Zeitausgleich";D4="Feiertag");492/(24*60);C4-B4)
Schöne Grüße
Berni