Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Excel VBA-Code optimieren
#1
Hallo zusammen

hab folgenden Code geschrieben, siehe angehängte Datei, es werden zwei Tabellen verglichen und die fehlenden Daten in Tabelle 1 geschrieben, soweit funktioniert der Code, aber bei größeren Daten (ca. 10000 Zeilen) läuft der Code extrem lang.
Nun bin ich auf der Suche ob mir jemand Helfen kann diesen Code zu optimieren, wäre für die Hilfe sehr Dankbar.

Gruß

Flado


Angehängte Dateien
.xlsm   Tabellevergleich_fehlende Werte übertragen.xlsm (Größe: 16,69 KB / Downloads: 4)
to top
#2
Hallo,

in deiner Beispieldatei ist in der Tabelle2 ein Auftragswert doppelt vorhanden. Die unterscheiden sich nur durch die weiteren Spalten. Was soll in solchen Fällen geschehen?

Code:
Sub prcTreffer()
   Dim lngC As Long
   Dim rngTreffer As Range
   Dim strAdresse As String
    
   With Worksheets("Tabelle2")
      For lngC = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
         Set rngTreffer = Worksheets("Tabelle1").Columns(1).Find(.Cells(lngC, 1), LookIn:=xlValues, lookat:=xlWhole)
         If Not rngTreffer Is Nothing Then
            strAdresse = rngTreffer.Address
            Do
               If IsEmpty(rngTreffer.Offset(, 2).Value) Then .Cells(lngC, 2).Resize(, 2).Copy rngTreffer.Offset(, 2)
               Set rngTreffer = Worksheets("Tabelle1").Columns(1).FindNext(rngTreffer)
            Loop While strAdresse <> rngTreffer.Address
         End If
      Next lngC
   End With
End Sub
Gruß Stefan
Win 7 / Office 2007
to top
#3
Hallo

das war mein Fehler Auftragsnummer können in der Liste die wo ich bearbeite nicht vorkommen, muss deswegen nicht berücksichtig werden.

Danke für den Code werden ich dann mal Testen.

Gruß

Michael
to top
#4
Hallo Michael,

ich interpretiere mal das der Satz

Zitat:doppelte Auftragsnummer können in der Liste die wo ich bearbeite nicht vorkommen

hätte lauten sollen. Da brauche ich dann nicht mehr die zusätzlichen Abfragen zu machen und kürze den Code ein wenig.

Code:
Sub prcTreffer()
   Dim lngC As Long
   Dim rngTreffer As Range
    
   With Worksheets("Tabelle2")
      For lngC = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
         Set rngTreffer = Worksheets("Tabelle1").Columns(1).Find(.Cells(lngC, 1), LookIn:=xlValues, lookat:=xlWhole)
         If Not rngTreffer Is Nothing Then
            .Cells(lngC, 2).Resize(, 2).Copy rngTreffer.Offset(, 2)
         End If
      Next lngC
   End With
End Sub
Gruß Stefan
Win 7 / Office 2007
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Excel Tabellen mit VBA Code in PDF speichern Sykora 1 45 Gestern, 14:44
Letzter Beitrag: snb
  Dropdownliste mit Suchfunktion optimieren Energizer123 6 132 21.10.2016, 12:56
Letzter Beitrag: Energizer123
  Excel Power Map Karte Code für den Web Browser? exel_love 4 268 18.08.2016, 14:55
Letzter Beitrag: schauan
  Per VBA Code mehrere Excel Zellen kopieren und in ein Browserfenster einfügen holger m. 2 377 06.07.2016, 17:22
Letzter Beitrag: schauan
  Summe optimieren Kollege_Kuno 21 1.225 17.03.2016, 19:08
Letzter Beitrag: Kollege_Kuno
  Webinhalte über QR-Code in Excel myc0re 5 528 14.03.2016, 11:00
Letzter Beitrag: myc0re
  Excel 2007 VBA-Code "leere Zelle soll Bitte Name eingeben beinhalten" Peter123 3 700 12.12.2015, 21:03
Letzter Beitrag: schauan
  Excel 2013 VBA-Projekt - Code analysieren sharky51 7 1.397 08.12.2015, 16:39
Letzter Beitrag: RPP63
  VBA code an Excel 2007 anpassen Christoph 1 597 19.10.2015, 16:16
Letzter Beitrag: schauan
  VBA-Code läuft unter Excel 2007 und 2010, aber nicht unter 2013! Glausius 2 1.528 21.07.2015, 12:37
Letzter Beitrag: Glausius

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste