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

Forumthread: Werte von Array in eine Zelle schreiben

Werte von Array in eine Zelle schreiben
18.06.2019 16:04:23
Array
Hallo zusammen,
ich habe ein Problem mit einem Array. Mithilfe dieses Codes erstelle ich zunächst ein Array unbekannter Größe, weise diesem eine Größe zu (Größe entspricht befüllten Zellen) und befülle diesen. Das Array hat dann am Ende 4 Einträge mit den Werten e, f, i und j.
Hier der Code:
Option Explicit

Sub a()
Dim arr()
Dim ab1 As Integer
Dim abb1 As Integer
Dim abbb1 As Integer
Dim strTempArray()
Dim anzahl As Integer
anzahl = 1
Do
anzahl = anzahl + 1
Loop Until Range("A" & anzahl).Value = ""
anzahl = anzahl - 1
ReDim arr(anzahl)
For ab1 = 1 To 10
If Range("A" & ab1).Value = "4" Then
arr(ab1 - 1) = Range("B" & ab1).Value
Else
End If
Next ab1
For abb1 = 0 To UBound(arr)
If arr(abb1)  "" Then
ReDim Preserve strTempArray(abbb1)
strTempArray(abbb1) = arr(abb1)
abbb1 = abbb1 + 1
End If
Next
arr = strTempArray
End Sub

Hier ein Link zur Datei
https://www.herber.de/bbs/user/130458.xlsx
Soweit klappt auch alles wie ich mir das vorstelle. Nun würde ich gerne alle Elemente im Array in eine Zelle
schreiben mit Kommas getrennt.
Z.B. soll dann in Zelle "E2" stehen e, f, i, j.
Ich habe mir schon überlegt das ganze mit einer for-Schleife zu machen, da ich ja die Anzahl der Elemente im Array durch die Variable abbb1 gegebene habe, aber bislang sind alle meine Versuche gescheitert. Vielen Dank.
Grüße
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte von Array in eine Zelle schreiben
18.06.2019 16:06:35
Array
das geht nicht, da eine XLSX Datei kein Makro enthalten kann.
Ich sehe keinen Grund eine Datei 2x zu speichern. Ich führe keine Liste unter welchem Dateinamen ich die Datei gespeichert habe.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
AW: Werte von Array in eine Zelle schreiben
18.06.2019 16:10:15
Array
Tut mir Leid aber ich verstehe deinen Beitrag nicht. Die Datei ist ohne Makros, da ich sie mit irgendwie nicht hochladen konnte.
AW: Werte von Array in eine Zelle schreiben
18.06.2019 16:22:38
Array

Option Explicit
Sub a()
Dim arr()
Dim ab1 As Integer
Dim abb1 As Integer
Dim abbb1 As Integer
Dim strTempArray()
Dim anzahl As Integer
anzahl = 1
Do
anzahl = anzahl + 1
Loop Until Range("A" & anzahl).Value = ""
anzahl = anzahl - 1
ReDim arr(anzahl)
For ab1 = 1 To 10
If Range("A" & ab1).Value = "4" Then
arr(ab1 - 1) = Range("B" & ab1).Value
Else
End If
Next ab1
For abb1 = 0 To UBound(arr)
If arr(abb1)  "" Then
ReDim Preserve strTempArray(abbb1)
For ab1 = 1 To 10
strTempArray(abbb1) = strTempArray(abbb1) & arr(ab1) & ", "
Next ab1
End If
MsgBox strTempArray(abbb1)
Next
arr = strTempArray
End Sub
Gruß Hajo
Anzeige
AW: Werte von Array in eine Zelle schreiben
18.06.2019 16:26:53
Array
Hallo Andreas,
bei mir ging es auch ohne .xlsm
Sub a()
Dim arr(), loLetzte As Long, loAnzahl As Long
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
loAnzahl = WorksheetFunction.CountIf(.Range(.Cells(1, "A"), .Cells(loLetzte, "A")), 4)
If loAnzahl > 0 Then
ReDim arr(loAnzahl - 1)
Else
MsgBox "Keine 4 in Spalte A vorhanden."
Exit Sub
End If
For i = 1 To loLetzte
If .Cells(i, "A") = 4 Then
arr(j) = .Cells(i, "B")
j = j + 1
End If
Next i
.Cells(2, "E") = Join(arr, ",")
End With
End Sub
Gruß Werner
Anzeige
nicht vergessen....
18.06.2019 16:33:05
Werner
Hallo Andreas,
...die Variablen i und j als Long zu deklarieren - das hab ich nämlich vergessen.
Gruß Werner
AW: Werte von Array in eine Zelle schreiben
18.06.2019 16:26:11
Array
Mach dir keine Gedanken Andreas. Hajo ist unser Forums Bot, die automatisch generierten Antworten muss man nicht immer verstehen ;-)
Gruß
Daniel
Ne, der hat wohl ne Sonderedition von Excel... o.T
18.06.2019 16:28:02
Excel...
Anzeige
AW: Werte von Array in eine Zelle schreiben
18.06.2019 16:16:47
Array
Hallo Andreas,
so:
Cells(2, 5).Value = Join(arr, ",")

Gruß
Nepumuk
AW: Werte von Array in eine Zelle schreiben
18.06.2019 17:20:27
Array
Vielen Dank für die vielen Antworten. Alle eure Lösungen haben geklappt. Ich habe mich für
Cells(3, 5).Value = Join(arr2, ",")
entschieden, da es am kürzesten ist und es in meinem Fall ausreicht.
Anzeige
AW: Werte von Array in eine Zelle schreiben
18.06.2019 17:55:06
Array
Hi
ist doch alles viel zu umständlich.
du kannst doch den Text für das Endergebnis auch gleich direkt erstellen.
wenn du ein Array haben willst, kannst du das dann immer noch mit Split aus dem Text erzeugen.
hat einfach den Vorteil, dass du dich nicht darum kümmern musst, wieviele Elemente zum Ergebnis gehören:
Sub a()
Dim z As Long
Dim arr
Dim Erg As String
For z = 1 To 10
If Cells(z, 1) = 4 Then Erg = Erg & "," & Cells(z, 2)
Next
Erg = Mid(Erg, 2)
Cells(3, 5) = Erg
arr = Split(Erg, ",")
End Sub

Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Werte von Array in eine Zelle schreiben


Schritt-für-Schritt-Anleitung

Um die Werte eines Arrays in eine Zelle zu schreiben, kannst du den folgenden VBA-Code verwenden. Dieser Code liest die Werte aus einer bestimmten Spalte und fügt sie in eine Zelle mit Kommas getrennt ein.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject", dann "Einfügen" und "Modul".
  3. Kopiere den folgenden Code in das Modul:
Sub WerteInZelleSchreiben()
    Dim arr() As Variant
    Dim i As Long, j As Long
    Dim loLetzte As Long

    With Worksheets("Tabelle1")
        loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
        j = 0

        For i = 1 To loLetzte
            If .Cells(i, 1).Value = 4 Then
                ReDim Preserve arr(j)
                arr(j) = .Cells(i, 2).Value
                j = j + 1
            End If
        Next i

        .Cells(2, 5).Value = Join(arr, ", ")
    End With
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf "Ausführen" klickst.

Häufige Fehler und Lösungen

  • Fehler: "Subscript out of range"

    • Lösung: Überprüfe, ob die angegebene Tabelle existiert und der Name korrekt ist.
  • Fehler: "Typenkonflikt"

    • Lösung: Stelle sicher, dass die Zellen, die du liest, die erwarteten Datentypen enthalten (z. B. keine Texte in Zahlenfeldern).
  • Fehler: "Keine 4 in Spalte A vorhanden."

    • Lösung: Überprüfe deine Daten in Spalte A, um sicherzustellen, dass es tatsächlich Einträge mit dem Wert 4 gibt.

Alternative Methoden

Eine einfache Methode, um die Werte aus einem Array in eine Zelle zu schreiben, ist die Verwendung der Join-Funktion. Hier ist ein Beispiel:

.Cells(2, 5).Value = Join(arr, ",")

Diese Zeile fügt alle Elemente des Arrays arr in die Zelle E2 ein, getrennt durch ein Komma.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du Arrays in Zellen schreiben kannst:

  1. Mit einer festen Anzahl von Zeilen:
For z = 1 To 10
    If Cells(z, 1) = 4 Then
        Erg = Erg & "," & Cells(z, 2)
    End If
Next
  1. Direktes Erstellen des Textes:
Dim Erg As String
For z = 1 To 10
    If Cells(z, 1) = 4 Then Erg = Erg & "," & Cells(z, 2)
Next
Erg = Mid(Erg, 2) ' Entfernt das führende Komma
Cells(3, 5) = Erg

Tipps für Profis

  • Nutze ReDim Preserve, um die Größe des Arrays während der Laufzeit dynamisch anzupassen.
  • Achte darauf, die Variablen korrekt zu deklarieren, um Typenkonflikte zu vermeiden.
  • Verwende die Join-Funktion, um den Code effizienter und leichter lesbar zu gestalten.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass alle Werte korrekt in die Zelle geschrieben werden?
Stelle sicher, dass dein Array vor dem Schreiben in die Zelle nicht leer ist und dass alle Elemente den gewünschten Datentyp haben.

2. Kann ich diese Methode auch in anderen Excel-Versionen verwenden?
Ja, der VBA-Code sollte in Excel 2010 und späteren Versionen funktionieren, solange du die Makros aktiviert hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige