Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

array schnell auslesen werte finden wie ??

Betrifft: array schnell auslesen werte finden wie ?? von: chris b.
Geschrieben am: 09.04.2008 13:02:32

Hallo VBA Profis,
habe eine frage und hoffe ihr könnt mir helfen.
Habe eine Makro in denm ich ein gefülltes array habe.
Jetzt möchte ich aus diesem Array werte suchen die ich in einer zelle habe.
Wie kann ich am schnellsten einen Wert in einem Array finden ?
Habe es momentan mit 2 schleifen gelöst dauert aber ziemlich lange weil beide schleifen sehr groß sind.
ca. 1500 einträge jeweils.

For i = 0 To UBound(ListArray1)
For ii = 1 To x1 - 2

Vielen dank für euer Hilfe gruß Chris

  

Betrifft: AW: noch offen von: chris b.
Geschrieben am: 09.04.2008 13:20:05

Was soll das ?


  

Betrifft: AW: array schnell auslesen werte finden wie ?? von: Renee
Geschrieben am: 09.04.2008 13:27:56

Hi Chris,

Was soll das ? Was denn?
in denm ich ein gefülltes array habe.
Ob ein Array gefüllt ist oder leer, spielt so ziemlich keine Rolle.
Habe es momentan mit 2 schleifen gelöst d
Wieso 2 Schleifen? ist es ein mehrdimensionales Array ?
dauert aber ziemlich lange
Bei 1500 einträgen geht das bei meinem (nicht sehr schnellen) Rechner nicht mal 0.1sec

Ich versteh diese Anfrage nicht!
GrreetZ Renée


  

Betrifft: AW: array schnell auslesen werte finden wie ?? von: chris b.
Geschrieben am: 09.04.2008 13:44:15

Ist auch etwas kompliziert.
Ich möchte lediglich wissen wie ich z.b den wert "test" in einem Array finde.
also position des eintrages.
Kann es nicht besser erklären.


  

Betrifft: AW: array schnell auslesen werte finden wie ?? von: Renee
Geschrieben am: 09.04.2008 13:52:47

Hi Chris,

Ich möchte lediglich wissen wie ich z.b den wert "test" in einem Array finde.
Na ja, indem du den Array index by index durchsuchst, bis du ihn gefunden hast.
Also nach Schema F:

For ix = 0 to UBound(MeinArray)
   If MeinArray(ix) = "Test" Then 
        Msgbox "Da is er: " & ix
        Exit for
   End If
Next ix



GreetZ Renée


  

Betrifft: AW: array schnell auslesen werte finden wie ?? von: chris b.
Geschrieben am: 09.04.2008 14:00:27

danke so habe ich es auch.
das dauert aber sehr lange bei meinen vielen datensätzen.
versuche es noch einmal.
danke schon einmal


  

Betrifft: AW: array schnell auslesen werte finden wie ?? von: Renee
Geschrieben am: 09.04.2008 14:26:10

Hi Chris,

versuche es noch einmal.
Du kannst es noch lange versuchen. Es gibt nix anderes. Glaub mir.

Wenn ich einige deiner Codefragmente weiter unten analysiere kann ich dir nur raten:
Besuch einen Programmierungs-Grundlagen-Kurs oder warte bis die ersten Quantencomputer auf dem Markt sind.

GreetZ Renée


  

Betrifft: AW: array schnell auslesen werte finden wie ?? von: chris b
Geschrieben am: 09.04.2008 16:32:54

?? Würd emich wirklich sehr freuen wenn du mir ein paar tipps geben könntest was nicht sooo ok ist.
Auch wenn es nur kleine stichpunkte sind.
An die ich mich beim nächsten mal halten kann.
Wäre wirklich super !
Vielen Dank

P.s ich hatte noch nie einen Kurs.
Danke


  

Betrifft: AW: array schnell auslesen werte finden wie ?? von: Rudi Maintaire
Geschrieben am: 09.04.2008 14:28:35

Hallo,
schneller geht's nicht.
Das geht doch selbst in diesem Bsp. in 0,5 Sekunden:
2 Arrays mit 1500 Elementen, Übereinstimmung erst an der letzten Pos.=2.250.000 Tests

Sub tt()
   Dim x As Long, y As Long, arrTest1(1 To 1500), arrTest2(1 To 1500), t
   
   For x = 1 To 1499
      arrTest1(x) = "x"
      arrTest2(x) = "y"
   Next x
   
   t = Timer
   arrTest1(1500) = "test"
   arrTest2(1500) = "test"
   
   For x = 1 To UBound(arrTest1)
      For y = 1 To UBound(arrTest2)
         If arrTest1(x) = arrTest2(y) Then
            MsgBox x & "/" & y & vbLf & Timer - t
         End If
      Next
   Next
   
End Sub


Gruß
Rudi

Eine Kuh macht Muh, viele Kühe machen Mühe


  

Betrifft: AW: array schnell auslesen werte finden wie ?? von: chris b
Geschrieben am: 09.04.2008 16:29:39

Danke Rudi.
Werde ich morgen mal testen.
Vielen Dank


  

Betrifft: AW: array schnell auslesen werte finden wie ?? von: MichaV
Geschrieben am: 09.04.2008 19:41:52

Hi Chris,

wenn das Array sortiert ist, kann man die Suche ggf. beschleunigen.

Naja, der Rest wurde ja schon gesagt.

Gruß- Micha

PS: und lass Dich nicht entmutigen. Jede(r) hat mal angefangen, und wenn jede(r) zum Kurs gehen würde, gäbe es dieses Forum nicht.


  

Betrifft: AW: array schnell auslesen werte finden wie ?? von: chris b
Geschrieben am: 09.04.2008 20:13:25

Danke für dein verständniss:(
Ich weiß halt auch nicht was ich falsch mache.
Wenn so kommentare kommen wie vorhin .. mach nen kurs.
Dann sehe ich ja meine fehler nicht :8
Finde ich schade das er mir das zumindest nicht geschrieben hat.
Danke Dir und schönen Abend !


  

Betrifft: AW: array schnell auslesen werte finden wie ?? von: Daniel
Geschrieben am: 09.04.2008 21:17:17

HI

leider können wir deinen Fehler auch nicht sehen, dazu müsstest du schon deine Datei oder zumindest mal einen aussagekräftigen Teil von deinem Code hochladen.
nur einfach so Vermutungen ins Blaue hinein zu machen, ohne Daten und Code zu kennen ist nicht besonders sinnvoll.

Ansonsten ist es tatsächich so, das VBA beim Arbeiten mit Array-Variablen so schnell ist, daß die einfache Schleifenlösung oft die beste ist, oft auch schneller als die fest programmierten Excel-Funktionen wie z.B. FIND (die kann ja im Prinzip auch nichts anderes machen, als alle einzelnen Werte auf Übereinstimmung zu prüfen)

Gruß, Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "array schnell auslesen werte finden wie ??"