Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
VBA: Suche Wert und Position in zweidimensionalen Array
#1
Question 
Hallo Leute! Shy

Ich hätte da eine Frage üb er mehrdimensionale Arrays:

Folgender Fall:

In einer zweidimensionalen Array namens "arr_lager" steht in der 1. Dimension (oder 1. Spalte) die Lagerort bzw. die Lagernummern (die Lager sind nummeriert: 101, 102, 103 etc.); in der 2. Dimension (oder 2.Spalte) stehen die Bestände der jeweiligen Lager.
Ich möchte nun herausfinden, in welchem Lager der höchste Bestand ist und danach der zweihöchste etc.

Mit „WorksheetFunction.Large(arr_lager,1) konnte ich den höchsten (und zweithöchsten etc.) Bestand ermitteln, aber es sagt mir nicht, wo in der Array (also auf welcher Position) der höchste Bestand ist und somit kann ich nicht die Lagernummer ermitteln. Huh

Da wäre noch die Sache, dass ich zu jeder Lagernummer hinten ein "." setzen musste, damit es nicht von VBA als Zahl interpretiert wurde; sonst wären immer die Lagernummern der höchste Wert gewesen. Sad
Falls jemand auch dazu eine Lösung hat, würde ich auch das gerne wissen...   Wink

Zurück zum Thema:
Gibt es vielleicht andere WorksheetFunctions um diese Lagernummern schnell und ohne großen Aufwand (Schleifen etc.) zu ermitteln?
 
Leider ist für mich Arrays und die WorksheetFunctions Neuland und ich kenne mich da nicht so gut aus.

Ich freue mich auf jede Antwort. Big Grin
 
LG,
 
sacoma Wink
Zitieren
#2
Hallöchen,

du brauchst eigentlich die Spalte mit den Beständen und die Spalte mit den Lagernummern getrennt.
Ja ... auch das ist, jedes für sich, bereits ein 2-dimensionales Array ... Shy

Dann so ...

Code:
Sub Listen()
Dim arr_Lager As Variant
Dim arr_Bestand As Variant

arr_Lager = Me.Range("A1:A9")
arr_Bestand = Me.Range("B1:B9")

With WorksheetFunction
    MsgBox .Index(arr_Lager, .Match(.Large(arr_Bestand, 1), arr_Bestand, 0), 1)
End With
End Sub
VG Sabina

PS: du könntest die Bestände aber auch einfach sortieren ...

Solltest du nicht zurechtkommen, dann lade bitte eine anonymisierte Muster-Datei hoch, die aber alle notwendigen Daten zum Ausprobieren enthält.
Und eine etwas bessere Erklärung, was du genau machen möchtest, wäre dann auch nicht schlecht.
Zitieren
#3
Hallo Sabina! Smile

Danke für deine Antwort - deine Idee in einer Hilfstabelle die Daten zu sortieren, habe ich übernommen. Big Grin

Aber nur aus Neugier: es ist also nicht möglich mit VBA Daten innerhalb einer mehrdimensionalen Array so zu sortieren oder zu filtern etc. wie jetzt in einer Excel-Tabelle?

LG,

sacoma Wink
Zitieren
#4
Hallöchen,

na ... geht doch ... Cool 

Warum kompliziert, wenn es auch einfach gehen kann ...

Ein VBA-Array ... man muss da sehr deutlich unterscheiden ... läßt sich im Vergleich zu einem .Net-Array nicht so einfach sortieren oder gar mit einem Filter durchsuchen. VBA ist schon etwas älter und so richtige Updates hat es seit über 2 Jahrzehnten nicht mehr gekriegt.

Gehen tut viel in VBA ... natürlich kann man einen Sortier-Algorithmus programmieren, der ein 2-dimensionales Array mit mehr als einer Column sortiert ... kannst gerne mal nach 'BubbleSort' oder 'QuickSort' googlen. Ist aber eben riesen Code ... und Excel kann das schon alles ... also warum nicht verwenden, was ich nicht neu ... und noch dazu doppelt ... machen muss. Blush

VG Sabina
Zitieren


Gehe zu:


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




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions