19.12.2018, 11:35
Danke für deine Hilfe, aber sobald ich die originalen Daten in die Exceldatei kopiere, funktioniert es ab dem ersten leeren Feld nicht mehr.
Sub EinheitenZuStunden()
Dim rngEinheiten As Range
Dim rngStunden As Range
Dim varEinheten As Variant
Set rngStunden = Worksheets("Stunden").Range("A1").CurrentRegion
Set rngEinheiten = ActiveSheet.Range("A1").CurrentRegion.Columns(6)
On Error Resume Next
For Each rngEinheiten In Selection.Cells
'For Each rngEinheiten In rngEinheiten.Offset(1).Resize(rngEinheiten.Rows.Count - 1).Cells
If InStr(1, rngEinheiten.Text, ":") = 0 And Len(rngEinheiten.Text) Then
varEinheten = Split(rngEinheiten, "-")
rngEinheiten.Value = Format(Application.VLookup(CLng(varEinheten(0)), rngStunden, 2, 0), "hh:nn") & "-" & _
Format(Application.VLookup(CLng(varEinheten(UBound(varEinheten))), rngStunden, 3, 0), "hh:nn")
End If
Next rngEinheiten
On Error GoTo 0
End Sub
Einheit Zeit
1 07:45-08:30
2 08:35-09:20
3 09:25-11:15
4 11:20-12:55
5 13:00-14:35
6 13:50-15:25
7 14:40-16:30
8 15:45-16:30
9 16:35-18:10
10 17:25-19:00
11 14:40-18:10
12 17:20
Sub SuchenErsetzen()
Dim i As Long
Dim lngZ As Long
Dim lngEinheit As Long
Dim ersatzTab As Range
Dim varErgebnis As Variant
Set ersatzTab = Sheets("Stunden").Range("A2:C13")
With Sheets("Tabelle1")
.Columns(6).NumberFormat = "General"
.Columns(6).NumberFormat = "@"
lngZ = .Cells(.Rows.Count, 6).End(xlUp).Row
For i = 2 To lngZ
If Left(.Cells(i, 6).Value, 5) Like "*#[-]#*" Or .Cells(i, 6).Value Like "#" Or .Cells(i, 6).Value Like "##" Then
lngEinheit = Split(.Cells(i, 6), "-")(0)
varErgebnis = Application.Match(lngEinheit, ersatzTab.Columns(1), 0)
If IsNumeric(varErgebnis) Then
.Cells(i, 6).Value = ersatzTab.Cells(varErgebnis, 2).Value
End If
End If
Next i
End With
End Sub