Office: Mehrdimensionales Array einfach füllen

Helfe beim Thema Mehrdimensionales Array einfach füllen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hi Ich möchte an eine Funktion ein mehrdimensionales Array übergeben. Und dies soll anwenderfreundlich sein *Smilie So funktioniert das Ganze schon:... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von MichiZH, 16. März 2013.

  1. Mehrdimensionales Array einfach füllen


    Hi

    Ich möchte an eine Funktion ein mehrdimensionales Array übergeben. Und dies soll anwenderfreundlich sein *Smilie

    So funktioniert das Ganze schon:
    Code:
    Nun wie kann ich das kurz schreiben? Habe schon alles abgesucht aber werde nicht fündig...gibt es nichts wie

    aSourceColumns = array((1,2,4,1),(5,9,4,0))
    ?

    Weil das funktioniert auch nicht...

    Viele Grüsse und Danke schonmal
    Michael

    :)
     
    MichiZH, 16. März 2013
    #1
  2. Hallo Michael,

    Deine Anwender sollen ein mehrdim. Array füllen? Lass sie die Werte in ein Blatt schreiben, wenn es zweidim. ist und greif die Daten dort ab.

    Deinen Codeversuch interpretiere ich so:
    Code:
    Je nachdem, was denn nun genau passieren soll, kannst Du ggf. auf das (doppelte) Transponieren verzichten.

    Grüße
    EarlFred
     
    EarlFred, 17. März 2013
    #2
  3. Vielen Dank erstmals. Aber kann man nicht im Code direkt ein Array füllen?

    Also für eindimensionale geht das ja auch oder?

    Ja also mit Anwender meine ich quasi Leute die meine Funktion in VBA verwenden. Dazu gibt es dann ein Modul wo für ganz viele Sheets diese Funktion ausgeführt werden soll und deshalb soll das füllen der Arrays so kurz und übersichtlich wie möglich machbar sein. *Smilie
     
    MichiZH, 18. März 2013
    #3
  4. Mehrdimensionales Array einfach füllen

    Hallo Michael,

    steht doch in meiner Antwort - oder was denkst Du, tut die Codezeile?

    Wenn Du etwas anderes meinst: Beschreib es doch einfach so, dass man es auch versteht und zielgerichtet helfen kann. Ich helfe gerne, aber Ratespielchen sind nicht mein Ding.

    Grüße
    EarlFred
     
    EarlFred, 18. März 2013
    #4
  5. Beverly
    Beverly Erfahrener User
    Hi Michael,

    meinst du das so:

    Code:
    Mehrdimensionales Array einfach füllen grusz.gif
     
    Beverly, 18. März 2013
    #5
  6. Da fallen mir erst einmal nur Fragen ein:

    a) Wieviele der 60 möglichen Dimensionen werden in Anspruch genommen?

    b) Ist Füllen beliebig, oder soll da etwas Bestimmtes ins Array?

    Ohne eingrenzende Definition ist alles für möglich zu halten.
     
  7. Sorry, dass ich etwas unklar war. Also so vom Aussehen kommt das von Beverly und Earlfred dem am nächsten, was ich suche.

    Also Dimensionen soll das Array zwei haben. Und es sollen nur Zahlen ins Array.

    Der Funktionsheader sieht so aus:
    Code:
    Wenn ich das mit folgender Prozedur aufrufe klappt das 1a:
    Code:
    Aber die Definition ist mir zu umständlich, da ich diesen MergeData Aufruf pro Excelfile etwa 5-10 mal machen muss und dann gibt es davon noch 5 weitere Excel Files, also total 25 Aufrufe.

    Ganz elegant hätte ich mir das so ähnlich wie von Beverly und auch earlfred gezeigt vorgestellt:

    Code:
    Da kommt aber die Fehlermeldung "Unverträglicher Typ". Das liegt ja wohl daran, dass Array() einen Variant Typ zurückliefert. Wenn ich aber den Funktionsheader auf Variant ändere, geht es immer noch nicht:

    Code:
    Hier kommt wieder die Fehlermeldung Unverträglicher Datentyp. Auch wenn ich das 2-dimensionale Array nicht direkt in den Funktionsaufruf lege sondern in eine Array Variable auslagere, klappt es mit demselben Fehler nicht.
    Was mache ich falsch? Denn an sich wäre mir dieses Füllen mit Array(Array()) praktikabel genug...
     
    MichiZH, 18. März 2013
    #7
  8. Mehrdimensionales Array einfach füllen

    Code:
    Ein einfaches Variant schluckt alles, auch ein beliebig zusammengestelltes Array. Du musst dann nur in der internen Verarbeitung überprüfen, was Dir übergeben wird, oder aber Du verlässt Dich auf eine übergebene Struktur, weil Du in einer eigenen Prozedur das Array in definierter Struktur erzeugen lässt.
     
  9. Hallo Michael,

    DENN:
    Code:
    ist ein anderes Array als das, was bei Deinem Code entsteht (existiert)! Schau Dir die Struktur genau an - der Code muss darauf reagieren (oder Du verwendest, wie in meinem Beispiel, eine doppelte Transponierung - dann sehen "Dein" und "mein" Array gleich aus).
    Code:
    Die Funktion Array liefert zudem ein Nullbasiertes Datenfeld (wie übrigens auch das von Dir verwendete Dim aintSource(2, 4) As Integer, solange Du nicht Option Base veränderst).

    Nochmals der Hinweis:
    Aus Gründen der Nachvollziehbarkeit, der Übersichtlichkeit, der Archivierung und erneuten Verwendung zu einem späteren Zeitpunkt könnte das sinnvoll sein.

    Grüße
    EarlFred
     
    EarlFred, 18. März 2013
    #9
  10. Hallo ihr beide

    Also das verstehe ich jetzt nicht ganz. Bzw. verstehe ich, dass Variant alles schluckt. Aber in dem Beispiel von mir habe ich mich ja extra darauf geachtet, dass die Arrays "zusammenpassen". Die Funktion erwartet ein Variant Array und ich liefere eins. Oder muss ich im Funktionskopf auch angeben, dass da ein mehrdimensionales kommt?! Denn der Compiler bricht ja gleich ab, also stimmt was in meiner Definition wohl nicht.

    Die Überprüfung in der internen Verarbeitung muss ich doch dafür machen, dass die Funktion allenfalls erkennt falls irgendein Humbug übergeben wird und das Programm nicht abstürzt oder? Dennoch müsste es doch in meinem Beispiel funktionieren?
     
    MichiZH, 18. März 2013
    #10
  11. Die zweite Frage ist noch nicht beantwortet:
    Woher resultieren diese imaginären Zahlenfolgen?
     
  12. Hallo Michael,

    wie immer gehört zu einer Variable auch eine Definitionszeile.
    Ich bekomme so keinen Fehler, denn VBA weiß, was es erwartet:
    Code:
    Bei Dir ist es nicht klar, was übergeben wird (so schlau ist der Compiler nicht und so "variant" ist selbt Variant nicht) - also darf kein Datenfeld (Klammerung) vorgegeben sein.

    Grüße
    EarlFred
     
    EarlFred, 18. März 2013
    #12
  13. Mehrdimensionales Array einfach füllen

    Ganz vergessen, das noch zu erklären. Also generell fügt das Programm zwei Datensätze zusammen mit Aktienrenditen.

    Im Destinationsheet gibts eine Datums- und eine Returnspalte.
    Im Sourcesheet gibts verschiedene Datenquellen, jeweils mit einer Datums- und Returnspalte.

    In dem Array werden die Datenquellen im Sourcesheet definiert.

    Wert 1 ist die Spalte mit den Datumswerten
    Wert 2 ist die Spalte mit den Returnwerten der Aktien
    Wert 3 ist die erste Zeile, welche Daten enthält
    Wert 4 gibt mit 1 oder 0 an ob die Werte bereits in % sind oder noch umgerechnet werden müssen.
    Also 1,2,4,0 heisst Spalte 1, 2 und Zeile 4 und die Werte sind bereits in %.
     
    MichiZH, 18. März 2013
    #13
  14. Ja stimmt, wenn ichs nicht direkt in den Funktionsaufruf packe sondern auslagere, krieg ichs jetzt irgendwie doch hin. Dann geht der direkte Weg wohl leider effektiv nicht..

    Vielen Dank erstmal *Smilie
     
    MichiZH, 18. März 2013
    #14
  15. Hallo Michael,

    ????? Eberhards Variante "geht" doch sehrwohl...

    Grüße
    EarlFred
     
    EarlFred, 18. März 2013
    #15
Thema:

Mehrdimensionales Array einfach füllen

Die Seite wird geladen...
  1. Mehrdimensionales Array einfach füllen - Similar Threads - Mehrdimensionales Array füllen

  2. Eine Spalte aus mehrdimensionales Array in Spalte ausgeben

    in Microsoft Excel Hilfe
    Eine Spalte aus mehrdimensionales Array in Spalte ausgeben: Hallo Zusammen, ich habe ein Mehrdimensionales Array arr(1 to 6, 1 to x) was sich dynamisch erstellt. Ich möchte jetzt alle Daten aus Spalte 2 (erste Dimension) in die erste Spalte meiner...
  3. Wert aus Array summieren/kumulieren (mehrdimensional)

    in Microsoft Excel Hilfe
    Wert aus Array summieren/kumulieren (mehrdimensional): Hallo zusammen, ich nutze folgenden Code um eine Array-Variable auszulesen: Code: Dim arrBeispiel(5, 5) As Byte Dim lngSumme As Long arrBeispiel(1, 1) = 1 arrBeispiel(1, 2) = 1 lngSumme =...
  4. Mehrere Spalten in ein mehrdimensionale Array laden

    in Microsoft Excel Hilfe
    Mehrere Spalten in ein mehrdimensionale Array laden: Hallo miteinander, ich habe verstanden wie ich eine Spalte aus einem ListObjects in ein Array speichern kann, auf ein mal. Doch wie mache ich das wenn ich mehrere Spalten gleichzeitig in das...
  5. Mehrdimensionales Array mit Range-Funktion füllen

    in Microsoft Excel Hilfe
    Mehrdimensionales Array mit Range-Funktion füllen: Hallo, ich habe ein kleines Problem bei der Befüllung eines mehrdimensionalen Arrays. Kurz zum Hintergrund, ich habe eine Excel Tabelle mit 15 Spalten und einer variablen Anzahl an Zeilen. Aus...
  6. Mehrdimensionale Tabellen / Kreuztabellen

    in Microsoft Access Hilfe
    Mehrdimensionale Tabellen / Kreuztabellen: Hallo. Ich bin am überlegen, wie und ob ich folgendes Problem mit Access lösen kann: Ich möchte eine Datenbank-Zugriffslogik in Access abbilden. Folgende Hierarchie gibt es: User / Stream(s) /...
  7. Summenprodukt mit mehrdimensionalem Ergebnis

    in Microsoft Excel Hilfe
    Summenprodukt mit mehrdimensionalem Ergebnis: Hallo zusammen, ich habe eine Monatstabelle, in der ich die tatsächlich geleisteten Arbeitsstunden in einer Summe berechnen möchte. Hier werden die Urlaubstage in Zahlen eingegeben (1=1 Tag)....
  8. VBA - Mehrdimensionale Array - Wie L & Ubound jeder Dimension auslesen

    in Microsoft Excel Hilfe
    VBA - Mehrdimensionale Array - Wie L & Ubound jeder Dimension auslesen: Hallo, mal eine bescheidene Frage zum Thema mehrdimensionale Arrays. Wie kann man den LBound und Ubound von einem z.B. 2-dimensionalen Array herausfinden? Wie macht man das für die erste und...
  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