Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Werte einer Matrix zuweisen

Werte einer Matrix zuweisen
14.10.2006 14:23:37
Christian
Hallo,
ich möchte die Werte einer zweidimensionalen Matrix(10,10) einer Variablen zuweisen. Wie mache ich das unter VBA am elegantesten ?
Viele Grüße,
Christian
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte einer Matrix zuweisen
14.10.2006 14:29:22
Nepumuk
Hallo Christian,
ein Array in VBA oder einer Tabelle? Sollen die Werte Addiert werden oder was?
Gruß
Nepumuk
AW: Werte einer Matrix zuweisen
14.10.2006 14:32:13
Luc:-?
Hallo Christian,
wenn die Variable vom Datentyp Variant sein soll und die Matrix ein Range ist, reicht eigentlich variable=matrix. Zu beachten ist allerdings, dass die Indizierung der Felder hier stets bei 1 beginnt (auch wenn ansonsten 0 eingestellt ist).
Gruß Luc :-?
Anzeige
AW: Werte einer Matrix zuweisen
14.10.2006 14:45:55
Christian
Hallo,
ich habe mich vielleicht etwas unverständlich ausgedrückt. Ich habe eine Matrix, die z.B. so aussieht:
{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },{ 1, 5, 7, 6, 2, 8, 3, 0, 9, 4 },
{ 5, 8, 0, 3, 7, 9, 6, 1, 4, 2 },{ 8, 9, 1, 6, 0, 4, 3, 5, 2, 7 },
{ 9, 4, 5, 3, 1, 2, 6, 8, 7, 0 },{ 4, 2, 8, 6, 5, 7, 3, 9, 0, 1 },
{ 2, 7, 9, 3, 8, 0, 6, 4, 1, 5 },{ 7, 0, 4, 6, 9, 1, 3, 2, 5, 8 } }
Diese Matrix möchte ich jetzt einem Array zuweisen, das ich wie folgt deklariert habe:
dim a(10,10) as integer
Wie weise ich die Werte der Matrix dem Array zu ?
Unter Java geht das z.B. so public static final int a[][] = {{0, 1, 2, ...}, {...}, ...}
Gruß,
Christian
Anzeige
AW: Werte einer Matrix zuweisen
14.10.2006 14:56:49
Nepumuk
Hallo Christian,
mit eine fest dimensionierten Array geht das nur einzeln. Wenn du eine Variantvariable benutzt, dann könntest du es so machen:
Public Sub test()
    Dim a As Variant
    a = Array(Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), Array(1, 5, 7, 6, 2, 8, 3, 0, 9, 4) _
        , Array(5, 8, 0, 3, 7, 9, 6, 1, 4, 2), Array(8, 9, 1, 6, 0, 4, 3, 5, 2, 7) _
        , Array(9, 4, 5, 3, 1, 2, 6, 8, 7, 0), Array(4, 2, 8, 6, 5, 7, 3, 9, 0, 1) _
        , Array(2, 7, 9, 3, 8, 0, 6, 4, 1, 5), Array(7, 0, 4, 6, 9, 1, 3, 2, 5, 8))
End Sub

Du bekommst aber eine etwas gewöhnungbedürftige Adressierung des Arrays (der erste Eintrag beispielsweise: a(0)(0) ). Schau sie dir mal im Lokalfenster an.
Gruß
Nepumuk
Anzeige
AW: Werte einer Matrix zuweisen
14.10.2006 15:19:17
Christian
Hallo,
das ist genau das was ich gesucht habe!
Vielen Dank,
Christian
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Werte einer Matrix zuweisen in VBA


Schritt-für-Schritt-Anleitung

Um die Werte einer zweidimensionalen Matrix in VBA einem Array zuzuweisen, kannst du die folgenden Schritte befolgen:

  1. Matrix definieren: Erstelle eine Matrix in deinem VBA-Projekt. Dies kann durch die Verwendung der Array-Funktion geschehen.

    Dim matrix As Variant
    matrix = Array(Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), _
                  Array(1, 5, 7, 6, 2, 8, 3, 0, 9, 4), _
                  Array(5, 8, 0, 3, 7, 9, 6, 1, 4, 2), _
                  Array(8, 9, 1, 6, 0, 4, 3, 5, 2, 7), _
                  Array(9, 4, 5, 3, 1, 2, 6, 8, 7, 0), _
                  Array(4, 2, 8, 6, 5, 7, 3, 9, 0, 1), _
                  Array(2, 7, 9, 3, 8, 0, 6, 4, 1, 5), _
                  Array(7, 0, 4, 6, 9, 1, 3, 2, 5, 8))
  2. Array deklarieren: Deklariere ein Array, das die gleichen Dimensionen hat wie die Matrix. In diesem Fall ein 10x10 Array:

    Dim a(0 To 7, 0 To 9) As Integer
  3. Werte zuweisen: Du kannst die Werte der Matrix einem Array zuweisen. Wenn du eine Variant-Variable verwendest, kannst du die Werte direkt zuweisen.

    Dim i As Integer, j As Integer
    For i = LBound(matrix) To UBound(matrix)
       For j = LBound(matrix(i)) To UBound(matrix(i))
           a(i, j) = matrix(i)(j)
       Next j
    Next i

Häufige Fehler und Lösungen

  • Fehler bei der Indizierung: In VBA beginnt die Indizierung bei 1. Wenn du also ein 10x10 Array deklariert hast, musst du darauf achten, dass du von 0 bis 9 iterierst, wenn du eine Variant-Array verwendest.

  • Typenkonflikt: Achte darauf, dass dein Array die richtige Datentypen hat. Wenn du Dim a(10, 10) As Integer verwendest, kann es zu einem Typkonflikt kommen, wenn du versuchst, Werte aus einer Variant-Array zuzuweisen.


Alternative Methoden

Eine alternative Methode, um Werte einer Matrix in VBA zuzuweisen, besteht darin, die Matrix direkt als Range zu definieren und die Zuweisung dann über die Zellen zu machen:

Dim rng As Range
Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:J8")
rng.Value = matrix

Diese Methode ist besonders nützlich, wenn du mit Excel-Daten arbeitest und die Werte direkt in ein Excel-Blatt übertragen möchtest.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die Matrix in ein Array zuweisen kannst:

Public Sub Beispiel()
    Dim matrix As Variant
    matrix = Array(Array(0, 1, 2), Array(3, 4, 5), Array(6, 7, 8))

    Dim a(0 To 2, 0 To 2) As Integer
    Dim i As Integer, j As Integer

    For i = LBound(matrix) To UBound(matrix)
        For j = LBound(matrix(i)) To UBound(matrix(i))
            a(i, j) = matrix(i)(j)
        Next j
    Next i
End Sub

Tipps für Profis

  • Nutze Variant-Arrays, wenn du mit unterschiedlichen Datentypen arbeiten möchtest. Dies gibt dir mehr Flexibilität beim Arbeiten mit Daten.
  • Achte darauf, deine Arrays und Variablen immer gut zu benennen, damit du den Überblick behältst, insbesondere bei komplexen Projekten.
  • Wenn du häufig mit Matrizen arbeitest, überlege, eigene Funktionen zu erstellen, um wiederkehrende Aufgaben zu automatisieren.

FAQ: Häufige Fragen

1. Wie kann ich eine inverse Matrix in VBA berechnen?
Die Berechnung einer inversen Matrix in VBA erfordert komplexere Algorithmen und ist nicht direkt in VBA eingebaut. Du kannst jedoch auf externe Bibliotheken oder Implementierungen zurückgreifen.

2. Kann ich Arrays in VBA auch dynamisch erstellen?
Ja, du kannst dynamische Arrays in VBA verwenden, indem du die ReDim-Anweisung nutzt. Dies ermöglicht es dir, die Größe des Arrays zur Laufzeit zu ändern.

3. Gibt es Unterschiede zwischen der Verwendung von Arrays in VBA und Java?
Ja, in Java beginnst du die Indizierung mit 0, während in VBA die Indizierung standardmäßig bei 1 beginnt, es sei denn, du verwendest ein Variant-Array.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige