Registriert seit: 11.07.2017
Version(en): 2010
Hallo,
ich habe eine generell Frage und Suche nach der besten / einfachsten Lösung -
Und zwar möchte ich Textfelder in Zahlenfelder umwandeln mit einer Formel.
Und zwar sollen alle 1) Zeichen 2) Sonderzeichen (z.B. $, &, usw.) 3) Leerzeichen 3) Code (160) ausgefiltert werden.
Am Ende soll dann nur mehr eine Zahle mit Komma übrigbleiben.
Experementiere mit verschachtelten WECHSEL-Funktionen - das macht mich aber irgendwie nicht glücklich.
Gibt es hier eine einfachere Lösung?
Registriert seit: 12.04.2014
Version(en): Office 365
Rapid1898, Schau dir mal die Nummern 100 bis 102 an.Ansonsten werden dir bestimmt auch noch UDFs angeboten.
Wir sehen uns! ... Detlef
Meine Beiträge können Ironie oder Sarkasmus enthalten.
Registriert seit: 10.08.2017
Version(en): Professionel 2013
03.09.2017, 23:30
(Dieser Beitrag wurde zuletzt bearbeitet: 03.09.2017, 23:30 von Helvetier.)
Hallo Rapid Wenn das mit einer Formel gemäss dem Vorschlag shift-del geht, ist das gut. Sonst wäre für ein solches Problem auch VBA Regexp geeignet. Das braucht dann allerdings etwas Übung um den Suchstring zu formulieren. Wenn ich Dich richtig verstehe ist in einem String an beliebiger Stelle nach [mehrstellige Zahl][,][mehrstellige Zahl] zu suchen. Gruss
Registriert seit: 29.09.2015
Version(en): 2030,5
Ein UDF in B1: =F_snb(A1) Code: Function F_snb(c00) For j = 1 To Len(c00) If Mid(c00, j, 1) Like "#" Then F_snb = F_snb & Mid(c00, j, 1) Next End Function
Registriert seit: 12.04.2014
Version(en): Office 365
Hallo snb, Zitat:Am Ende soll dann nur mehr eine Zahle mit Komma übrigbleiben. Bei mir passierte bei einem Test folgendes Arbeitsblatt mit dem Namen 'Tabelle1' | | A | B | 1 | Test~125,20 | 12520 |
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg |
und eigentlich sollte da, wenn ich das Ausgangsposting richtig interpretiere, die Zahl 125,20 stehen.
Gruß Peter
Registriert seit: 29.09.2015
Version(en): 2030,5
04.09.2017, 10:07
(Dieser Beitrag wurde zuletzt bearbeitet: 04.09.2017, 10:07 von snb.)
Das war nur als Ansatz gemeint und als Aufforderung selbst die Code zu ergänzen.
Registriert seit: 12.03.2016
Version(en): Excel 2003
Hallo ich habe auch ein Makro geschrieben, es gehört in ein normales Modul und durchsucht eine beliebige Spalte. Zum Testen nahm ich Spalte "A", hier kann der Frager jede beliebige andere Spalte angeben. Aber bitte alle "A" aendern !! Das Ergebnis wird in die Spalte geschrieben die im Makro angegeben ist. Frei waehlbar, zur Zeit "B" Ich habe Zweifel das jeder Frager ein gutes Makro wie von snb selbst anpassen kann. Das Problem ist m.E. gerade die Komma Auswertung. mfg Gast 123 Code: 'Eigenes Makro für beliebigen Bereich Sub Zahlen_ausfiltern() Dim Zahl As Double, AC As Range Dim Zeichen As Variant, lz As Long 'LastZell suchen, hier Spalte "A" lz = Cells(Rows.Count, "A").End(xlUp).Row 'Schleife füğr ganze Spalte bearbeiten (hier "A") For Each AC In Range("A2:A" & lz) Zahl = Empty: Zeichen = Empty 'Schleife zum String zerlegen (Zahl ausfiltern) For j = 1 To Len(AC) Zeichen = Mid(AC, j, 1) 'Zeichen zum audswerten If IsNumeric(Zeichen) Then Zahl = Zahl & Zeichen If Zeichen = "," And Len(Zahl) > 0 Then If IsNumeric(Mid(AC, j + 2, 1)) Then Zahl = Zahl & Mid(AC, j, 3): Exit For ElseIf IsNumeric(Mid(AC, j + 1, 1)) Then Zahl = Zahl & Mid(AC, j, 2): Exit For End If End If Next 'Ergebnis in Spalte B anzeigen (selbst festlegen) Cells(AC.Row, "B") = Zahl Next AC End Sub
Registriert seit: 11.07.2017
Version(en): 2010
Danke - das Makro hilft mir!
Registriert seit: 29.09.2015
Version(en): 2030,5
So kompliziert: Code: Function F_snb(c00) For j = 1 To Len(c00) If Mid(c00, j, 1) Like "#" Or Mid(c00, j, 1) = "," Then F_snb = F_snb & Mid(c00, j, 1) Next End Function
Registriert seit: 02.03.2017
Version(en): 2013
04.09.2017, 16:25
(Dieser Beitrag wurde zuletzt bearbeitet: 04.09.2017, 16:25 von CitizenX.)
Hier noch eine UDF Variante mit Regex: Code: Function extractnumbers(ByVal Zelle As String) Dim regex As Object Set regex = CreateObject("vbscript.regexp") With regex .Pattern = "^(.*?)(\d+[,\.\s]*\d+)(.*?)$" extractnumbers = .Replace(Zelle, "$2") End With
End Function
VG Steffen
|