Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1552to1556
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

Alles vor Zeichen entfernen

Alles vor Zeichen entfernen
18.04.2017 20:08:05
Daniel
Hallo
Folgendes:
Ich habe eine Datei mit vielen Einträgen.
In einer Spalte (D) stehen unterschiedliche Zahlen als Textformatiert.
Was sie ALLE gemeinsam haben ist:
Sie beginnen mit einer 0 - oder 2 oder 3 oder 4...
Ich frage mich, wie ich mit VBA in dieser Spalte D alle "Führungsnullen" entfernen kann und vor dem der ersten "echten" Zahl (1 - 9) eine alternative Zahlenfolge einsetzen kann...
Vor JEDE dieser Zahlen muss nämlich ein:
0145.
(Der Punkt gehört noch dazu)
Ich finde aber keine Lösung.
Ich komm heut irgendwie nicht weiter damit...vermutlich steckt noch etwas zu viel Oster-We in mir :(
Danke für die Mühe.
Mfg
Daniel

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alles vor Zeichen entfernen
18.04.2017 20:23:12
Sepp
Hallo Daniel,
probier mal.
Sub zahlen()
Dim rng As Range

For Each rng In Range("D:D").SpecialCells(xlCellTypeConstants).Cells
  If IsNumeric(rng) Then rng = "0145." & Val(rng.Text)
Next

End Sub

Gruß Sepp

Anzeige
AW: Alles vor Zeichen entfernen
18.04.2017 20:39:27
Daniel
Hahahahahaha
Ich schmeiß mich grad weg Sepp....
Ich danke dir....
Vor...na...2 Wochen ca...hab ich auf ner anderen Plattform eine ähnliche Frage mit dem gleichen Ansatz erklärt...
Ich sollte vielleicht mal wieder schlafen gehen...ich kam nicht mal auf die Idee es so zu versuchen...ich hatte gar keine Idee wie man das lösen könnte...
*rofl*
Danke Sepp :-)
AW: Alles vor Zeichen entfernen
19.04.2017 05:34:55
Daniel
Hallo Sepp
Jetzt nur mal als Frage weil ich zur Zeit Ideenfrei bin :(
Angenommen es gibt bereits Werte mit einem Führungswert von "0145." - die werden dann ja zu einem:
"0145.145.".
In diesem konkretem Fall bei mir ist das irrelevant - aber für die Zukunft evtl. interessant...
Wie verhindere ich jetzt die "Mutation" von "0145."-Werten zu "0145.145."?
Danke
Daniel
Anzeige
AW: Alles vor Zeichen entfernen
19.04.2017 08:49:34
UweD
Hallo
so?
Sub zahlen()
    Dim rng As Range, Pre As String
    Pre = "0145."
    For Each rng In Range("D:D").SpecialCells(xlCellTypeConstants).Cells
        If IsNumeric(rng) Then
            If Left(rng, 5) <> Pre Then
                rng = Pre & Val(rng.Text)
            End If
        End If
    Next
End Sub

LG UweD
Anzeige
AW: Alles vor Zeichen entfernen
20.04.2017 06:11:19
Daniel
Hi UweD
Ich hab mal einige Beispiele zusammengefasst wie das aussehen könnte.
Vor alle diese Zahlen soll am Ende die "0145." stehen - nur einmal.
Es soll keine Sonderzeichen enthalten, nur den einen Punkt in der ganzen Zahl.
(Die "0145." ist letztendlich nur eine Variable die durch ein Textfeld bestimmt wird, weil es dann darauf ankommt was als Führungsnummer gebraucht wird, aber das ist nur eine Formalität.)
Wohlgemerkt:
Es ist kein Fall der aktuell so ist.
Es ist tatsächlich nach Sepp´s Lösung im Moment alles so wie es zu sein hat.
Aber ich fürchte, dass es in naher oder hoffentlich ferner Zukunft dazu kommen wird - weil es m.E.n. IMMER zu einem Zahlengewurstel kommt wenn Nutzern erlaubt wird quasi alles einzutragen weil es kein einheitliches Eintragesystem gibt...
Ich will nur nicht grundsätzlich alle paar Wochen einige tausend Zeilen in 50 Tabellen per Hand durchsuchen müssen um eine "0145.145." oder eine "0145.145.145.145." etc zu finden - die vielleicht gar nicht da ist...da werde ich schon beim bloßen Gedanken daran verrückt *rofl*
Also auf jeden Fall danke ich dir für deine Hilfe :-)
MfG
Daniel
https://www.herber.de/bbs/user/112990.xlsx
Anzeige
AW: Alles vor Zeichen entfernen
20.04.2017 08:45:04
UweD
Hallo nochmal
einen Teil der Eingabefehler kannst du abfackeln, bei Zahlendrehern (und dann mit Varablen) wird es aber schwierig.
Sub Zahlen()
    Dim Rng As Range, Sp As Integer, Pre As String
    Pre = "0145."
    Sp = 1 'Spalte A 
    
    For Each Rng In Columns(Sp).SpecialCells(xlCellTypeConstants).Cells
        If IsNumeric(Rng) Then
            If Left(Rng, 5) = Pre Then
                'nichts 
                
            ElseIf Left(Rng, 4) = Mid(Pre, 2) Then
                Rng = "0" & Rng
                
            ElseIf Left(Rng, 4) = Left(Pre, 4) Then
                Rng = Pre & Mid(Rng, 5)

            ElseIf Left(Rng, 5) = "0154." _
                Or Left(Rng, 5) = "0514." Then ' Weitere? 
                'das sind aber dann Schreibfehler, die nicht so einfach 
                'über die Variable abzudecken sind 
                Rng = Pre & Mid(Rng, 6)
            
            Else
                Rng = Pre & Val(Rng.Text)
            End If
        End If
    Next
End Sub
LG UweD
Anzeige
mit regulären Ausdrücken
20.04.2017 11:22:22
CitizenX
Hi,
dafür sind die regulären Audrücke geeignet.
Hiermit lassen sich recht komfortable Bedingungen zusammenzufassen:
Option Explicit
Sub WechselnK()
Dim myArea As Range, out, i&
Dim regex: Set regex = CreateObject("vbscript.regexp")
Const REPLACE_STRING = "145." ' ggf anpassen
Const INCOLUMN = 1 ' ggf anpassen-Spalte die geprüft werden soll
regex.Pattern = "^([^\d\w]?[0145]*\.?)(.*?$)"
With ThisWorkbook.Sheets("Tabelle1") ' ggf Tabellenblattname anpassen
Set myArea = .Cells(1, INCOLUMN).Resize(.Cells(.Rows.Count, INCOLUMN).End(xlUp).Row)
out = myArea.Value
For i = 1 To UBound(out, 1)
out(i, 1) = regex.Replace(out(i, 1), REPLACE_STRING & "$2")
Next
myArea = out
End With
End Sub
VG
Steffen
Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige