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

find Aufruf auf dynamische Range

find Aufruf auf dynamische Range
27.08.2003 11:56:05
Alex
Hallo erstmal,

ich hab da ein kleines Problem,bzw das Anliegen ein bestehendes Makro zu beschleunigen.

erstmal mein Code:


Sub AllIn_Rohstoffpreise_GLOBAL()
Dim artnr As String
Sheets("Tabelle1").Select
Range("a22").Select
Do Until (ActiveCell = "EOF")
artnr = ActiveCell
preis = Selection.offSet(0, 4)
Sheets("Tabelle2").Select
Range("g:g,dc:dc").Select
With Selection
Set found = .Find(what:=artnr, lookat:=xlWhole)
foundfirst = found.Address
If Not found Is Nothing Then
Do
found.Activate
found.offSet(0, 5) = preis
Set found = .FindNext(found)
Loop While found.Address <> foundfirst
Else
End With
End If
End With
Sheets("Tabelle1").Select
Selection.offSet(1, 0).Select
Loop
End Sub


Folgendes: in einer Tabelle ( 65000 Zeilen und ein paar Zerquetschte mal 2 Spalten) enthalten sich wiederholende Nummern(insgesamt ca 360 unterschiedliche).Nun würde ich gern bereits abgearbeitete Nummern aus der Range herrausnehmen. Das sollte am besten gleich nach dem .find(what:=artnr,lookat:=xlWhole) Aufruf geschehen.

Momentan dauert das ganze 42 Minuten auf einem P4 2,2.

vielen Dank im Vorraus,Gruß Alex

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: find Aufruf auf dynamische Range
27.08.2003 12:01:45
K.Rola
Hallo,

was hat das für einen Sinn:

Do
found.Activate'----das ist gemeint?
found.offSet(0, 5) = preis
Set found = .FindNext(found)
Loop While found.Address <> foundfirst

Was passiert mit der aktivierten Zelle, das ist in deinem Code
nicht ersichtlich.

Gruß K.Rola
AW: find Aufruf auf dynamische Range
27.08.2003 12:12:04
Alex
der Code tut folgendes

- Aktiviere die Zelle deren Eintrag mit dem Suchbegriff übereinstimmt
- 5 Zellen links von der eben aktivierten Zelle schreibe den Preis (vorher gegeben)
- setzte das found Objekt auf findnext(found) also suche weiter bis zum nächsten Treffer
- und Schlussendlich : tue das ganze Solang bis die Adressen der aktuellen und der vorhergagangenen Suche gleich sind, dann nämlich findet er wieder den 1. Suchtreffer
Anzeige
AW: find Aufruf auf dynamische Range
27.08.2003 12:17:03
K.Rola
Hallo,

um den Wert zu schreiben ist es nicht nötig, die Zelle zu aktivieren,
das macht deinen Code so langsam. Lass das found.Activate einfach weg.

Gruß K.Rola
AW: find Aufruf auf dynamische Range
27.08.2003 12:25:50
Alex
Dankeschön.

Hast du auch ne Idee wie man den Suchbereich so verändern,dass jemehr Suchbegriffe abgearbeitet wordensind,desto kleiner wird der Suchbereich.Also
Zb. suche alles zw. 1 und 400 auf der ganzen Range,dann nach dem die ersten 50 gefunden worden sind,suche 51-400 auf der Range, exklusive der Bereiche die schon durchsucht und gefunden wurden ?
AW: find Aufruf auf dynamische Range
27.08.2003 12:34:40
K.Rola
Hallo,

die Find- Methode ist so extrem schnell, dass du den Unterschied
nich merken würdest. Wenns immernoch zu langsam ist, liegts
daran auf keinen Fall.

Lad die Datei ggf. hoch.

Gruß K.Rola
Anzeige
AW: find Aufruf auf dynamische Range
27.08.2003 12:51:50
alex
Hmmm... die Datei hochladen ist schwierig :)

ich werd das gleich mal ausprobieren und meld mich in spätestens 42 minuten wieder.

gruss alex.
AW: find Aufruf auf dynamische Range
27.08.2003 13:24:53
alex
50 % bessere Laufzeit ... WOW

1000 Dank,Karola

Gruss Alex
AW: find Aufruf auf dynamische Range
27.08.2003 14:32:43
K.Rola
Hallo,

du kannst das noch beschleunigen:


Sub Strickmuster()
Dim oldState As Long
With Application
oldState = .Calculation
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
On Error GoTo ENDE
''Hier dein Code
ENDE:
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = oldState
End With
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige