Microsoft Excel

Herbers Excel/VBA-Archiv

Inhalte durchsuchen und Teil ersetzen | Herbers Excel-Forum


Betrifft: Inhalte durchsuchen und Teil ersetzen von: Boris
Geschrieben am: 06.03.2010 10:55:58

Hallo Excelfans,

Habe folgendes Problem:
Möchte in einem Freitextfeld einen Teil, der mit dem Inhalt einer anderen Zelle einer anderen Tabelle übereinstimmt finden, diesen dann ähnlich eines SVERWEIS'es durch den Inhalt der nebenan stehenden Zelle ersetzen.

Bsp:
gegeben:

tabelle1.cells(1,1)="bla bla bla hallo bla bla bla"
tabelle2.cells(3,3)="hallo"
tabelle2.cells(3,4)="ja doch"

gesucht:
"hallo" aus tabelle1 soll nun durch "ja doch" aus tabelle2.cells(3,4) ersetzt werden.

wenn man dies noch mit einer Schleife versehen könnte, dass diese tabelle2 durch geht, währe ich mehr als glücklich.

Freue mich über jede fachkundige VBA Antwort.

Beste Grüße
Boris

  

Betrifft: mit suchen und ersetzen ... von: Tino
Geschrieben am: 06.03.2010 11:12:57

Hallo,
teste mal diesen Code. (getestet unter xl2007)

Sub Test()
Dim maArTab2(), BereichTab1 As Range
Dim A As Long

'Array der Daten die gesucht u. ersetzt werden sollen 
With Tabelle2
    maArTab2 = .Range("C1", .Cells(.Rows.Count, 4).End(xlUp)).Value2
End With

'Bereich der durchsucht werden soll 
With Tabelle1
    Set BereichTab1 = .Cells(1, 1).Find("*") 'Excel Bug ersetzen in ges. Mappe umgehen 
    Set BereichTab1 = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
End With


'Suchen und ersetzen 
For A = 1 To Ubound(maArTab2)
    If maArTab2(A, 1) <> "" Then
        BereichTab1.Replace What:=maArTab2(A, 1), Replacement:=maArTab2(A, 2), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
        ReplaceFormat:=False
    End If
Next A


End Sub
Gruß Tino


  

Betrifft: AW: mit suchen und ersetzen ... von: Boris
Geschrieben am: 06.03.2010 12:56:10

So,
Absolut unglaublich ist, dass es noch Menschen gibt, die sich so engagiert um die Probleme anderer kümmern. Ich werde da in Zukunft auch mal mitmachen.
Das war das erste mal, dass ich eine Frage in dieses Forum stelle. Innerhalb einer Stunde bekam ich absolut perfektes Feedback. -Problem gelöst- Danke dafür.

Beste Grüße
Boris


  

Betrifft: AW: Inhalte durchsuchen und Teil ersetzen von: fcs
Geschrieben am: 06.03.2010 11:39:35

Hallo Boris,

hier auch noch eine geschachtelte For-Next-Scheifen-Lösung und ein Lösung ähnlich der von Tino.

Grüß
Franz

Sub AATest()
  'Sucht und ersetzt Groß-/Kleinschreibung genau
  Dim wks1 As Worksheet, wks2 As Worksheet
  Dim sText$, sSuch$, sErsatz$
  Dim lZeile1&, lZeile2&
  Set wks1 = Tabelle1
  Set wks2 = Tabelle2
  
  For lZeile1 = 1 To wks1.Cells(wks1.Rows.Count, 1).End(xlUp).Row
    sText = wks1.Cells(lZeile1, 1).Text
    For lZeile2 = 1 To wks2.Cells(wks2.Rows.Count, 3).End(xlUp).Row
      sSuch = wks2.Cells(lZeile2, 3).Text
      sErsatz = wks2.Cells(lZeile2, 3).Offset(0, 1).Text
      If InStr(1, sText, sSuch) > 0 Then
        sText = Replace(sText, sSuch, sErsatz)
      End If
    Next
    wks1.Cells(lZeile1, 1).Value = sText
  Next
End Sub

Sub BBTest()
  'wie Suchen/Ersetzen im Menü
  Dim wks1 As Worksheet, wks2 As Worksheet
  Dim sSuch$, sErsatz$
  Dim lZeile1&, lZeile2&, Bereich As Range
  Set wks1 = Tabelle1
  Set wks2 = Tabelle2
  With wks1
    Set Bereich = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
  End With
  With wks2
  For lZeile2 = 1 To .Cells(.Rows.Count, 3).End(xlUp).Row
    sSuch = .Cells(lZeile2, 3).Text
    sErsatz = .Cells(lZeile2, 3).Offset(0, 1).Text
    Bereich.Replace What:=sSuch, replacement:=sErsatz, lookat:=xlPart, _
        MatchCase:=False, matchbyte:=True
  Next
  End With
End Sub



  

Betrifft: Suchen und Teile ersetzen von: Erich G.
Geschrieben am: 06.03.2010 11:43:38

Hi Boris,
noch eine Variante (nix wirklich Neues...)

Sub Auswechsle()
   Dim lngA As Long, arrStr, lngL As Long, nn As Long, zz As Long

   With Sheets("Tabelle1")
      lngA = .Cells(.Rows.Count, 1).End(xlUp).Row
      arrStr = Application.Transpose(.Cells(1, 1).Resize(lngA))
   End With
   With Sheets("Tabelle2")
      lngL = .Cells(.Rows.Count, 3).End(xlUp).Row
      For zz = 3 To lngL
         For nn = 1 To lngA
            arrStr(nn) = Replace(arrStr(nn), .Cells(zz, 3), .Cells(zz, 4))
         Next nn
      Next zz
   End With
   Sheets("Tabelle1").Cells(1, 1).Resize(lngA) = Application.Transpose(arrStr)
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Inhalte durchsuchen und Teil ersetzen von: Boris
Geschrieben am: 06.03.2010 12:56:53

So,
Absolut unglaublich ist, dass es noch Menschen gibt, die sich so engagiert um die Probleme anderer kümmern. Ich werde da in Zukunft auch mal mitmachen.
Das war das erste mal, dass ich eine Frage in dieses Forum stelle. Innerhalb einer Stunde bekam ich absolut perfektes Feedback. -Problem gelöst- Danke dafür.

Beste Grüße
Boris


  

Betrifft: Ja, Boris, und das ist auch gut so,... von: Luc:-?
Geschrieben am: 06.03.2010 16:27:40

…denn, wenn es nach diesen sog libertären Typen vom Schlage eines "Ernst" im AnneWillBlog und seines großen Vorbildes von der „ef“ und neoliberalen Misanthropen wie einst Hayek gehen würde, dürfte es das eigentl gar nicht geben… ;-)
Gruß+schöWE, Luc :-?


Beiträge aus den Excel-Beispielen zum Thema "Inhalte durchsuchen und Teil ersetzen"