2016-05-04 7 views
0

Ich benutze ein = IF-FunktionPerform IF-Funktion in VBA

=IF(RIGHT(A1;1)="-";"-"&LEFT(A1;LEN(A1)-1);A1)*1 

ein Minuszeichen aus dem Ende der Zelle an den Anfang zu verschieben, aber ich mag es in einem Makro verwenden, so dass es durchgeführt wird, auf der gleichen Spalte (oder dieselbe Auswahl) ...

Antwort

1

1) Verwenden den die Einheit Für .... Schleife durch jede Zelle in einer Schleife in einem Bereich konstruieren. 2) Wenn Sie "Zahlen" von 123 bis 123 in eine richtige Zahl und nicht in Text konvertieren möchten, verwenden Sie den Befehl "Val", um eine Zeichenfolge in eine Zahl zu konvertieren. ist jedoch zu beachten, dass, wenn Sie, wenn Sie Zelle mit so etwas wie „ABC-“ haben, wird diese -ABC werden, die VBA dann in eine Zahl zu konvertieren versucht ... und produziert Null als Ergebnis

Sub MoveMinus() 
Dim c As Range 
    For Each c In Intersect(Selection, Selection.Worksheet.UsedRange) 
     If (Right(c, 1) = "-") Then 
     c = Val("-" & Left(c, Len(c) - 1)) 'Val to make the result numeric 
     End If 
    Next 

End Sub 
+0

Großen. Danke, @HedgePig. Keine Sorge, alle Zellen sind Zahlen, d. H. 123 -... Wie würde ich dem Makro einen Schritt davor hinzufügen, um auch alle zu finden, (Komma) und sie durch nichts ersetzen (löschen)? – teaspoon

+0

Ich bin froh, dass es geholfen hat. Um Kommas zu entfernen, verwenden Sie den Befehl Ersetzen, z. c = Ersetze (c, ",", "") vor der If-Bedingung. Beachten Sie, dass dies ein Komma im Textfeld ersetzt, aber das Komma NICHT durch Zahlen ersetzt, die mit Kommas formatiert sind - da dies ein Formatierungsproblem ist – HedgePig

Verwandte Themen