online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon rapperzahn2 vom 26.03.2021, 15:18 Options

Doppelte Zeichen aus einem String löschen | Makro in Excel |

Moin Moin,

ich brauche mal wieder eure kompetente Hilfe. Ich schreibe gerade an einem Makro und habe da folgendes Problem:
Ich habe zwei Zellen. Wenn die zweite Zelle Zeichen (eigentlich immer nur Zahlen) hat, die die erste auch hat, dürfen diese in der ersten Zelle nicht mehr vorkommen, sprich sie müssen gelöscht werden.
An einem Beispiel ist das ganze wahrscheinlich offensichtlicher:

BSP:
Zelle1: X567
Zelle2: 67

Dann soll danach in Zelle 1 nur noch X5 stehen.

Dieses vermeintlich kleine Problem hält mich nun schon seit Stunden auf. Ich bekommen es einfach nicht hin!
Ich würde mich sehr freuen, wenn ihr mir helfen könnt!

Vielen Dank!!!

rapperzahn


Antwort schreiben

Antwort 1 von nighty vom 26.03.2021, 16:03 Options

hi rapperzahn ^^

vielleicht so :-)

gruss nighty

Option Explicit
Sub trennen()
    On Error GoTo ErrorHandler
    Dim TbZeile As Long
    Dim zaehler As Long
    TbZeile = Cells(Rows.Count, 1).End(xlUp).Row
    ReDim TbSpaA(TbZeile, 1) As Variant
    TbSpaA() = Range(Cells(2, 1), Cells(TbZeile, 1))
    For zaehler = 1 To TbZeile - 1 Step 2
        TbSpaA(zaehler, 1) = Mid(TbSpaA(zaehler, 1), 1, InStr(TbSpaA(zaehler, 1), TbSpaA(zaehler + 1, 1)) - 1) & Mid(TbSpaA(zaehler, 1), InStr(TbSpaA(zaehler, 1), TbSpaA(zaehler + 1, 1)) + Len(TbSpaA(zaehler + 1, 1)), Len(TbSpaA(zaehler, 1)))
    Next zaehler
    Range(Cells(2, 1), Cells(TbZeile, 1)) = TbSpaA()
    End
ErrorHandler:
    If Err = 5 Then
        Resume Next
    Else
        Err.Raise 5
    End If
End Sub

Antwort 2 von rapperzahn vom 27.03.2021, 08:03 Options

Moin Moin,

wow! Noch nicht einmal eine Stunde! Wenn das nicht schnell ist. Vielen Dank!
Jetzt musste ich leider (wieder) einmal merken, dass Makros nicht meine Muttersprache sind ;-(
Ich brauche noch einmal deine/eure Hilfe. Und zwar habe ich einen bestehenden Quellcode und an der markierten Stelle sollte der für die X67 usw. rein.
Nur, nachdem ich den Code von nighty angeguckt habe, weiß ich nicht so recht, wie ich den da einfüge.
Ich poste einfach mal meinen bisherigen Code und HIER findet ihr auch eine passende Beispieldatei.
Alle Felder die jeweils zusammengehören, also von dem Makro zusammengeführt werden sollen, sind farbig markiert.
Wie ihr auch seht, war das mit den X67 nicht das einzige, was das Makro machen soll.

Im Übrigen stehen die Zahlen für die Wochentage (1=MO,2=DI) und das D steht für täglich, das X für außer an den nachfolgenden Tagen (z.B. X67 heißt außer am Wochenende). Vielleicht erklärt
das ja so ein bissl den Zusammenhang.
Was ich damals vergessen habe: Werden hinter dem X alle Zahlen gelöscht, muss dann natürlich ein D für täglich stehen. (in der Beispielsdatei das grau hinterlegte Paar).

Hier nun der Code, sonst rede ich noch mehr wirres Zeug. Bei Fragen, gerne- versuche ich zu beantworten. Mir ist im Übrigen bewusst, dass man einiges schöner hätte ausdrücken können, aber es erfüllt seinen Zweck:

Zitat:
Sub zusammenfuehren()

Dim inhalt, zeichen As String

zahl = 1

bzahl = 2

Do While zahl < 5000

If Cells(zahl, 1).Value <> "" Then

Do While bzahl < 5000

If Cells(bzahl, 1).Value <> "" Then

If Cells(zahl, 1).Value = Cells(bzahl, 1).Value Then

If Cells(zahl, 8).Value = Cells(bzahl, 8).Value Then

'richtig anordnen

Z = Cells(zahl, 2)

u = Cells(bzahl, 2)

If Mid(Z, 1, 1) <> "X" Then

If Mid(u, 1, 1) <> "X" Then

neueri = Cells(bzahl, 2) & Cells(zahl, 2)

y = neueri





For j = 1 To 7

For i = 1 To Len(y)

zeichen = Mid(y, i, 1)

Select Case zeichen

Case j

inhalt = inhalt & j



End Select

Next i

Next j





If inhalt = 12345 Then

inhalt = "X67"

End If

If inhalt = 123456 Then

inhalt = "X7"

End If

If inhalt = 123457 Then

inhalt = "X6"

End If

If inhalt = 1234567 Then

inhalt = "D"

End If



' falls X



Else

'HIER KOMMT DAS ERSTE X67 REIN!!!!





End If

Else

'HIER KOMMT DAS ZWEITE X67 REIN!!!!

End If











Cells(zahl, 2).Value = inhalt

inhalt = ""

Rows(bzahl & ":" & bzahl).Delete

Else

bzahl = bzahl + 1

End If

Else

bzahl = bzahl + 1

End If

Else

bzahl = 9999

End If



Loop

zahl = zahl + 1

bzahl = zahl + 1



Else

zahl = 9999

End If

Loop

End Sub



Vielen Dank auf jeden Fall! Ihr seid echt Gold wert!

Schönes Wochenende schon einmal

rapperzahn

Antwort 3 von rapperzahn2 vom 27.03.2021, 15:56 Options

Moin Moin,

ich wollte mich nur noch mal melden, denn ich habe das Problem nun doch gelöst!

Für alle Interessierte, hier der Code ohne Schleife etc. (praktisch nur für die Zelle A2 und B2):

Zitat:
Dim inhalt As String
zahl = 1
bzahl = 2
z = Cells(zahl, 2)
u = Cells(bzahl, 2)

For j = 1 To Len(z)
For i = 1 To Len(u)
zeichen = Mid(u, i, 1)
If zeichen <> Mid(z, j, 1) Then
If i = Len(u) Then
zeichen = Mid(z, j, 1)
inhalt = inhalt & zeichen
End If
End If
Next i
Next j


Cells(zahl, 2).Value = inhalt



End Sub


Vielen Dank und ein SUPER WOCHENENDE

rapperzahn

Ähnliche Themen

nich zielführende Hyperlinks per Makro aus dem Excel löschen
MaxMustermann  14.02.2008 - 95 Hits - 14 Antworten

Doppelte Einträge löschen
Handybike  29.04.2008 - 496 Hits - 1 Antwort

In Excel doppelte Einträge löschen - wie?
kasipoasi  25.05.2008 - 987 Hits - 2 Antworten

Doppelte Adressen in Excel-Tabelle löschen
Buerotantesusi  17.09.2009 - 143 Hits - 4 Antworten

mit Makro ein Zeichen löschen
Chrissi_Li  02.09.2008 - 13 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026