Teilwert einer Zelle auslesen und zu anderem Teilwert einen vorgegebenen Wert addiere
#1
Hallo Forumsnutzer,

ich habe eine Frage zum Auslesen von Teilwerten einer Zelle und deren Weiterverarbeitung und weiss auch gar nicht ob das so überhaupt möglich ist.

Die Tabelle hat über 40.000 Zeilen und 9 Spalten.
In verschiedenen Zellen stehen werde die mit "Z" oder "Z-" beginnen, nach Z oder Z- stehen dann noch Zahlenwerte.
Jetzt hätte ich gerne die ganzen Werte in ein neues Tabellenblatt übertragen und dabei soll bei allen Zellen in denen "Z" oder "Z-" enthalten ist der Zahlenwert ausgelesen werden und jeweilst mit einem vorgegebenen wert addiert werden.

Beispiel:
Zellwert: "Z400." --> Addierungswert - 660 --> Ergebnis in neuer Zelle auf neuem Tabellenblatt "Z1060."

Bei Minuswerten - Beispiel:
Zellwert: "Z-400." --> Addierungswert - 660 --> Ergebnis in neuer Zelle auf neuem Tabellenblatt "Z260."


Anbei die Excelliste:

.xlsx   Werte.xlsx (Größe: 1,01 MB / Downloads: 5)

Vielen Dank für die Hilfe
Top
#2
Hi,

brauchst Du den Punkt am Ende des Strings oder kann der wegfallen ?
Überlegen macht überlegen
Gruss aus dem schönen Hunsrück
_______ Klaus-Martin _______
Top
#3
Hi,

der Punkt steht für die Maschine welche die Datei dann einlesen soll für ein Komma und wird nur dann benötigt wenn hinter dem Punkt noch weitere Zahlen stehen, was auch
vorkommen kann.

allso "Z400." +660 darf dann "Z1060" sein
aber "Z400.50" sollte dann bei +660 "Z1060.50" sein.
Top
#4
Hallo

Code:
="Z"&WECHSELN(WECHSELN(WECHSELN(A1;"Z";"");".";",")+660;",";".")
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Top
#5
Hi,

teste das mal in einer Kopie der Mappe...
aber Garantie gibt es keine, wenn das auf eine Maschine soll und knallt!

Code:
Sub stantiv()
Dim rng As Range, rng_cell As Range, lngCalc As Long
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        lngCalc = .Calculation
        .Calculation = xlCalculationManual
        .DisplayAlerts = False
    End With
    On Error GoTo errmsg
    Cells.NumberFormat = "General"
    Cells.Replace What:="Z", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Set rng = Cells.SpecialCells(xlCellTypeConstants, 1)
    Range("M1").Value = 660 'anpassen
    Range("M1").Copy
    With rng
    .PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
        False, Transpose:=False
    For Each rng_cell In rng
        rng_cell.Value = "Z" & Format(rng_cell, "0.#####")
    Next
    End With
    Cells.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Range("M1").Value = ""
    Set rng = Nothing
    Set rng_cell = Nothing
errmsg:
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = lngCalc
        .DisplayAlerts = True
    End With
If Err.Number <> 0 Then MsgBox Err.Number & " / " & Err.Description
End Sub

mit . am Ende
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Top
#6
Hallo,

Super Danke,

Die Zellen mit Z werden alle berechnet.
Jetzt bräuchte ich noch das alle anderen Werte ohne Z im Original ohne Veränderung übernommen  werden.
Habe die Liste noch mal mit der eingefügten Formel angehängt:

.xlsx   Werte.xlsx (Größe: 1,01 MB / Downloads: 2)

Code:
="Z"&WECHSELN(WECHSELN(WECHSELN(A1;"Z";"");".";",")+660;",";".")
Top
#7
Hallo Chris,

den code probiere ich auch gleich aus - Danke dafür
Top
#8
(14.06.2016, 16:23)Valeverde schrieb: Jetzt bräuchte ich noch das alle anderen Werte ohne Z im Original ohne Veränderung übernommen  werden.
Code:
=WENNFEHLER("Z"&WECHSELN(WECHSELN(WECHSELN(A1;"Z";"");".";",")+660;",";".");A1)
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Top
#9
Thumbs Up 
Hallo Chris,

der Code ist perfekt, macht genau das was wir wollten.

Vielen Dank dafür Thumps_up

Ich gehe das mit meinen Kollegen jetzt durch und wir schauen ob sich die Maschine genauso freut.

Melde mich dann noch mal...
Top
#10
Hallo,

es hat alles super geklappt.

Noch mal vielen Dank für die Lösung.

Alles Gute...
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste