Office: suchen im Array

Helfe beim Thema suchen im Array in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe ein Array mit Werte von ca 30000 Zeilen und 3 Spalten gefüllt. Jetzt möchte ich aus dem Array in der ersten Spalte einen Wert suchen... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von HolN, 4. April 2012.

  1. suchen im Array


    Hallo,

    ich habe ein Array mit Werte von ca 30000 Zeilen und 3 Spalten gefüllt.

    Jetzt möchte ich aus dem Array in der ersten Spalte einen Wert suchen und mir den Index als Ergebnis liefern. Habe gedacht das es geht ohne eine Schleife und bin mit folgenden Code leider nicht weiter gekommen


    Sub test()

    Dim arrNrBezGef
    suchen = 300
    lz = Range("A1").End(xlDown).Row
    arrNrBezGef = Range("a1:c" & lz).Value

    erg = Application.Match(suchen, arrNrBezGef, 0)
    End Sub

    Hat jemand ein Tipp für mich

    danke + Gruß
    nolle

    :)
     
  2. Moin,

    Application.Match funzt nur in eindimensionalen Arrays.
    Versuch es mal so:

    Code:
     
    CitizenX, 5. April 2012
    #2
  3. HAllo Nolle

    Option Explicit

    Sub test()

    Dim arrNrBezGef As Variant
    Dim suchen
    Dim lz As Long
    Dim erg As Variant
    Dim arrTmp As Variant

    suchen = 300
    lz = Range("A1").End(xlDown).Row
    arrNrBezGef = Range("A1:C" & lz).Value
    arrTmp = WorksheetFunction.Index(arrNrBezGef, 0, 1) 'Spalte1
    erg = Application.Match(suchen, arrTmp, 0)

    If Not IsError(erg) Then
    MsgBox erg
    Else:
    MsgBox "nix gefunden"
    End If

    End Sub


    Ich habs nicht getestet, aber das Durchlaufen eines unsortierten Arrays ist (glaube ich) schneller als match().

    ransi
     
    ransi, 5. April 2012
    #3
  4. suchen im Array

    Hallo Steffen, hallo Ransi

    danke Euch für die schnelle Antwort.

    Steffen du schreibst
    Application.Match funzt nur in eindimensionalen Arrays

    wenn ich mir aber das Lokalfenster ansehe ist myArr aber ein 2 dim Array.
    Als Ergebnis bekomme ich Fehler 2042

    Ransi mit Deinem Code komme ich zu richtigen Ergebnis. Das Array ist sortiert.
    Leider weiss ich nicht warum ein arrTmp angelegt wird, kannst mir das vielleicht nochmal erklären

    Gruß
    nolle
     
  5. Beverly
    Beverly Erfahrener User
    Hi Nolle,

    ich bin zwar nicht ransi, aber da mich das Thema ebenfalls brennend interessiert und ich nach einer praktikablen Lösung gesucht habe, habe ich natürlich mitgelesen. arrTemp ist ein einspaltiges Array, in welches die betreffende Suchspalte aus dem mehrspaltigen Array übergeben wird. In diesem einspaltigen Array lässt sich dann mittels Match die Position des gesuchten Wertes problemlos ermitteln.

    Du könntest theoretisch bereits zu Beginn die Werte aus der Spalte A in ein zweites Array einlesen, wenn du dir sicher bist, dass du nur in dieser Spalte des Bereichs suchen willst. Allerdings ist die Übergabe aus dem mehrspaltigen Array wesentlich flexibler, da du dich auch später im Code z.B. in Abhängigkeit von irgendeiner Bedingung für eine bestimmte Spalte entscheiden kannst (falls das erforderlich sein sollte). Möglicherweise ist die Übernahme der Spalte aus dem Array auch schneller als aus dem Tabellenblatt (habe ich nicht getestet).


    suchen im Array grusz.gif
     
    Beverly, 5. April 2012
    #5
  6. HAllo

    Wie Steffen und Karin schon sagten:
    Application.Match() funktioniert nur in einspaltigen Arrays.
    arrTmp habe ich nur erstellt damit das Ganze etwas übersichtlich wird.
    Ohne arrTmp wäre das so:

    erg = Application.Match(suchen, WorksheetFunction.Index(arrNrBezGef, 0, 1), 0)

    Da kann man schonmal den Überblick verlieren ;-)

    Du schriebst:
    "Das Array ist sortiert."

    Dann gibt es eine richtig schnelle Suchroutine.
    Die funktioniert genauso wie Zahlenraten.
    Das Array wird solange halbiert bis der Wert gefunden wurde.
    Binäre Suche – Wikipedia

    Ich such mal den Code...

    ransi
     
    ransi, 5. April 2012
    #6
  7. Hallo

    das lag vermutlich daran ,dass ich dein Suchwert fälschlicherweise als String im Suchparameter eingegeben habe...
    Wenn du im Suchparameter nur die Zahl 300 eingibst sollte es laufen .

    hier noch eine Variante mit FIND die wesentlich schneller ist:


    Code:
     
    CitizenX, 5. April 2012
    #7
  8. suchen im Array

    Hallo Steffen,

    super. Muß mich jetzt nur noch entscheiden welche Version ich nehme. Die von Ransi oder von dir. Sind beide sehr schnell.
    Zum Suchen mit der Find Methode wird ja nicht einmal ein Array benötigt.

    Gruß
    nolle
     
Thema:

suchen im Array

Die Seite wird geladen...
  1. suchen im Array - Similar Threads - Array

  2. Mittelwert aus mehreren Spalten als dynamisches Array

    in Microsoft Excel Hilfe
    Mittelwert aus mehreren Spalten als dynamisches Array: Hallo liebes Forum, ich bin bei folgendem Problem ratlos: Ich berechne für verschiedene Dozenten Feedback anhand von 3 verschiedenen Kriterien. Die Stammdaten der Feedbacks stehen in einer...
  3. Adressen in eine Zelle bei Übereinstimmung eindeutiger Werte einer anderen Spalte

    in Microsoft Excel Hilfe
    Adressen in eine Zelle bei Übereinstimmung eindeutiger Werte einer anderen Spalte: Hallo zusammen, wer letzteren Thread kennt, hier eine Neuauflage. Problem: Aus Array-Berechnungen (Variablen von Let) ein weiteres Array zu erzeugen, welches für alle eindeutigen Werte aus G die...
  4. Zahlendubletten im Array

    in Microsoft Excel Hilfe
    Zahlendubletten im Array: Guten Morgen liebe Community, anbei ein vereinfachtes Beispiel der Problematik, da das Original mehrere LAMBDA-Funktionen und Tabellen mit einbezieht. Ich benötige die Lösung, um eine weitere...
  5. Array aus Excel Tabelle einlesen Word VBA

    in Microsoft Excel Hilfe
    Array aus Excel Tabelle einlesen Word VBA: Hallo, ich benötige in einer Word Datei die Werte einer Excel Datei. Ich würde gerne eine Spalte als Array einlesen. Wie das Array ein lesen in Excel geht weiß ich, aber wie schaffe ich den...
  6. Summenteilergebnis eines Arrays als Array darstellen

    in Microsoft Excel Hilfe
    Summenteilergebnis eines Arrays als Array darstellen: Hallo Community, Summenteilergebnis eines Arrays als Array darstellen. An dieser Stelle stecke ich fest. Ich habe eine Testmappe erstellt, die die Problematik versucht darzustellen. Bevor jemand...
  7. Formel bei Veränderung von dynamischem Array "mitziehen"?

    in Microsoft Excel Hilfe
    Formel bei Veränderung von dynamischem Array "mitziehen"?: Hallo liebes Forum, ich komme bei folgendem Problem nicht weiter und habe mir hier etwas Hilfe erhofft: Ich habe eine Tabelle mit Feedbacks zu Lehrgängen/Kursen. Diese will ich nach Dozent erst...
  8. Array-Funktion mit VBA in Zelle schreiben

    in Microsoft Excel Hilfe
    Array-Funktion mit VBA in Zelle schreiben: Hallo zusammen, ich bin begeisterter Nutzer der neuen Array-Funktionen in Excel 365. Ich möchte mit VBA so eine Funktion in eine Zelle schreiben. Bei "normalen" Formeln habe ich das immer so...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden