Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
408to412
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
408to412
408to412
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Texte suchen und einfügen

Texte suchen und einfügen
Bernhard
Hallo,
ich habe 2 riesige Excel-Tabellen, die 2. ist eine Erweiterung an Datensätzen der Ersten und die gültige Version, die fortgeschrieben wird.
Bei der neuen Version sind mir die Daten (= Text; Personen-Namen) in der Spalte C verloren gegangen. Und diese Namen soll Excel wieder in Spalte C der 2.Version hineinschreiben, indem es in der alten 1. Version nachschaut.
In der Spalte J stehen Zahlen (=fortlaufende Nummern). Jeder Nr. ist genau ein Name zugeordnet, aber pro Name kann es mehrere Nummern geben. Die Zeilen sind aufsteigend nach Nummern sortiert, aber zwischendurch fehlen auch Nummern, weil die entsprechenden Datensätze nicht in diese Tabelle hinein gehören.
Gibt es irgendeine Verweis-Funktion o.ä., die in etwa wie folgt funktioniert:
Schau in Tabelle 1 in Spalte J, erste Zeile nach einer Nr., schau in Spalte C der gleichen Zeile nach dem entsprechenden Text. Dann geh in Tabelle 2, suche die entsprechende Nr. wie in Tabelle 1, und füge diesen Text in die Spalte C von Tabelle 2 zu der selben Nr. ein?
Vielen Dank für Eure Hilfe!
Bernhard
AW: Texte suchen und einfügen
Andre
Hi,
ich würd´s so versuchen, wobei es relativ lange dauert, aber du willst es ja nur ein Mal laufen lassen oder?

Sub test()
for i = 1 to 65536
for j = 1 to 65536
with sheets("Tabelle2")
if .range("J" & i).value = sheets("Tabelle1").range("J" & j).value then
.range("C" & i).value = sheets("Tabelle1").range("C" & j).value
end if
end with
next j
next i
End Sub

Gruß Andre
AW: Texte suchen und einfügen
Bernhard
Hallo Andre,
vielen Dank... aber wo schreib ich dieses Programm hin, in welche Zelle?
Grüße,
Bernhard
AW: Texte suchen und einfügen
Andre
Hi Bernhard,
erstmal als Hinweis, nimm ´ne Kopie deiner Datei zum Testen.
Über "Extras, Makro, Visuel-Basic-Editor" kommst du in den VBA-Editor, dort erstellst du ein Modul über "Einfügen, Modul".
In dieses Modul kopierst du jetzt diesen Code. Zum Ausführen den VBA-editor wieder schließen und über "Extras, Makro, Makros" Makro1 ausführen und schon sollte es loslegen.
Dann zurücklehnen und warten.
Gruß Andre
Anzeige
AW: Texte suchen und einfügen
Bernhard
Hi Andre,
danke... aber jetzt kommt runtime error 9: subscript out of range.
Und wenn ich auf debug klicke, ist With Sheets("Tabelle2") gelb und ein Pfeil
zeigt drauf.
Ich hab beide Tabellen ins temp Verzeichnis kopiert. Die alte mit den Namen heißt
Tabelle1.xls, die neue, wo die Namen rein sollen, heißt Tabelle2.xls.
Gruß,
Bernhard
Pack alles in EINE Tabelle...
Boris
Hi Bernhard,
...um die geposteten Codes laufen zu lassen, füge die Tabellen in einer Datei zusammen (Kopier einfach das eine Blatt rüber in die andere Datei).
Dann passe noch die Blattnamen an und starte den Code.
Grüße Boris
Anzeige
AW: Pack alles in EINE Tabelle...
Bernhard
Hi Boris,
okay, hab jetzt alles in Tablle2.xls kopiert.
Das Blatt, wo die Daten fehlen und rein müssen, heißt Blatt2.
Das andere, wo die Daten gesucht werden müssen, Blatt1.
Jetzt bräuchte ich nur noch die VBA-Syntax für die Blatt-Bezeichnungen...
Vielen Dank,
Bernhard
AW: Pack alles in EINE Tabelle...
Boris
Hi Bernhard,
sorry - aber ist das so schwer, aus "Tabelle1" und "Tabelle2" dann "Blatt1" und "Blatt2" zu machen, zumal ich das im Code schon auskommentiert habe...?
Option Explicit

Sub machs()
Dim wsAlt As Worksheet, wsNeu As Worksheet, R As Range
Dim C As Range, rngSuch As Range
Set wsAlt = Worksheets("Blatt1") 'hier stehen alle Daten
Set wsNeu = Worksheets("Blatt2") 'hier fehlen die Namen
Set rngSuch = wsAlt.Range("J:J") 'Spalte mit den fortlaufenden Nummern
With wsNeu
For Each R In .Range("J1:J" & .Range("J65536").End(xlUp).Row)
Set C = rngSuch.Find(R, lookat:=xlWhole)
If Not C Is Nothing Then R.Offset(0, -7).Value = C.Offset(0, -7).Value
Next R
End With
End Sub

Grüße Boris
Anzeige
AW: Pack alles in EINE Tabelle...
Bernhard
Hi Boris,
wow, super, ich danke Dir aufs herzlichste, es hat funktioniert!
Hab keine Ahnung von vba, und hatte aus ursprünglich "Tabelle2" "Tabelle2.Blatt2" bzw. "Tabelle2.Blatt1" gemacht, woraufs wieder nicht ging...
Aber nochmals vielen Dank, es hat gefunzt jetzt!
Viele Grüße,
Bernhard
Zu den Begrifflichkeiten...
Boris
Hi Bernhard,
...eine Datei / Mappe
...eine Tabelle / ein Blatt / ein Tabellenblatt / ein Sheet
;-))
Grüße Boris
AW: Texte suchen und einfügen
Boris
Hi Bernhard,
zu Gunsten einer besseren Performance (auch wenn der Durchlauf nur 1 mal stattfindet) würde ich die Find-Methode bevorzugen.
Mit Alt+F11 den VBA-Editor öffnen, über "Einfügen" ein Modul einfügen. In das rechte leere Fenster diesen Code reinkopieren, den Cursor mitten in den Code setzen und F5 zum Starten drücken (vorher allerdings noch die Blattnamen anpassen!!!):
Option Explicit

Sub machs()
Dim wsAlt As Worksheet, wsNeu As Worksheet, R As Range
Dim C As Range, rngSuch As Range
Set wsAlt = Worksheets("Tabelle1") 'hier stehen alle Daten
Set wsNeu = Worksheets("Tabelle2") 'hier fehlen die Namen
Set rngSuch = wsAlt.Range("J:J") 'Spalte mit den fortlaufenden Nummern
With wsNeu
For Each R In .Range("J1:J" & .Range("J65536").End(xlUp).Row)
Set C = rngSuch.Find(R, lookat:=xlWhole)
If Not C Is Nothing Then R.Offset(0, -7).Value = C.Offset(0, -7).Value
Next R
End With
End Sub

Grüße Boris
Anzeige
AW: Texte suchen und einfügen
Andre
Hi Boris,
so geht´s natürlich auch und sieht auch besser aus, nur ist das schon ein Level höher, dennoch eindeutig die elegantere Lösung.
Gruß Andre
AW: Texte suchen und einfügen
06.04.2004 14:39:44
Bernhard
Hi Boris,
vielen Dank für den Code.
Leider kommt auch hier runtime error 9: subscript out of range.
Und nach debug wird die 4.Zeile Deines Codes gelb und ein Pfeil steht davor.
Grüße,
Bernhard

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige