Anzeige
Archiv - Navigation
1876to1880
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zahl mit String in negative Zahl wandeln

Zahl mit String in negative Zahl wandeln
29.03.2022 11:27:59
Bernd
Hallo allen hier im Forum,
hoffentlich kann mir jemand helfen: Ich habe in einer Excel Datei aus der Buchhaltung eine Textspalte deren Zellen mit einer Zahl und einem Buchstaben gefüllt sind. Die Zahl steht für den Betrag und der Buchstabe für das Vorzeichen. Beispiel: 123456 H oder 123456 S. Das H steht für Haben, also ein positiver Wert, und das S steht für Soll; also ein negativer Wert. Damit ich diese Zellen als Zahlenwerte wandele, lösche ich mit einem Makro die Buchstaben raus und wandel danach die Zellen in eine Zahl um. Das funktioniert soweit auch super. Aaaaaber: Bei den Werten mit einem S für Soll müsste ich eine Minuszahl erzeugen. Ich bräuchte also eine Schleife, die die Zellen nach den Werten mit einem S durchsucht, das "S" löscht, den Wert in der Zelle in eine negative Zahl wandelt. Hat jemand eine Idee?

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahl mit String in negative Zahl wandeln
29.03.2022 11:32:45
{Boris}
Hi,
z.B. - bezogen auf die aktuelle Selektion:

Sub til()
Dim C As Range
For Each C In Selection
C.Replace "H", ""
If Right(C, 1) = "S" Then
C.Replace "S", ""
C = C * -1
End If
Next C
End Sub
VG, Boris
AW: Zahl mit String in negative Zahl wandeln
29.03.2022 11:33:16
UweD
Dann zeig uns doch mal ein bestehendes Makro
LG UweD
AW: Zahl mit String in negative Zahl wandeln
29.03.2022 11:43:50
UweD

Sub SollHaben()
Dim LR As Integer, i As Integer, Sp As Integer, Z1 As Integer
Sp = 1 'Spalte A
Z1 = 2 'wegen Überschrift
LR = Cells(Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
For i = Z1 To LR
With Cells(i, Sp)
If InStr(.Value, "S") > 0 Then
.Value = -CDbl(Replace(.Value, "S", ""))
ElseIf InStr(Cells(i, Sp), "H") > 0 Then
.Value = CDbl(Replace(.Value, "H", ""))
End If
End With
Next
End Sub
LG UweD
Anzeige
AW: Zahl mit String in negative Zahl wandeln
29.03.2022 15:16:24
Bernd
Liebe Forumsmitglieder,
vielen Dank für die schnelle Hilfe.
Das Makro von UweD hat super funktioniert. Lieben Dank.
Bin begeistert. Habe noch die Währungsformatierung drangehängt.

Sub SollHaben()
Dim LR As Integer, i As Integer, Sp As Integer, Z1 As Integer
Sp = 12 'Spalte L
Z1 = 2 'wegen Überschrift
LR = Cells(Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
For i = Z1 To LR
With Cells(i, Sp)
If InStr(.Value, "S") > 0 Then
.Value = -CDbl(Replace(.Value, "S", ""))
.NumberFormat = "#,##0.00 $"
ElseIf InStr(Cells(i, Sp), "H") > 0 Then
.Value = CDbl(Replace(.Value, "H", ""))
.NumberFormat = "#,##0.00 $"
End If
End With
Next
End Sub

Anzeige
Prima
29.03.2022 15:44:11
UweD
Danke für die Rückmeldung
AW: Zahl mit String in negative Zahl wandeln
29.03.2022 11:34:01
JoWE
Hallo Bernd,
Du schriebst "...und wandel danach die Zellen in eine Zahl um".
Damit hast Du doch bereits einen Teil der Lösung.
Die umgewandelte Zahl muss lediglich noch mit minus 1 (-1) multpliziert werden.
Gruß
Jochen
AW: Zahl mit String in negative Zahl wandeln
29.03.2022 11:37:47
Rudi
Hallo,
für Spalte A:

Sub aaa()
Dim rngC As Range
Application.ScreenUpdating = False
For Each rngC In Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
Select Case Right(rngC, 1)
Case "H": rngC = Replace(rngC, "H", "") * 1
Case "S": rngC = Replace(rngC, "S", "") * -1
End Select
Next rngC
End Sub
Gruß
Rudi
Anzeige
=(1-2*(RECHTS(A1)="S"))*WECHSELN(A1;RECHTS(A1);)
29.03.2022 12:01:39
lupo1
AW: Zahl mit String in negative Zahl wandeln
29.03.2022 12:45:33
Daniel
Hi
prinzipiell mag ich keine Schleifen. Das geht auch ohne.
1. Ersetze " H" durch nichts
2. Ersetze " S" durch "-"
3. Wende dann DATEN - DATENTOOLS - TEXT IN SPALTEN auf die Spalte an um aus den Textwerten Zahlen zu machen. Hierbei kann man angeben, dass negative Zahlen ein nachgestelltes "-" haben, somit werden dann auch diese als Zahl erkannt.

With Columns(1)
.Replace " H", "", xlPart
.Replace " S", "-", xlPart
.TextToColumns Destination:=.Cells(1, 1), DataType:=xlFixedWidth, FieldInfo:=Array(0, 1), _
DecimalSeparator:=",", ThousandsSeparator:=".", TrailingMinusNumbers:=True
End With
allerdings würde ich in solchen Fällen die Originalspalte so belassen wie sie ist (zur Dokumentation) und in einer zusätzlichen Spalte die Werte berechnen und mit dieser Spalte weiter arbeiten.
Hier würde ich die Umwandlung mit Formeln machen, einige wurden dir ja schon genannt.
ich schlage diese vor:

=Links(A1;Länge(A1)-2)*2*((Rechts(A1;1)="H")-0,5)
oder

=Links(A1;Länge(A1)-2)*Wenn(Rechts(A1;1)="S";-1;1)
Gruß Daniel
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige