2016-12-02 7 views
1

Ich muss Evaluate Arbeit für die Replace-Funktion machen. Der Code soll "-0700" durch nichts ersetzen. Der Code ist unten in Spalte C zusammen mit Daten versehen:EXCEL VBA EVALUIEREN und ersetzen

Set sh = ThisWorkbook.Sheets(1) 
Set rangc = sh.Range("c2:c10") 
For Each area In rangc.Areas 
    area.Value = Evaluate("IF(ROW(" & area.Address & ")," & Replace(area.Address, " -0700", "") & ")") 
Next area 

-Diese sind die Daten in dem Blatt:

ColumnC(original data) 
-0700 
sdfg -0700 
how -0700 saf 
2016-10-16 10:13:41 -0700 

ColumnC(After code is run) 
-700 
sdfg -0700 
how -0700 saf 
10/16/2016 10:13 

Warum der Code hat etwas mit der ersten Reihe (-700), aber nicht durch "" ersetzt. Es hat auch die "-700" in der 4. Reihe (16.10.2016 10:13) entfernt. Aber es hat nicht für die 2. und 3. Reihe funktioniert? Wie kann ich es für Strings oder Zahlen arbeiten lassen?

Ich versuche, ähnlichen Code zu verwenden, um Teilzeichenfolge in einer anderen Zeichenfolge sehr schnell zu ersetzen. Ich kann die Schleifenmethode nicht akzeptieren, weil es hunderttausend Zeilen gibt.

+1

* Warum wird der Code etwas zu der ersten Reihe tut (-700), aber mit „“ nicht ersetzen. Außerdem wurde die "-700" in der 4. Reihe entfernt (16.10.2016 10:13) * Ich denke, dass diese Umzüge nicht das Ergebnis der Ersetzung des Codes waren, sondern nur einige automatische Formatierungen von Excel. –

+0

Sie haben wahrscheinlich Recht und ich frage nach einer Lösung für Evaluate, die nicht existiert. – user1721447

+0

Sie wenden die 'Replace'-Funktion auf die Adresse an, die nichts ersetzt. Es könnte einen Weg geben, 'SUBSTITUTE' zu verwenden, aber ich denke, dass die' .Replace'-Methode hier die richtige Lösung wäre. – arcadeprecinct

Antwort

0

Sie müssen nicht den gesamten Bereich durchlaufen. Sie können nur .Replace Methode verwenden, die ziemlich schnell ist:

Set sh = ThisWorkbook.Sheets(1) 
Set rangc = sh.Range("c2:c10") 
rangc.Replace What:=" -0700", Replacement:=""