Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zahl aus Zeichenkette extrahieren und rechnen

Zahl aus Zeichenkette extrahieren und rechnen
Kai
Hallo,
ich habe in der Spalte O eine Zeichenkette stehen:
Auto#Garage#10203040#10,123456789
Die Zeichenkette ist durch Trennzeichen (#) getrennt. Der letzte Teil (10,123456789) in diesem Beispiel ist eine PROZENT-Angabe.
Ich möchte nun immer diese Prozentangabe (immer nach dem 3. #-Zeichen) herausextrahieren.
In der Spalte I habe ich einen Geldbetrag stehen. Ich möchte nun, dass aus dem Betrag aus Spalte I der Pozentwert ausgerechnet wird ( also 10,123456789% aus dem Betrag aus SpalteI) und dieser wieder in die Spalte I geschrieben wird. (also alten 100% wert durch neuen überschreiben)
So soll, per Schleife alle Datensätze berechnet werden.
Hat da jemand eine Hilfe dazu ?
Danke
Kai
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zahl aus Zeichenkette extrahieren und rechnen
13.10.2010 09:27:00
Rudi
Hallo,
etwa so:
Sub ttx()
Dim rngC  As Range
For Each rngC In Columns(15).SpecialCells(xlCellTypeConstants)
rngC.Offset(, -6) = rngC.Offset(, -6) * Split(rngC, "#")(3) / 100
Next rngC
End Sub

Gruß
Rudi
Anzeige
AW: Zahl aus Zeichenkette extrahieren und rechnen
13.10.2010 10:26:29
Kai
Hallo Rudi,
ja, genau so. Danke
ich bekomme aber eine Fehlermeldung, wenn ich in der Spalte O in der ersten Zeile eine Überschrift drin habe und wenn es Zellen gibt, in denen nichts drin steht.
Was muss ich ändern, dass der Code erst ab Zeile 3 losgehrt, bzw leere Zellen übersprungen werden ?
Danke
Kai
Anzeige
AW: Zahl aus Zeichenkette extrahieren und rechnen
13.10.2010 10:33:23
Rudi
Hallo,
Sub ttx()
Dim rngC  As Range, Tmp
For Each rngC In Columns(15).SpecialCells(xlCellTypeConstants)
Tmp = Split(rngC, "#")
If UBound(Tmp) = 3 Then
If IsNumeric(Tmp(3)) Then
rngC.Offset(, -6) = rngC.Offset(, -6) * Tmp(3) / 100
End If
End If
Next rngC
End Sub

Gruß
Rudi
Anzeige
hier meine Version dazu...
13.10.2010 10:52:22
Tino
Hallo,
meine hat etwas länger gedauert.
Sub Test()
Dim ArrayBetrag(), ArrayText(), lngRow As Long
Dim tmpProzent

With Sheets("Tabelle1") 'Tabelle anpassen 
    With .Range("I2", .Cells(.Rows.Count, 9).End(xlUp)) 'Bereich Betrag 
        ArrayBetrag = .Cells.Value2 'Betrag in Array 
        ArrayText = .Offset(0, 6).Value2 'Text in Array 
        For lngRow = 1 To Ubound(ArrayText) 'Schleife 
            If InStr(ArrayText(lngRow, 1), "#") > 0 Then 'ist im Text # vorhanden? 
                If ArrayBetrag(lngRow, 1) <> "" Then 'ist ein Betrag vorhanden? 
                    tmpProzent = Split(ArrayText(lngRow, 1), "#") 'Text aufteilen 
                    tmpProzent = tmpProzent(Ubound(tmpProzent)) 'letzten Wert 
                    If IsNumeric(tmpProzent) Then 'prüfen ob Zahl 
                        tmpProzent = tmpProzent * 1 / 100 'Prozent 
                        ArrayBetrag(lngRow, 1) = ArrayBetrag(lngRow, 1) * tmpProzent 'ausrechnen 
                    End If
                End If
            End If
        Next lngRow
        .Cells = ArrayBetrag 'Ergebnis zurückschreiben 
    End With
End With
End Sub
Gruß Tino
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige