Supportnet Computer Supportnet Games Supportnet Kochen Explipedia
Login: guestBesucher online: 84
Supportnet Computerforum
SUPPORT
Home
Forum
Tipps & Infos
Blitz Angebote
Members
Hilfe
Video

TOP THEMEN
SSD Test
Alles über SSDs

Android Tipps
iPad Tipps
Google Tipps
Windows 8 FAQ
Windows 7 FAQ
E-Mail FAQ
Netzwerk FAQ
Festplatten FAQ
Datenrettung FAQ
Bildbearbeitung FAQ

Top iPhone Apps
Computer Einsteiger
Die 5 besten...
Explipedia
Themen
Direktlinks

Neue Einträge
News einsenden News einschicken
Tipps einsenden Tipp einschicken

SN-LINKS

Suche
Befreundete Seiten
Top Seiten

Supportnet/Forum/Tabellenkalkulation



Supportnet/Forum/Tabellenkalkulation
von ahorn38 vom 02.02.2017, 09:47 Diese Seite den Supportnet Favoriten hinzufügen  Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden


Teile einer Str-Variablen löschen

 (335 Hits)

Hallo,

ich habe eine StrVariable, die sich aus einer Reihe von durch Komma getrennter verschiedener Zahlen unterschiedlicher Länge zusammensetzt.

("4,134,2,45,1546,32,8,4567")

Ich möchte per Code eine bestimmte frei zu definierende Zahl (z,B. "8") innerhalb der strVariable löschen und die Variable neu ausgeben.
Meine Versuche waren bisher leider ohne das gewünschte Ergebnis, hat jemand einen Tipp?
Danke und Gruß A.


Antwort schreiben 50 Bonuspunkte

Antworten...
Antwort 1 von rainberg vom 02.02.2017, 10:08 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Andreas,

vielleicht so?

Sub test()
    Range("B1").Value = WorksheetFunction.Substitute(Range("A1"), ",8,", ",")
End Sub


Hierbei steht die Stringvariable in A1

Gruß
Rainer


Antwort noch nicht bewertet Als gute Antwort bewerten
Antwort 2 von ahorn38 vom 02.02.2017, 10:16 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Rainer,

ja das ist eine gute vor allem sehr effektive Lösung. Allerdings gibt es ein Problem mit den Kommata, wenn z.B. die erste oder letzte Zahl gelöscht werden soll, da diese das Komma entweder nur vor oder hinter dem Wert haben.
Gruß A.


Antwort noch nicht bewertet Als gute Antwort bewerten
Antwort 3 von Flupo vom 02.02.2017, 10:18 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Die angebotene Lösung ist wahrscheinlich noch zu einfach weil die zu
ersetzende Zahl ja variabel sein soll.
Das Problem wird auch dadurch noch etwas komplizierter, dass die zu
ersetzende Zahl ja auch am Anfang oder Ende des Strings stehen kann.
Hab nur gerade wenig Zeit um selbst zu basteln.

Gruß Flupo


Antwort noch nicht bewertet Als gute Antwort bewerten
Antwort 4 von xlKing vom 02.02.2017, 12:29 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Andreas,

hier ein Beispiel, das auch Anfang und Ende einbezieht.

Sub Ersetzen()

repl = "8"
Var = "8,57,8,20,8"

Var = Replace(Var, "," & repl & ",", ",")
p = InStr(1, Var, ",")
If Left(Var, p - 1) = repl Then Var = Right(Var, Len(Var) - p)
p2 = InStrRev(Var, ",")
If Right(Var, Len(Var) - p2) = repl Then Var = Left(Var, p2 - 1)

End Sub
Gruß Mr. K.


Antwort noch nicht bewertet
Antwort 5 von M.O. vom 02.02.2017, 12:37 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Andreas,

du kannst die Variable ja per Split erledigen ;-). Im folgenden Beispiel steht die Variable in Zelle A1. Ersetzt wird hier die 4

Sub Beispiel()

Dim varX As Variant
Dim strAlt As String
Dim strNeu As String
Dim i As Long

'Einlesen - ohne erste und letzte zwei Zeichen
strAlt = Mid(Range("A1").Value, 3, Len(Range("A1").Value) - 4)
'String aufspalten
varX = Split(strAlt, ",")
'einzelne Elemente wieder zusammenfügen, aber ohne bestimmte Zahl
For i = LBound(varX) To UBound(varX)
 If varX(i) <> 4 Then strNeu = strNeu & varX(i) & ","
Next i

'letztes Komma abschneiden und erste und letzte zwei Zeichen wieder ergänzen
Range("A2") = "(""" & Left(strNeu, (Len(strNeu) - 1)) & """)"

End Sub


Gruß

M.O.


Antwort noch nicht bewertet Als gute Antwort bewerten
Antwort 6 von rainberg vom 02.02.2017, 12:58 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Andreas,

und zum Schluss noch eine Variante vom VBA-Laien

Option Explicit

Sub test()
    Dim strWeg As String, str2 As String, str3 As String
    str2 = WorksheetFunction.Substitute(WorksheetFunction.Substitute(Range("A1"), "(""", "("","), """)", ","")")
    strWeg = "," & InputBox("Welche Zahl soll gelöscht werden?", "") & ","
    str3 = WorksheetFunction.Substitute(str2, strWeg, ",")
    Range("B1") = WorksheetFunction.Substitute(WorksheetFunction.Substitute(WorksheetFunction.Substitute(str3, "(""", "("","), """)", ","")"), ",,", "")
End Sub



Gruß
Rainer


Antwort noch nicht bewertet Als gute Antwort bewerten
Antwort 7 von Nighty__ vom 02.02.2017, 13:27 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hi all ^^

ein Beispiel!

Gruss Nighty

Sub Löschen()
 Cells(1, 1) = "8,1,2,8,2,8"
 Cells(1, 1).Replace What:="8" & ",", Replacement:="", LookAt:=xlPart
 Cells(1, 1).Replace What:="," & "8", Replacement:="", LookAt:=xlPart
End Sub


Antwort noch nicht bewertet
Antwort 8 von ahorn38 vom 02.02.2017, 15:14 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo,
vielen Dank an ALLE!!!
Ich finde jede Lösung hat etwas... jetzt bleibt mir die Qual der Wahl.
Das ist ein wirklich gutes Forum - hier kriegt man ja wirklich in kürzester Zeit super qualifizierte Tipps!
Danke und Gruß A.


Antwort noch nicht bewertet Als gute Antwort bewerten
Antwort 9 von Nighty__ vom 02.02.2017, 16:31 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

hi all ^^

Dann noch eine .-)

Gruss Nighty

Sub ZeichenL()
Dim Zeichenkette As String
Zeichenkette = "81288"
With CreateObject("VBscript.regexp")
  .Pattern = "(8|)"
  .Global = True
  Zeichenkette = .Replace(Zeichenkette, "")
End With
Cells(1, 1) = Zeichenkette
End Sub


Antwort noch nicht bewertet
Antwort 10 von ahorn38 vom 03.02.2017, 15:29 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo nighty,

du bringst immer noch eine Lösung bei der ich erst einmal eine halbe Stunde brauche, um zu verstehen was du da machst..... Das liegt aber nicht an dir sondern an meinen begrenzten Kenntnissen!! Das funktioniert natürlich und ich habe wieder was dazu gelernt! Danke!!
Gruß A.


Antwort noch nicht bewertet Als gute Antwort bewerten
Antwort 11 von Nighty__ vom 04.02.2017, 12:16 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Andreas ^^

Zwei Beispiele zum Pattern!
Parameter sind rech vielfältig und kombinierbar!

Gruß Nighty

.Pattern = "\D" 'Nur Ganzzahlige Zahlen

 .Pattern = "[0-9]" '0-9 ausgeschlossen


Antwort noch nicht bewertet
Antwort 12 von Nighty__ vom 05.02.2017, 09:22 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Andreas ^^

String Verarbeitung ist imm recht Amösant .-)

Ich hab Dir mal ein Interessantes Beispiel rausgesucht!

Binäre Hochzählung!

Sub DualHochZählen()
'Beispiel zur String Verarbeitung,das Duale Hochzählen!
    Dim StringY As String, StringX As String, StringE As String
    Dim DZeile As Integer
    StringY = String(8, "0")    '8 Bit
    StringX = String(8, "0")
    StringE = String(8, "1")
    Do
        DZeile = DZeile + 1
        StringY = Mid(StringY, 1, InStrRev(StringY, "0") - 1) & "1" & Mid(StringX, InStrRev(StringY, "0") + 1, Len(StringX))
        Cells(DZeile, 1) = StringY
    Loop While StringY <> StringE
End Sub


Antwort noch nicht bewertet




Antwort schreiben
    Bitte einen 'Nickname' wählen.
Nickname:*
    (eMail-Adresse wird nicht veröffentlicht.)
eMail:
Nachricht: Ich möchte bei Antworten benachrichtigt werden.
    Hilfe zur Beitragsformatierung gibts [hier]
                   
Antwort:*
  Die Nutzungsbedingungen habe ich gelesen und akzeptiert.

MACHEN SIE IHRE WEBSITE ATTRAKTIVER
Sie haben eine eigene Website und wollen Ihre Besucher auf den Supportnet-Service aufmerksam machen? Kopieren Sie einfach den Quellcode in Ihre Seite und jeder Besucher Ihrer Seite kann direkt auf die Supportnet-Datenbank zugreifen.

My Supportnet


SUCHE

Gruppen im Forum
Betriebsysteme
Software
Hardware
Netzwerk
Programmierung
Sonstiges

Impressum © 1997-2015 SupportNet
Version: supportware 1.8.230E / 18.10.2010, Startzeit:Thu Apr 27 08:45:35 2017