Microsoft Excel

Herbers Excel/VBA-Archiv

Entfernung von Textteil in Zelle durch Makro

Betrifft: Entfernung von Textteil in Zelle durch Makro von: Barbara
Geschrieben am: 31.07.2014 13:03:03

Guten Tag,
ich erhalte durch den Import einer .csv-Datei alle Zellen, die Eurobeträge erhalten, als Text in der Form EUR 0,00.
Sobald ich die Zeichen E, U, R und Leer manuell entferne, wandelt Excel 2003 den verbliebenen Ziffernrest in eine Zahl um und es lässt sich damit rechnen.
Gibt es ein Makro, das mir die manuelle Arbeit abnehmen kann? Es handelt sich immer um die Zellkoordinaten P:P, R:R und U:U. Weiß jemand dafür einen Code?
Vielen Dank.
Barbara

  

Betrifft: AW: Entfernung von Textteil in Zelle durch Makro von: Tino
Geschrieben am: 31.07.2014 13:13:16

Hallo,
vielleicht so?

Sub Start ()
    Sheets("Tabelle1").Range("P:P,R:R,U:U").Replace What:="EUR ", Replacement:="", _
    LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
End Sub
Gruß Tino


  

Betrifft: AW: Entfernung von Textteil in Zelle durch Makro von: Barbara
Geschrieben am: 31.07.2014 14:57:06

Tino, Du bist mein Held! Vielen Dank! Es hat funktioniert, nur gäbe es noch eine Kleinigkeit zu verändern. Anders als bei dem manuellen Entfernen der Zeichen belässt Excel die Zelle im Textformat. Ich muss also nochmals drübergehen und die verbliebenen Ziffern in Zahlen verwandeln. Hast du auch hiefür eine Lösung? Das wäre ganz prima! Nochmals vielen Dank für das Makro, es hilft mir auch schon in der vorliegenden Form sehr weiter!!!
Herzliche Grüße
Barbara


  

Betrifft: AW: Entfernung von Textteil in Zelle durch Makro von: Adis
Geschrieben am: 31.07.2014 15:32:57

Hallo

Versuch mal diese Variante, aber bitte zur Vorsicht in einer neuen Datei.
Kopiert wird Range, und wieder an derselben Stelle als Wert eingefügt.
Da Excel zum Teil intelligent ist wandelt er es selbst in eine Zahl um.
Keine Garantie das es in jeder Version klappt. Einfach mal ausprobieren.

Wenn es klappt den Kopiervorgang immer -nach- dem Replace ausführen.

Sheets("Tabelle1").Range("P:P,R:R,U:U").Copy
Sheets("Tabelle1").Range("P:P,R:R,U:U").PasteSpecial xlValues

Gruss Adis


  

Betrifft: AW: Entfernung von Textteil in Zelle durch Makro von: Barbara
Geschrieben am: 31.07.2014 16:09:17

Hallo, Adis, vielen Dank, aber das funktioniert leider nicht. Ich erhalte die Fehlermeldung:

Laufzeitfehler '1004': Bei einer Markierung von nicht-angrenzenden Zellen ist die Ausführung dieses Befehls nicht möglich.

Herzliche Grüße
Barbara


  

Betrifft: AW: Entfernung von Textteil in Zelle durch Makro von: Rudi Maintaire
Geschrieben am: 31.07.2014 16:20:43

Hallo,
setze das Zellformat vorher auf Standard.

Sub Start()
  With Sheets("Tabelle1").Range("P:P,R:R,U:U")
    .NumberFormat = "General"
    .Replace What:="EUR ", Replacement:="", _
      LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
      ReplaceFormat:=False
  End With
End Sub

Gruß
Rudi


  

Betrifft: AW: Entfernung von Textteil in Zelle durch Makro von: Barbara
Geschrieben am: 31.07.2014 17:44:49

Hallo, Rudi,
vielen Dank. Hier habe ich das gleiche Ergebnis wie bei Tinos Lösungsvorschlag, die Zellen bleiben leider im Textformat. Ich habe vor dem Ausführen des Makros die Zellen auf "Standard" gesetzt, wie Du es empfohlen hast.
Gruß
Barbara


  

Betrifft: mit einer Hilfzelle von: Tino
Geschrieben am: 31.07.2014 18:08:44

Hallo,
versuch es mal so.

Sub Start()
Dim rngTmp As Range, rngNum As Range
With Sheets("Tabelle1")
    Set rngTmp = .Cells(1, .Columns.Count)
    
    With .Range("P:P,R:R,U:U")
        
        .Replace What:="EUR ", Replacement:="", _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        
        On Error Resume Next
        Set rngNum = .SpecialCells(xlCellTypeConstants, 1)
        If Err.Number <> 0 Then Exit Sub
        
        rngTmp.Value = 1
        For Each rngNum In rngNum.Areas
            If Not Application.CutCopyMode Then rngTmp.Copy
            rngNum.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, SkipBlanks:=False, Transpose:=False
        Next rngNum
        rngTmp.Clear
    End With
End With
End Sub
Gruß Tino


  

Betrifft: AW: mit einer Hilfzelle von: Barbara
Geschrieben am: 31.07.2014 18:20:16

Hallo, Tino,
ich finde es toll, was du und ihr mir hier an Hilfe anbietet...

Leider ist das Problem noch immer nicht geknackt, EUR ist zwar getilgt, aber die Ziffern bleiben hartnäckig im Textformat. Was meinst Du im Betreff Deiner Antwort mit "mit einer Hilfszelle"?

Kann es sein, dass ich mich irgendwie dämlich anstelle? Ich habe ja leider keine Ahnung von VBA, ich kopiere den Code in den VBA-Editor, passe den Namen des Arbeitsblatts darin an und lasse das Makro dann laufen...
Grüße
Barbara


  

Betrifft: der Hinweis von Daniel von: Tino
Geschrieben am: 31.07.2014 19:27:54

Hallo,
ist Gold wert!

Versuch es mal so!

Sub Start()
With Sheets("Tabelle1")
    With .Range("P:P,R:R,U:U")
        .Replace What:="EUR ", Replacement:="", _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

        .Replace What:=",", Replacement:=".", _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    End With
End With
End Sub
Gruß Tino


  

Betrifft: Danke Daniel und Tino von: Barbara
Geschrieben am: 31.07.2014 21:01:29

Hallo, Tino und Daniel,
das war es: ES KLAPPT! Dreimal HURRA!!! Ihr seid die Größten!
Es dankt von Herzen
Barbara :-))


  

Betrifft: AW: Entfernung von Textteil in Zelle durch Makro von: Daniel
Geschrieben am: 31.07.2014 18:32:26

Hi

wenn man beim Ersetzen mit Mit Makros arbeitet, muss man bedenken, dass VBA und Excel Englisch miteinander reden und das Ersetzen wie eine Neueingabe des Wertes wirkt.
Daher erkennt Excel eine Zahl nur dann als Zahl, wenn die Zahl im englischen Format, dh mit dem Punkt als Dezimalzeichen von VBA eingegeben wird, daher muss man erstmal das Komma durch einen Punkt ersetzen:

With Range("P:P,R:R,U:U")
.Replace ",", ".", xlpart
.Replace "EUR", "", xlpart
.Replace " ", "", xlpart 'kann ggf entfallen
End With
fürst du das hingeben "von Hand" aus, spricht Excel deutsch mit dir und die Zahlen müssen das Komma enthalten um als Zahl erkannt zu werden.

gruß Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "Entfernung von Textteil in Zelle durch Makro"