parkuhr
Goto Top

Tabellenabgleich tut nicht...

hallo zusammen,

ich habe folgendes problem: in einem excel file sind in tabelle 1 und 2 jeweils die spalte A mit teilebezeichnungen belegt. ziel meines makros sollte sein jede bezeichnung aus tabelle1 mit tabelle 2 zu vergleichen und bei einem matching den gesuchten begriff hinter die zeile in spalte B in tabelle 2 zu schreiben.
also: begriff in tabelle1 ist "abdeckschiene" gefundene matchings in tabelle2 sind "frontabdeckschiene" und "heckabdeckschiene" - dann sollten jeweils in spalte B hinter den beiden gefunden begriffen der hauptbegriff stehen.

mein bisheriges makro sieht folgenrdermaßen aus - es läuft zwar ohne fehlermeldung durch doch es tut nicht das was es soll...


Sub Makro4()
'
'
'
Dim x As Integer
Dim y As Integer
Dim z1 As Integer
Dim z2 As Integer
Dim V As String
Dim vari1 As String
Dim Namevari1 As String


Sheets("Tabelle1").Select
Columns("A:A").Select
Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
z1 = ActiveCell.Row
Sheets("Tabelle2").Select
Columns("A:A").Select
Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
z2 = ActiveCell.Row
For x = 1 To z1
Sheets("Tabelle1").Activate
vari1 = Range("A1").Offset(x - 1, 0)

For y = 1 To z2
Sheets("Tabelle2").Activate
Namevari1 = Range("A1").Offset(y - 1, 0)
V = InStr(1, Namevari1, vari1, 1)
If V <> "0" Then Range("B1").Offset(y - 1, 0) = vari1

Next y
Next x


End Sub


wäre um hilfe sehr dankbar da ich keine ahnung mehr hab an was es liegen könnte. (es schreibt den begriffe aus tabelle1 nicht hinter die matchings...)

Content-ID: 20588

Url: https://administrator.de/contentid/20588

Ausgedruckt am: 26.11.2024 um 15:11 Uhr

parkuhr
parkuhr 29.11.2005 um 13:59:32 Uhr
Goto Top
ich hab glaube inzwischen gefunden woran es liegt!
das makro schreibt wie gewollt die begriffe in spalte B - doch nach dem kompletten durchlauf werden die einträge in B wieder entfernt.
gibt es einen befehl der noch vor beendung des makros die datei speichert?

sollte nun nur noch an diesem kleinen befehl hängen

- danke schonmal für jegliche hilfe
halphas
halphas 30.11.2005 um 08:58:36 Uhr
Goto Top
Hallo parkuhr,

füg einfach den Befehl "ActiveWorkbook.Save" in dein script ein. Du solltest die entsprechende Arbeitsmappe vorher einmal abgespeichert haben.
parkuhr
parkuhr 01.12.2005 um 10:15:25 Uhr
Goto Top
hi

erst mal danke für den befehl - das dumme is nur das meine spalte B direkt nach der beendigung schleife gelöscht wird. also bringt es eher weniger wenns dannach gespeichert wird. wenn ich den befhel zwischen der bedingung und derm Next y schreibe wird die tabelle 200 * 3500 mal gespeichert - was ja auch nicht im sinne des erfinders is und außerdem der arbeitsrechenr nicht aushält.

langsam aber sicher glaub ich das mich excel ärgern will - da in meinem makro eindeutig KEINE anweisung zum köschen der spalte steht...
parkuhr
parkuhr 02.12.2005 um 08:49:24 Uhr
Goto Top
moinsen,
für alle die dies interessiert: ich habs geschafft!
der erste weg is etwas alternativ, da ich das eigentliche problem umgangen hab. da im letzten durchlauf immer die gesammte spalte B überschrieben wurde, habe ich in die quelldatei (tabelle1) als letzte zeile einen eindeutigen begriff geschrieben (bei mir ende1985)
damit die datei vor dem letzten überschreiben gespeichert wir schreibt man nun zwischen Next y und Next x eine bedingung die das ganze einfach seperat abspeichert:

Next y
If vari1 = "ende1985" then ActiveWorkbook.SaveCopyAs "C:\temp\....xls"
Next x


also habe ich das eigentliche überschreiben nicht gelöst sondern nur direkt vorher eine copy der datei erstellt. das hat mich dann aber wieder weitergebracht (bzw. ein kollege face-wink) das der ausstieg ja mit einer leeren zelle enden muss. das sollte nicht sein. also im grunde is das ganze viel einfach wenn mann die range z1 = ActiceCell.row mit einer "-1" versieht denn dann erkennt das makro den "aussteiger" (die leere zelle) lässt aber diese in ruhe und nimmt eben die richtige zelle vorher.
z1 = ActiveCell.row - 1

mehr wars nich... aber trotzdem danke an alle die mal einen gedanken dran verschwendet haben!