Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Suchen und Ersetzen innerhalb einer Zelle
#1
Hallo,

ich hab folgendes Excel-Problem, wo ich mich über eventuelle Hinweise freuen würde:


Ich habe eine Spalte, in der innerhalb jeder Zelle mehrere Zeilen befüllt sind.

also beispielsweise:

12345 (Kapitel 1)
33333 (kapitel 2)

in einer anderen Zelle könnte stehen

12345 (Kapitel 2)
66666 (gesamtes Dokument)


usw.

Mein Problem ist:
Ich möchte jedesmal, wenn die Zahl 12345 vorkommt, darunter die Zahl 99999 (xxx) schreiben.

Zusätzliches Problem: Wenn 12345 mehrmals vorkommt, darf es nur einmal 99999 (xxx) schreiben.

Wie löst man solche Probleme am besten?

Bin für Hinweise sehr dankbar!

beste Grüße
Antworten Top
#2
Hallo,

angenommen die Texte stehen in Spalte A und der Suchwert ist "12345", dann könnte dieser Code helfen:


Code:
Sub Test()
Const Such As String = "12345"
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
   Su = InStr(Cells(i, "A"), Such)
   If Su > 0 Then
       ZU = InStr(Su, Cells(i, "A"), Chr(10))
       Cells(i, "A").Characters(ZU, 1).Insert (Chr(10) & "99999 (xxx)" & Chr(10))
   End If
Next i
End Sub


mfg
Antworten Top
#3
Hallo,

vielen Dank für deine Antwort.
Ich hab schon ein ähnliches VBA-Beispiel erzeugt; da deines so bei mir nicht läuft (wohl wegen Initialisieren usw.), würd ich kurz meines verwenden:


Code:
Sub Ersetzen()

Dim i As Integer 'zeigt an, ob in der Zelle schon einmal ersetzt wurde
Dim j As Integer
Dim k As Integer 'letzte befüllte Zelle in der Spalte
i = 0
k = Range("H" & Rows.Count).End(xlUp).Row
ActiveSheet.Select

For j = 1 To k
  Range("H" & j).Select
  Selection.Replace What:="333", Replacement:="222 (full document)" & vbCrLf & "333", LookAt:=xlPart
Next j
End Sub

Ich suche also in der Spalte H nach dem Dokument Dokument "333" und schreibe in die vorige Zeile das 222.
DIes funktioniert auch ganz gut, aber nun hänge ich am eigentlichen Problem:
Wenn innerhalb einer Zelle zweimal 333 stehen würde, schreibt er mir hier auch zweimal die 222 rein.
Das soll er NICHT tun! WIe kann ich hier innerhalb der Zelle einen Counter setzen?

Liebe Grüße
Antworten Top
#4
Also ich glaub ich habs. Ersetzen war nicht der richtige Ansatz.
Das der Code nicht sauber ist ist mir klar, ich bin noch bei den ersten Schritten :)


Code:
Sub Hinzufügen()

Dim j As Integer
Dim k As Integer 'letzte befüllte Zelle in der Spalte

k = Range("H" & Rows.Count).End(xlUp).Row
ActiveSheet.Select

For j = 1 To k
 Range("H" & j).Select
If InStr(Cells(j, 8), "333") > 0 Then
  Range("H" & j).Value = Range("H" & j).Value & "222 (full document)"
End If
 'Selection.Replace What:="333", Replacement:="222 (full document)" & vbCrLf & "333", LookAt:=xlPart
Next j
End Sub
Antworten Top
#5
Hallo Nelson,

nimm die Excelfunktion WECHSELN() = Substitute():
Sub prcErsetzen()
 Dim j As Integer
 For j = 3 To Range("H" & Rows.Count).End(xlUp).Row
   With Range("H" & j)
     .Value = Application.WorksheetFunction.Substitute(.Value, "333", "222 (full document)" & vbCrLf & "333", 1)
   End With
 Next j
End Sub
Gruß Uwe
Antworten Top


Gehe zu:


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