Top-Themen

Aktuelle Themen (A bis Z)

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
GELÖST

Excel Makro - 2 Tabellen vergleichen und Matches markieren

Frage Entwicklung VB for Applications

Mitglied: tommygun

tommygun (Level 1) - Jetzt verbinden

15.12.2008, aktualisiert 16.12.2008, 20496 Aufrufe, 5 Kommentare

der Code ist fertig, irgendwie fängt er sich leider in einer Endlosschleife

Hallo, ich habe eine .xls-Datei, die hat 2 Tabellenblätter.
Die Blätter sind hier in den Variablennamen schon drin also: Blatt_Bestandsdaten ist ein String (da liegt der Fehler also nicht ^^)
Anfangen soll der Vergleich ab Zeile 5 auf jedem Sheet
Und er vergleicht nur Spalte A aus Bestand mit Spalte A aus Abgang
wenn er was gleiches findet soll er den Wert aus dlgLBS.ComboBox1 in Spalte T aus Bestand schreiben

01.
   ' Abgänge mit Blatt Gesamtbestand vergleichen anhand Versicherungsnummer und einfügen des Quartals unter 'Abgang' 
02.
   ' nicht gefundene Versicherungsnummern werden in das Blatt "VNR nicht gefunden" kopiert 
03.
     For Zeile = 5 To Sheets(Blatt_Bestandsdaten).Range("A65536").End(xlUp).Row     ' Versicherungsnummer aus Bestandsdaten 
04.
     For Suchzeile = 5 To Sheets(Blatt_Abgang).Range("A65536").End(xlUp).Row        ' Versicherungsnummer aus Abgang 
05.
         If Sheets(Blatt_Abgang).Cells(Suchzeile, 1) = Sheets(Blatt_Bestandsdaten).Cells(Zeile, 1) Then 
06.
            Sheets(Blatt_Bestandsdaten).Cells(Zeile, 20) = dlgLBS.ComboBox1.Value 
07.
         End If 
08.
     Next Suchzeile 
09.
     Next Zeile
aber irgendwas stimmt jetzt nicht, er fängt sich in einer Endlosschleife.
Die Datensätze sind ca 15000 zu 3000 also nicht soviel...

Außerdem wenn das läuft, soll es die Werte aus Abgang, die nicht gefunden werden können in eine neue Tabelle einfügen.

Für Hilfe wäre ich sehr dankbar.
mfg tommy
Mitglied: StefanKittel
15.12.2008 um 01:19 Uhr
Hallo,

stell doch erstmal mit zwei Variablen sicher, dass die Beiden Fors einen gültigen Bereich haben.
Laut Deinen Zahlen muss Excel hier ca. 45.000.000 (15000*3000) Einträge vergleichen. Ist das richtig?
Excel ist nicht wirklich schnell!

Mach das ganze doch intelligenter.
Sortiere beide Tabellen (notfalls in einem anderen Bereich oder Blatt). Dann kanns Du beide viel effektiver (und auch schneller) vergleiche.

Deine Variante wäre Bubblesort. Meine Quicksort

Stefan
Bitte warten ..
Mitglied: Iwan
15.12.2008 um 12:02 Uhr
guten morgen,

um die Suche zu beschleunigen, würde ich die 3.000 Daten in den 15.000 suchen
wenn einer der 3.000 Sätze gefunden wurde, dann wird die Zelle (in beiden Tabellen?) grün markiert
wird es nicht gefunden, dann wird die Zelle rot markiert
(getestet mit Excel 2003 SP3, ncith schön aber funktioniert)
01.
Dim Blatt_Abgang As String, ZeilAb As String 
02.
Dim Blatt_Bestandsdaten As String, ZeilBe As String 
03.
Sub SuchenUndMarkieren() 
04.
ZeilAb = 4 
05.
Blatt_Abgang = "Tabelle1" 
06.
Blatt_Bestandsdaten = "Tabelle2" 
07.
 
08.
Start: 
09.
ZeilBe = 4 
10.
Sheets(Blatt_Abgang).Select 
11.
ZeilAb = ZeilAb + 1 
12.
Cells(ZeilAb, 1).Select 
13.
If Cells(ZeilAb, 1) = "" Then GoTo Ende 
14.
With Selection.Interior 
15.
    .ColorIndex = 3 
16.
End With 
17.
 
18.
Suchen: 
19.
ZeilBe = ZeilBe + 1 
20.
If Sheets(Blatt_Bestandsdaten).Cells(ZeilBe, 1) = "" Then GoTo Start 
21.
If Cells(ZeilAb, 1) = Sheets(Blatt_Bestandsdaten).Cells(ZeilBe, 1) Then 
22.
    With Selection.Interior 
23.
        .ColorIndex = 4 
24.
    End With 
25.
    GoTo Start 
26.
End If 
27.
GoTo Suchen 
28.
     
29.
Ende: 
30.
End Sub
Bitte warten ..
Mitglied: tommygun
15.12.2008 um 12:53 Uhr
Hallo, ich habe mich anfangs falsch ausgedrückt mit dem Markieren.
Ich habe den Code von dir Oliver getestet, er funktioniert, ist aber nicht schneller als meiner
Meiner funktioniert auch (nachdem ich den hab mal durchrasseln lassen, was 3 Minuten gedauert hat)
Aber jetzt steh ich vor folgendem Problem:
01.
     Blatt_VNR_NA = "VNR nicht gefunden" 
02.
     Dim i As Long 
03.
     i = Sheets(Blatt_VNR_NA).Range("A65536").End(xlUp).Row + 1 
04.
     For Zeile = 5 To Sheets(Blatt_Bestandsdaten).Range("A65536").End(xlUp).Row        ' Versicherungsnummer aus Bestandsdaten 
05.
        For Suchzeile = 5 To Sheets(Blatt_Abgang).Range("A65536").End(xlUp).Row        ' Versicherungsnummer aus Abgang 
06.
            If Sheets(Blatt_Abgang).Cells(Suchzeile, 1) = Sheets(Blatt_Bestandsdaten).Cells(Zeile, 1) Then 
07.
               Sheets(Blatt_Bestandsdaten).Cells(Zeile, 20) = dlgLBS.ComboBox1.Value                        ' Quartal eintragen 
08.
               Sheets(Blatt_Bestandsdaten).Cells(Zeile, 18) = Sheets(Blatt_Abgang).Cells(Suchzeile, 7)      ' Endbeitrag Ab eintragen 
09.
            Else 
10.
               Sheets(Blatt_VNR_NA).Cells(i, 1) = Sheets(Blatt_Abgang).Cells(Suchzeile, 1)                  ' VNR eintragen 
11.
               Sheets(Blatt_VNR_NA).Cells(i, 2) = Sheets(Blatt_Abgang).Cells(Suchzeile, 7)                  ' Endbeitrag Ab eintragen 
12.
               Sheets(Blatt_VNR_NA).Cells(i, 3) = dlgLBS.ComboBox1.Value                                    ' Quartal eintragen 
13.
               i = i + 1 
14.
            End If 
15.
        Next Suchzeile 
16.
     Next Zeile
ich möchte das die Einträge aus Abgängen (3000) in die Blatt_VNR_NA übernommen werden, die nicht in den 15000 auftauchen
er macht mir mit dem Code, den ich hier gepostet habe aber totalen Mist, er schreibt in Blatt_VNR_NA viel zuviele Einträge.
Ich denke das liegt an meinen falschen Einträgen, was i angeht, das muss sicher irgendwie anders in die For-Schleifen gebastelt werden, ich hab aber keine Ahnung wohin.
i soll außerdem die erste freie Zeile in Blatt_VNR_NA sein, da der hier genannte Code mit jedem Quartal ausgeführt wird, also mehrmals, ich denke, das passt aber soweit

Bitte helft mir irgendwie das i noch richtig zu verstauen, so dass er das macht, was er soll
Bitte warten ..
Mitglied: tommygun
16.12.2008 um 19:44 Uhr
Falls es noch jemanden nach mir interessiert, oder es jemand als Anreiz braucht, ich habe das Problem gelöst und zwar wie folgt:
01.
   ' Abgänge mit Blatt Gesamtbestand vergleichen anhand Versicherungsnummer und einfügen des Quartals unter 'Abgang' 
02.
   ' nicht gefundene Versicherungsnummern werden in das Blatt "VNR nicht gefunden" kopiert 
03.
     Blatt_VNR_NA = "VNR nicht gefunden" 
04.
     Dim i As Long 
05.
     Dim pruef As Integer 
06.
     i = Sheets(Blatt_VNR_NA).Range("A65536").End(xlUp).Row + 1 
07.
     For Zeile = 5 To Sheets(Blatt_Abgang).Range("A65536").End(xlUp).Row                                    ' Versicherungsnummer aus Abgang 
08.
        pruef = 0 
09.
        For Suchzeile = 5 To Sheets(Blatt_Bestandsdaten).Range("A65536").End(xlUp).Row                      ' Versicherungsnummer aus Bestandsdaten 
10.
            If Sheets(Blatt_Abgang).Cells(Zeile, 1) = Sheets(Blatt_Bestandsdaten).Cells(Suchzeile, 1) Then 
11.
               Sheets(Blatt_Bestandsdaten).Cells(Zeile, 20) = dlgLBS.ComboBox1.Value                        ' Quartal eintragen 
12.
               Sheets(Blatt_Bestandsdaten).Cells(Zeile, 18) = Sheets(Blatt_Abgang).Cells(Zeile, 7)          ' Endbeitrag Ab eintragen 
13.
               pruef = 1 
14.
            End If 
15.
        Next Suchzeile 
16.
        If pruef = 0 Then 
17.
           Sheets(Blatt_VNR_NA).Cells(i, 1) = Sheets(Blatt_Abgang).Cells(Zeile, 1)                          ' VNR eintragen 
18.
           Sheets(Blatt_VNR_NA).Cells(i, 2) = Sheets(Blatt_Abgang).Cells(Zeile, 7)                          ' Endbeitrag Ab eintragen 
19.
           Sheets(Blatt_VNR_NA).Cells(i, 3) = dlgLBS.ComboBox1.Value                                        ' Quartal eintragen 
20.
           i = i + 1 
21.
        End If 
22.
     Next Zeile
Ist mir heute morgen direkt nach dem Aufstehen eingefallen.
Vielen Dank für die Ideen und die Hilfe,
mit freundlichem Gruß
tommy
Bitte warten ..
Mitglied: cicero
04.04.2009 um 18:19 Uhr
Moin,

habe ein ähnliches Problem dass ich per Makro lösen möchte. Kann mir einer von euch den kompletten Quelltext zur verfügung stellen?

Danke!

Gruß
Christoph
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Vergleich von 2 Tabellen in Excel
gelöst Frage von abuelitoMicrosoft Office4 Kommentare

Hallo an Alle, folgendes Problem: Ich habe eine Exceldatei mit 2 Tabellen. Spalten sind identisch. Tabelle1 hat aktuelle Daten ...

Microsoft Office
Excel Tabelle Preise vergleichen
gelöst Frage von klaus1985Microsoft Office4 Kommentare

Hallo Ich hoffe mir kann einer bei diesem Problem behilflich sein . Ich bekomme jeden Tag von zwei Lieferanten ...

Microsoft Office
Excel Tabellen Vergleich
gelöst Frage von Dr.CornwallisMicrosoft Office1 Kommentar

Liebe Gemeinde, ich habe einen VBA Code, dieser vergleicht eine Spalte mit anderen Spalten aus anderen Blättern. Verglichen wird ...

VB for Applications
Exceltabelle mit anderen 2 tabellen vergleichen
gelöst Frage von 123660VB for Applications12 Kommentare

Hallo zusammen! Ich stehe vor folgendem Problem und bräuchte wieder eure Hilfe. In Excel 2010 muss ich Tabelle 1 ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 4 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 8 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 8 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 11 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...