Clever-Excel-Forum

Normale Version: Suchen und Ersetzen mit Makro möglich?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Danke für deine Hilfe, aber sobald ich die originalen Daten in die Exceldatei kopiere, funktioniert es ab dem ersten leeren Feld nicht mehr. Huh
Hallo,

markiere die Zellen und nimm folgendes Makro:
Code:
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

Gruß Uwe
Dieses Makro wandelt die Werte bis zur Zeile 6 richtig um. Danach schmiert Excel ab. Ich habe es mit einer Handvoll Zahlen getestet und Excel ein paar Minuten laufen lassen. Leider hängt es sich, wie gesagt, auf.
Hallo,

ich habe da auch mal etwas gebastelt.
Damit es Funktioniert habe ich die Tabelle Stunden umgebaut.

Die Spalte mit den Zeiten ist als Text formatiert.

PHP-Code:
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 


und folgenden Code in ein allgemeines Modul einfügen:


Code:
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
Hallo Atilla,

wäre es bitte möglich, dass du mir die Datei schickst?
Ich weiß leider nicht, was mit "in ein allgemeines Modul einfügen" gemeint ist..
Danke.
Hallo

unten Deine Datei:

[attachment=21474]
Seiten: 1 2 3