Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Tabellenabgleich tut nicht...

Frage Entwicklung VB for Applications

Mitglied: parkuhr

parkuhr (Level 1) - Jetzt verbinden

29.11.2005, aktualisiert 02.12.2005, 3801 Aufrufe, 4 Kommentare

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...)
Mitglied: parkuhr
29.11.2005 um 13:59 Uhr
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
Bitte warten ..
Mitglied: halphas
30.11.2005 um 08:58 Uhr
Hallo parkuhr,

füg einfach den Befehl "ActiveWorkbook.Save" in dein script ein. Du solltest die entsprechende Arbeitsmappe vorher einmal abgespeichert haben.
Bitte warten ..
Mitglied: parkuhr
01.12.2005 um 10:15 Uhr
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...
Bitte warten ..
Mitglied: parkuhr
02.12.2005 um 08:49 Uhr
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 ) 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!
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Microsoft Office
IF-Funktion, die nichts tut bei false (12)

Frage von Stoffn zum Thema Microsoft Office ...

Router & Routing
gelöst Problem: Fritzbox tut in Sachen FTP was sie will! (10)

Frage von mariobeh zum Thema Router & Routing ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...