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

Schleife in Array

Schleife in Array
07.06.2006 15:26:18
Ulf
Hallo ihr Excelprofis
Ich frage in 8 Tabellen 1995 Zeilen ab nach 20 verschieden Nummern.
kann mann die 20 Nummern nicht in ein Array einlesen um sie dann abzufragen
reduziert die Schleifendurchläufe von ca 320000 auf 16000.
Option Explicit

Sub ZeitAAAWeichen()
Dim i As Integer
Dim x As Integer
Dim IHvar As Variant
Dim Mytag As String
Dim Tbb As Integer
For x = 2 To 21  'diese Schleife ins Array
IHvar = Sheets(9).Cells(x, 11).Value
For Tbb = 1 To 8
For i = 6 To 2001
If Sheets(Tbb).Cells(i, 8) = IHvar Then
Mytag = Mytag & Sheets(Tbb).Cells(i, 4) & vbCr
End If
Next i
Next Tbb
Next x
MsgBox Mytag
End Sub

im voraus vielen Dank
mfg Ulf

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife in Array
07.06.2006 16:19:00
Erich
Hallo Ulf,
zwei Varianten:
Die erste Prozedur arbeitet mit Find, vermutlich um Einiges schneller.
Bei der anderen werden die Suchbegriffe in einen String geschrieben,
dann wird darauf InStr angewandt. Ist nicht unbeingt schneller als deine Variante.
Getestet sind beide noch nicht.
Option Explicit
Sub ZeitAAAWeichen3()
Dim i As Integer
Dim x As Integer
Dim IHvar As String
Dim Mytag As String
Dim Tbb As Integer
Dim rngGef As Range, lngErst As Long
For x = 2 To 21
IHvar = Sheets(9).Cells(x, 11).Value
For Tbb = 1 To 8
With Range(Worksheets(Tbb).Cells(6, 8), Worksheets(Tbb).Cells(2001, 8))
Set rngGef = .Find(What:=IHvar, _
LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If Not rngGef Is Nothing Then
lngErst = rngGef.Row
Do
Mytag = Mytag & Sheets(Tbb).Cells(rngGef.Row, 4) & vbCr
Set rngGef = .FindNext(rngGef)
Loop While Not rngGef Is Nothing And rngGef.Row > lngErst
End If
End With
Next Tbb
Next x
MsgBox Mytag
End Sub
Sub ZeitAAAWeichen2()
Dim i As Integer
Dim x As Integer
Dim IHvar As String
Dim Mytag As String
Dim Tbb As Integer
IHvar = "#"
For x = 2 To 21  ' Werte von Sheets(9) in einen String
IHvar = IHvar & Sheets(9).Cells(x, 11).Value & "#"
Next x
For Tbb = 1 To 8
For i = 6 To 2001
If InStr(IHvar, "#" & Sheets(Tbb).Cells(i, 8) & "#") > 0 Then
Mytag = Mytag & Sheets(Tbb).Cells(i, 4) & vbCr
End If
Next i
Next Tbb
MsgBox Mytag
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Schleife in Array
07.06.2006 16:25:25
Ulf
Hallo Erich
Die Variante mit find kannte ich schon aber die zweite gefällt mir ganz gut.
Sie geht um einiges schneller und ich habe was gelernt.
Danke
mfg Ulf
AW: Schleife in Array
07.06.2006 16:28:07
u_
Hallo,
um die Schleifen kommst du nicht herum. Anstatt in den Tabellen solltest du aber in Arrays suchen. Ist das schnellste.

Sub ZeitAAAWeichen()
Dim i As Integer
Dim x As Integer
Dim Tbb As Integer
Dim IHvar As Variant
Dim Mytag As String
IHvar = Sheets(9).Range("K2:K21")
For Tbb = 1 To 8
Dim myArray
myArray = Sheets(Tbb).Range("D6:H2001")
For x = 1 To UBound(IHvar, 1)
For i = 1 To UBound(myArray, 1)
If myArray(i, 5) = IHvar(x, 1) Then
Mytag = Mytag & myArray(i, 1) & vbCr
End If
Next i
Next x
Next Tbb
MsgBox Mytag
End Sub

Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
Anzeige
AW: Schleife in Array
07.06.2006 16:34:51
Ulf
Hallo
im Range suchen geht wirklich schneller.
Danke werde mir was zurechtbasteln.
mfg Ulf
AW: Schleife in Array
07.06.2006 16:36:51
u_
Hallo,
du meintest wohl im Array, nicht im Range ;-)
Gruß
Geist ist geil!
(Dies ist ein allgemeines Statement und nicht an bestimmte Personen gerichtet.)
AW: Schleife in Array
07.06.2006 16:41:53
Ulf
Hallo
du hast schon recht
du hast einem Array einen Range zugewiesen.
ich hatte immer über eine Schleife jede einzelne Zelle ins Array geschrieben.
mfg Ulf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige