Registriert seit: 04.11.2016
Version(en): 2010
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
Registriert seit: 06.12.2015
Version(en): 2016
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
Registriert seit: 04.11.2016
Version(en): 2010
04.11.2016, 14:38
(Dieser Beitrag wurde zuletzt bearbeitet: 04.11.2016, 14:38 von Nelson.
Bearbeitungsgrund: Makro in Codetags gesetzt
)
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
Registriert seit: 04.11.2016
Version(en): 2010
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
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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