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

Forumthread: Zwei Arrays verbinden

Zwei Arrays verbinden
08.10.2004 11:44:32
imtis
Hallo zusammen,
ich möchte eine Funktion schreiben, die zwei Array miteinander verbindet. Leider läuft sie noch nicht so, wie ich das will.
Bspw. kommt in der Zeile "Debug.Print UBound(Arr3)" immer die Meldung "Typen unverträglich".
Sieht jemand vielleicht einen offensichtlichen Fehler?
Vielen Dank schonmal,
imtis
-----------------------------------------------------------------------------

Function ArraysVerbinden(Array1() As Integer, Array2() As Integer)
Dim ArrayNeu() As Integer
Dim cnt As Integer
cnt = 0
For i = 0 To UBound(Array1)
ReDim Preserve ArrayNeu(cnt)
ArrayNeu(cnt) = Array1(i)
cnt = cnt + 1
Next i
For i = 0 To UBound(Array2)
ReDim Preserve ArrayNeu(cnt)
ArrayNeu(cnt) = Array2(i)
cnt = cnt + 1
Next i
ArrraysVerbinden = ArrayNeu
End Function

-----------------------------------------------------------------------------

Sub test()
Dim Arr1(1) As Integer
Dim Arr2(1) As Integer
Dim Arr3(3) As Integer
Arr3 = ArraysVerbinden(Arr1, Arr2)
Debug.Print UBound(Arr3)
End Sub

-----------------------------------------------------------------------------
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zwei Arrays verbinden
dan
Hallo, das Problem ist, dass Du nicht Option Explicit benutzt. Sonst ist Dein Code OK! Volgenden Code habe ich getestet und es lief OK. Gruss Dan, CZ.
Option Explicit

Function ArraysVerbinden(Array1() As Integer, Array2() As Integer)
Dim ArrayNeu() As Integer
Dim cnt As Integer, i As Integer
cnt = 0
For i = 0 To UBound(Array1)
ReDim Preserve ArrayNeu(cnt)
ArrayNeu(cnt) = Array1(i)
cnt = cnt + 1
Next i
For i = 0 To UBound(Array2)
ReDim Preserve ArrayNeu(cnt)
ArrayNeu(cnt) = Array2(i)
cnt = cnt + 1
Next i
ArraysVerbinden = ArrayNeu
End Function


Sub test()
Dim Arr1(4) As Integer
Dim Arr2(4) As Integer
Dim Arr3() As Integer
Arr1(0) = 1
Arr1(1) = 2
Arr1(2) = 3
Arr1(3) = 4
Arr1(4) = 5
Arr2(0) = 6
Arr2(1) = 7
Arr2(2) = 8
Arr2(3) = 9
Arr2(4) = 10
Arr3 = ArraysVerbinden(Arr1, Arr2)
Debug.Print UBound(Arr3)
End Sub

Anzeige
AW: Zwei Arrays verbinden
Harald
Hallo Imtis,
Eine Funktion kann m.W. kein Array zurückgeben. Du musst wohl den unschönen Web üner eine

Sub und ein öffentliches Array (public) nehmen.
Ein Tip. Du kannst Die Dimensionen des neuen Array vorher bestimmen, dann laufen die Schleifen schneller:
Option Explicit
Option Base 0
Public Arrayneu() As Integer

Sub test()
Dim Arr1(1) As Integer
Dim Arr2(1) As Integer
Arr1(0) = 1
Arr1(1) = 2
Arr2(0) = 33
Arr2(1) = 11
Call ArraysVerbinden(Arr1, Arr2)
Debug.Print UBound(Arrayneu)
End Sub


Sub ArraysVerbinden(Array1() As Integer, Array2() As Integer)
Dim cnt As Integer
Dim i As Long
cnt = 0
ReDim Preserve Arrayneu(UBound(Array1) + 1 + UBound(Array2) + 1) ' Ubound() +1, da 0 der unterste Index ist
For i = 0 To UBound(Array1)
Arrayneu(cnt) = Array1(i)
cnt = cnt + 1
Next i
For i = 0 To UBound(Array2)
Arrayneu(cnt) = Array2(i)
cnt = cnt + 1
Next i
End Sub

Gruß Harald
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zwei Arrays in Excel verbinden


Schritt-für-Schritt-Anleitung

Um zwei Arrays in Excel zu verbinden, kannst Du die folgende Funktion verwenden. Stelle sicher, dass Du die Option Explicit verwendest, um mögliche Fehler zu vermeiden.

Option Explicit

Function ArraysVerbinden(Array1() As Integer, Array2() As Integer) As Integer()
    Dim ArrayNeu() As Integer
    Dim cnt As Integer, i As Integer
    cnt = 0
    ReDim ArrayNeu(UBound(Array1) + UBound(Array2) + 1) ' Dimensionen vorher bestimmen

    ' Erstes Array hinzufügen
    For i = 0 To UBound(Array1)
        ArrayNeu(cnt) = Array1(i)
        cnt = cnt + 1
    Next i

    ' Zweites Array hinzufügen
    For i = 0 To UBound(Array2)
        ArrayNeu(cnt) = Array2(i)
        cnt = cnt + 1
    Next i

    ArraysVerbinden = ArrayNeu
End Function

Verwende die Funktion in einem Sub, um die beiden Arrays zu verbinden:

Sub Test()
    Dim Arr1(4) As Integer
    Dim Arr2(4) As Integer
    Dim Arr3() As Integer

    ' Erstes Array füllen
    Arr1(0) = 1
    Arr1(1) = 2
    Arr1(2) = 3
    Arr1(3) = 4
    Arr1(4) = 5

    ' Zweites Array füllen
    Arr2(0) = 6
    Arr2(1) = 7
    Arr2(2) = 8
    Arr2(3) = 9
    Arr2(4) = 10

    ' Arrays zusammenfügen
    Arr3 = ArraysVerbinden(Arr1, Arr2)
    Debug.Print UBound(Arr3) ' Ausgabe des oberen Index
End Sub

Häufige Fehler und Lösungen

  1. Typen unverträglich: Wenn Du beim Debuggen die Meldung "Typen unverträglich" erhältst, überprüfe, ob Du die richtigen Datentypen für Deine Arrays verwendest. Stelle sicher, dass die Arrays gleich deklariert sind.

  2. Funktion gibt kein Array zurück: Wenn Du eine Funktion verwendest, die kein Array zurückgibt, stelle sicher, dass Du As Integer() in der Funktionsdefinition angibst.

  3. Option Explicit: Vergiss nicht, Option Explicit am Anfang Deiner Module zu verwenden, um sicherzustellen, dass alle Variablen vorher deklariert sind.


Alternative Methoden

Eine alternative Methode zum Verbinden von Arrays besteht darin, ein öffentliches Array zu verwenden. Hier ist ein Beispiel:

Option Explicit
Public Arrayneu() As Integer

Sub ArraysVerbinden(Array1() As Integer, Array2() As Integer)
    Dim cnt As Integer
    Dim i As Long
    cnt = 0
    ReDim Arrayneu(UBound(Array1) + UBound(Array2) + 1)

    ' Arrays füllen
    For i = 0 To UBound(Array1)
        Arrayneu(cnt) = Array1(i)
        cnt = cnt + 1
    Next i

    For i = 0 To UBound(Array2)
        Arrayneu(cnt) = Array2(i)
        cnt = cnt + 1
    Next i
End Sub

Verwende diese Methode, wenn Du das Ergebnis in einem öffentlichen Array speichern möchtest.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du zwei Arrays zusammenfügen kannst:

Sub Beispiel()
    Dim Arr1(2) As Integer
    Dim Arr2(2) As Integer
    Dim Arr3() As Integer

    Arr1(0) = 10
    Arr1(1) = 20
    Arr1(2) = 30

    Arr2(0) = 40
    Arr2(1) = 50
    Arr2(2) = 60

    Arr3 = ArraysVerbinden(Arr1, Arr2)
    For i = 0 To UBound(Arr3)
        Debug.Print Arr3(i) ' Ausgabe: 10, 20, 30, 40, 50, 60
    Next i
End Sub

Tipps für Profis

  • Dynamische Arrays: Verwende ReDim Preserve, um die Größe des Arrays dynamisch anzupassen, während Du Elemente hinzufügst. Das ist nützlich, wenn Du nicht vorher weißt, wie viele Elemente Du benötigst.

  • Datenvalidierung: Führe eine Prüfung auf die Größe der Arrays durch, bevor Du sie verbindest, um sicherzustellen, dass sie die erwarteten Werte enthalten.

  • Verwendung von Collections: In einigen Fällen kann es vorteilhaft sein, statt Arrays Collections zu verwenden, da sie flexibler sind und einfachere Methoden zur Verwaltung von Elementen bieten.


FAQ: Häufige Fragen

1. Kann ich Arrays mit unterschiedlichen Datentypen zusammenfügen?
Nein, die Arrays müssen den gleichen Datentyp haben. Achte darauf, dass Du Integer-Arrays verwendest, wenn Du mit der Funktion arbeitest.

2. Wie kann ich mehr als zwei Arrays zusammenfügen?
Du kannst die Funktion erweitern oder eine Schleife verwenden, um mehrere Arrays nacheinander zu verketten.

3. Gibt es eine eingebaute Excel-Funktion, um Arrays zu verbinden?
Excel bietet keine spezielle Funktion zum Zusammenfügen von Arrays, aber Du kannst die oben genannten VBA-Methoden verwenden, um dies zu erreichen.

4. Ist dies in allen Excel-Versionen verfügbar?
Die gezeigten VBA-Beispiele sind in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2016 und später.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige