Microsoft Excel

Excel und VBA: Beitrag aus Herbers Excel-Forumsarchiv

Zweidimensionaler Array

Betrifft: Zweidimensionaler Array
von: Sibylle Weber
Geschrieben am: 22.11.2009 11:18:07

Hallo,

ich suche nach einem anschaulichen Beispiel für die Verwendung von
a. einem zweidimensionalen
b. einem dreidimensionalen Array

Dieses Teilgebiet bereitet mir noch Verständnisprobleme

Gruß
Sibylle

  

Betrifft: AW: Zweidimensionaler Array
von: Daniel
Geschrieben am: 22.11.2009 13:38:04

Hi

die Zellen eines Excel-Tabellenblatt bilden ein zweidimensionales Array,
1. Dim: Zeile
2. Dim: Spalte

die Zellen einer Excel-Arbeitsmappe bilden ein dreidimensionales Array:
1. Dim: Zeile
2. Dim: Spalte
3. Dim: Tabellenblatt

oder um ein ganz anderes Beispiel zu wählen:
ein Stundenplan einer Schule:
1. Dim: Stunde
2. Dim: Tag
3. Dim: Klasse

als beispiel:
Stundenplan(1. Stunde, Montag, Klasse 1) = Deutsch
Stundenplan(3. Stunde, Mittwoch, Klasse 3) = Mathematik
das kann man sich auch schön vorstellen, wie die Stundenpläne der einzelnen Klassen beim Schulleiter in einer Mappe übereinander liegen und so die Klassen die 3. Dimension bilden.

Gruß, Daniel


  

Betrifft: AW:Danke
von: Sibylle Weber
Geschrieben am: 22.11.2009 13:54:54

Hallo Daniel,

vielen Dank für Deinen Beitrag,
Das Beispiel Stundenplan ist sehr anschaulich, sorgt für Verständnis.
Danke.
Gruß
Sibylle


  

Betrifft: AW: Zweidimensionaler Array
von: Nepumuk
Geschrieben am: 22.11.2009 13:39:10

Hallo,

ein zweidimensionales Array ist wie eine Exceltabelle. Du hast z.B. oben verschiedene Namen und nach unten Tage. Dein Array in VBA wäre der gelbe Bereich:

ABCD
1Datum/NameMaierHuberMüller
201.01.2009104
302.01.2009223
403.01.2009469
504.01.2009062
605.01.20098148
706.01.20095812
807.01.2009469
908.01.2009346
1009.01.20099167


Jetzt stell dir vor, du hast pro Name und Datum mehrere Einträge. In der Mappe wären das mehrere Tabellen mit derselben Struktur, oder die Daten befinden sich in mehreren Mappen mit derselben Struktur. Du willst die Daten aber nicht addieren, da sie sich z.B. auf verschiedene Artikel beziehen. Du hast dann in VBA entweder mehrere zweidimensionale Arrays, oder ein dreidimensionales. Bei der die dritte Dimension jeweils einen Artikel darstellt. Das ganze kannst du dir wie einen Würfel vorstellen.

Da es in VB bis zu 60 Dimensionen geben kann, hört bei der dritten Dimension die menschliche Vorstellungskraft in den meisten Fällen auf.

Außerdem würde ich nicht mit mehr als zwei Dimensionen arbeiten. Für die weiteren Dimensionen würde ich dann einen benutzerdefinierten Datentyp anlegen. Das ist wesentlich übersichtlicher.

Gruß
Nepumuk


  

Betrifft: AW: Ach so - und noch eine Frage dazu
von: Sibylle Weber
Geschrieben am: 22.11.2009 13:51:52

Hallo Nepumuk,

Deine Hinweise sind allererste Sahne. Der Groschen ist gefallen. Vielen Dank.
Mit benutzerdefiniertem Datentyp meinst Du vermutlich den Befehl TYPE?
Und nachdem der Datentyp feststeht, darauf aufbauend einen Array bilden?
Ein kurzes "Ja" oder "Nein" würde genügen, um sicher zu sein, dass Deine Angaben richtig verstanden wurden.
Gruß
Sibylle


  

Betrifft: AW: Ach so - und noch eine Frage dazu
von: Nepumuk
Geschrieben am: 22.11.2009 14:31:44

Hallo Sibylle,

JA. Die Type-Anweisung die sich auch verschachtel lässt.

Ich hab mal was zu Arrays geschrieben, da findest du im 2. Teil auch was zu benutzerdefinierten Datentypen und Arrays daraus:

Teil1: http://www.office-loesung.de/ftopic243735_0_0_asc.php
Teil2: http://www.office-loesung.de/ftopic251835_0_0_asc.php
Teil3: http://www.office-loesung.de/ftopic255180_0_0_asc.php

Gruß
Nepumuk


  

Betrifft: AW: Tausend Dank
von: Sibylle Weber
Geschrieben am: 22.11.2009 14:47:54

Hallo Nepumuk,

das ist ein guter Tag für mich.
Genau darüber wollte ich Details nachlesen können.
Dein Tipp trifft ins Schwarze.
Wenn man denkt, so etwas könnte es vielleicht geben, dann hilft die VBA-Hilfe oftmals nicht weiter...
oder man versteht diese manchmal nicht ...

Umso wichtiger ist die Möglichkeit bei kompetenten Forumsteilnehmern Rat einholen zu können. Super.
Vielen Dank.
Einen schönen Sonntag.
Gruß
Sibylle