Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1100to1104
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Marko zum Suchen und Ersetzen von Listenbegriffen

Marko zum Suchen und Ersetzen von Listenbegriffen
Listenbegriffen
Hallo Forum!
Ich verzweifele gerade (seit 2 Tagen) an einem Makro, das irgendwie nicht laufen will. Dabei klang es eigentlich relativ einfach.
Also, ich habe diverse Tabellenblätter, von denen das eine z.B. „BA2“ und ein anderes „Datenbank“ heißt. In „BA2“ stehen in Spalte A ab Zeile 5 verschiedene Begriffe, wie z.B. 1.4301, St37, etc. Manchmal sind es nur 5 Begriffe, ein anderes Mal aber auch 120, variiert also immer.
In der Tabelle „Datenbank“ stehen Überschriften in 7 Spalten, z.B. Metall, Glas, etc. Unter diesen Überschriften sind die einzelnen Stoffe aufgezählt, also unter Metall unter anderem die beiden Suchbegriffe 1.4301 und St37, neben zahlreichen anderen.
Was möchte ich jetzt machen?
Ich benötige ein Makro, dass in das Tabellenblatt BA2 geht, in Spalte A den ersten Begriff (z.B. St37) auswählt und sich diesen merkt. Danach soll in dem Tabellenblatt „Datenbank“ dieser Begriff exakt gesucht werden. Wenn er gefunden wird, soll er in der Spalte, in der der Suchbegriff steht, bleiben und die Überschrift (Reihe 1 der Spalte, in diesem Fall Metall) kopieren und in dem Tabellenblatt BA2 den Begriff St37 durch die Überschrift aus dem Tabellenblatt „Datenbank“ (hier also Metall) ersetzen.
Wenn der Begriff nicht gefunden wurde, soll er in Tabellenblatt BA2 mit dem nächsten Begriff weitermachen. Dabei aber nicht immer bis in Zeile 65000 alles absuchen, sondern nur bis zum Ende der Begriffe. Anschließend soll er mit dem nächsten Tabellenblatt („BB2“) fortfahren.
Ich schaffe es, dass er den letzten Begriff in Spalte A findet, diesen Wert kopiert, und die Position dieses Begriffes (Reihe, Spalte) in zwei Variablen schreibt:
Sub SuchErsetzen()
Dim xyz As Long
Dim hpg As Long
Dim rngTargetCell As Range
Dim Position As Range
Dim posMerkerZeile As Integer, posMerkerSpalte As Integer
For lRow = Sheets("BA2").Range("A" & Rows.Count).End(xlUp).row To 5 Step -1
xyz = Cells(lRow, 1).Value
Cells(lRow, 1).Select
posMerkerZeile = ActiveCell.row
posMerkerSpalte = ActiveCell.Column
MsgBox (xyz)
MsgBox (posMerkerZeile)
MsgBox (posMerkerSpalte)
Mit MsgBox gebe ich die Werte zur Kontrolle aus, klappt. Aber auch nur einen Durchlauf lang. Wenn er den nächsten Suchbegriff speichern soll, kommt eine Fehlermeldung. Was ich allerdings überhaupt nicht schaffe, ist die Suche in dem Tabellenblatt "Datenbank", sodass er mir die Überschrift der entsprechenden Spalte kopiert und den Suchbegriff in dem Blatt "BA2" dann durch diese ersetzt.
Kann mir hier wer weiterhelfen oder hat jemand schonmal ein ähnliches Makro geschrieben?
Vielen Dank in jedem Fall im Voraus!

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Marko zum Suchen und Ersetzen von Listenbegriffen
08.09.2009 11:56:07
Listenbegriffen
Hi.
Kurze Nachfrage:
1. Steht in jeder Zelle im Blatt BA2 (bzw. BB2 usw.) nur ein Begriff?
2. Um alle Tabellenblätter duchzugehen müßte ich etwas mehr über die Struktur der Tabelle wissen... irgendwie muss man die Blätter, in denen Ersetzungen vorgenommen werden sollen, ja erkennen.
3. Welche Spalten in Datenbank sind es denn? 1-7? 2-8?
Gruss, Jogy
AW: Marko zum Suchen und Ersetzen von Listenbegriffen
08.09.2009 12:08:05
Listenbegriffen
Hi Jogy,
erstmal danke für deine Antwort :)
Zu deinen Fragen:
1. Steht in jeder Zelle im Blatt BA2 (bzw. BB2 usw.) nur ein Begriff?

Ja, in Zelle A5 steht z.B. 1.4301, in Zelle A6 steht Zellkautschuk, in Zelle A7 steht Glasfaser.
2. Um alle Tabellenblätter duchzugehen müßte ich etwas mehr über die Struktur der Tabelle wissen... irgendwie muss man die Blätter, in denen Ersetzungen vorgenommen werden sollen, ja erkennen.

Stimmt. Ich wollte aber eigentlich nicht alle Namen der Blätter in das Makro schreiben (es sind aktuell 103 Blätter), sondern per Makro einfach in das nächste springen:
q = ActiveSheet.Index
If q + 1 > Sheets.Count Then
finish
Else
naechste
End If
Wobei naechste so aussehen sollte:
Sub naechste()
ActiveSheet.Next.Select
Application.ScreenUpdating = True
Application.StatusBar = False
ERSETZEN ERNEUT STARTEN ( End Sub
Sollte doch auch gehen, oder?
3. Welche Spalten in Datenbank sind es denn? 1-7? 2-8?

Es sind die Spalten 1-7.
Und nochmal danke, dass du dich dem Problem annimmst :)
Anzeige
AW: Marko zum Suchen und Ersetzen von Listenbegriffen
08.09.2009 12:17:39
Listenbegriffen
Hi.
Mir ging es nicht darum, alle Namen ins Blatt zu schreiben, sondern um eine Struktur, die man im makro übernehmen kann. Also, ich gehe mal davon aus, dass Datenbank das erste Sheet ist und danach Deine Sheets kommen, in denen die Daten ersetzt werden müssen. Wenn ich das falsch verstanden habe, dann mußt Du (oder ich) das noch ändern.
Sub exChange()
Dim roW As Long
Dim wsHNr As Long
Dim dbSheet As Worksheet
Set dbSheet = ThisWorkbook.Sheets("Datenbank")
On Error Resume Next
For wsHNr = 2 To ThisWorkbook.Worksheets.Count
With ThisWorkbook.Worksheets(wsHNr)
For roW = 5 To .Cells(Rows.Count, 1).End(xlUp).roW
.Cells(roW, 1).Value = _
dbSheet.Cells(1, dbSheet.Range(dbSheet.Cells(2, 1), _
dbSheet.Cells(dbSheet.UsedRange.roW + _
dbSheet.UsedRange.Rows.Count, 7)).Find(.Cells(roW, 1).Value, _
, , xlWhole).Column)
Next
End With
Next
On Error GoTo 0
End Sub
Ich habe das ganze Suchen...Ersetzen in eine Zeile gepresst, kann ich Dir aber gerne auch noch aufschlüsseln.
Gruss, Jogy
Anzeige
AW: Marko zum Suchen und Ersetzen von Listenbegriffen
08.09.2009 13:06:06
Listenbegriffen
Erstmal WOW! Bin etwas sprachlos, wie klein das Makro ist. Und ein fettes DANKE!
Bei mir werden die immer seitenlang ;)
Versucht gerade das Suchen...Ersetzen nachzuvollziehen. Das ist ja schon gehobene VBA-Programmierung!
Wenn ich das Makro allerdings ausführe, passiert leider noch nichts. Er rechnet kurz, aber ändert nichts. Im Einzelschritt sehe ich, dass die Suchschleife für Tabellenblatt BA2 genau 5 Mal durchläuft, was den 5 Begriffen die dort stehen auch exakt entspricht. Nur ersetzt er keinen Begriff. Mal gucken, ob ich das noch näher nachvollziehen kann.
AW: Marko zum Suchen und Ersetzen von Listenbegriffen
08.09.2009 13:08:27
Listenbegriffen
Hi.
Ich hab mir nach Deiner Beschreibung eine Beispieldatei gebastelt und in der geht es. Warum es bei Dir nicht tut kann ich ohne Deine Datei nicht nachvollziehen.
Gruss, Jogy
Anzeige
AW: Marko zum Suchen und Ersetzen von Listenbegriffen
08.09.2009 13:14:36
Listenbegriffen
Hi Jogy,
es läuft! Und wie schnell, bin total vom Hocker!
Es lief eben nicht, weil ich das Makro in einer anderen Excel-Tabelle eingefügt hatte (wenn man zuviele auf einmal auf hat), und dort natürlich der Befehl "ThisWorkbook" auf die falsche Tabelle zugreift. Ziemlich blöder Fehler meinerseits.
Hab vielen tausend Dank! Irgendwann will ich das auch mal in dem Umfang können :o)

326 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige