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

Forumthread: Array in Zelle schreiben

Array in Zelle schreiben
ChrisAugsburg
Hallo Excelianer
ich habe eine Arrayformel z.B. {=WENN(B1:B5="";A1:B5;0)} diese liefert das z.B. Ergebnis {1;0;3,0;5}
Gibt es eine Möglichkeit um die arrayformel eine weitere Formel zu bauen die mir das ergebnis "1;3;5" als Text ausgibt.
Sprich gibt es eine Möglichkeit das Array in einer einzigen Zelle komplett anzeigen zu lassen und dabei 0- bzw. Fehlerwerte auszulassen?
Gruss Chris
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
{=WENN(B1:B5="";A1:A5;0)} soll natürlich so heisse
30.08.2010 12:15:23
ChrisAugsburg
{=WENN(B1:B5="";A1:A5;0)} soll natürlich so heissen, sorry
per UDF
30.08.2010 13:00:35
Rudi
Hallo,
anstatt deiner Formel:
=Chris(B1:B5;"";A1:A5;0)
Function Chris(rKrit, sMatch, rDann, sSonst)
Dim arrTmp, i As Long, n As Integer, arr()
ReDim arrTmp(rKrit.Cells.Count)
For i = 1 To rKrit.Cells.Count
If rKrit(i) = sMatch Then
arrTmp(i - 1) = rDann(i)
Else
arrTmp(i - 1) = sSonst
End If
Next
For i = 0 To UBound(arrTmp)
If Not IsError(arrTmp(i)) Then
If arrTmp(i)  0 Then
ReDim Preserve arr(n)
arr(n) = arrTmp(i)
n = n + 1
End If
End If
Next
Chris = Join(arr, ";")
End Function

Gruß
Rudi
Anzeige
AW: per UDF
30.08.2010 16:21:17
ChrisAugsburg
Perfekt, 1000 Dank.
Text in Zelle schreiben, kein Array
30.08.2010 13:05:32
Erich
Hi Chris,
also Matrixformel kenne ich das nicht. Aber so ginge es:
 ABCD
11 11;3;5
22x0 
33 3 
44x0 
55 5 

Formeln der Tabelle
ZelleFormel
C1{=WENN(B1:B5="";A1:A5;0)}
D1=TEIL(WENN(ISTFEHLER(A1)+ISTFEHLER(B1); "";WENN(B1="";";"&A1;"")) &WENN(ISTFEHLER(A2)+ISTFEHLER(B2); "";WENN(B2="";";"&A2;"")) &WENN(ISTFEHLER(A3)+ISTFEHLER(B3); "";WENN(B3="";";"&A3;"")) &WENN(ISTFEHLER(A4)+ISTFEHLER(B4); "";WENN(B4="";";"&A4;"")) &WENN(ISTFEHLER(A5)+ISTFEHLER(B5); "";WENN(B5="";";"&A5;"")); 2;9^9)
C2{=WENN(B1:B5="";A1:A5;0)}
C3{=WENN(B1:B5="";A1:A5;0)}
C4{=WENN(B1:B5="";A1:A5;0)}
C5{=WENN(B1:B5="";A1:A5;0)}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Text in Zelle schreiben, kein Array
30.08.2010 16:24:20
ChrisAugsburg
Auch dir vielen Dank, werde jedoch die UDF von Rudi nehmen, da ich mir dann die Hilfsspalte sparen kann.
Formel ist ohne Hilfsspalte
30.08.2010 16:34:39
Erich
Hi Chris,
sicher ist Rudis UDF geschickter und universeller einsetzbar, aber deine Begründung stimmt nicht:
In meiner Formel in D1 kommt Spalte C nicht vor, also auch damit kannst du dir die Hilfsspalte sparen.
In Spalte C steht einfach nur deine bisherige Formel.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Formel ist ohne Hilfsspalte
30.08.2010 16:53:11
ChrisAugsburg
stimmt du hast recht, tut mir leid.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Array in Zelle schreiben


Schritt-für-Schritt-Anleitung

Um ein Array in einer einzigen Zelle anzuzeigen und dabei 0- bzw. Fehlerwerte auszuschließen, kannst du eine benutzerdefinierte Funktion (UDF) verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, wie du dies in Excel umsetzen kannst:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Kopiere und füge den folgenden VBA-Code in das Modul ein:

    Function Chris(rKrit As Range, sMatch As String, rDann As Range, sSonst As Variant) As String
       Dim arrTmp As Variant, i As Long, n As Integer, arr() As Variant
       ReDim arrTmp(rKrit.Cells.Count)
       For i = 1 To rKrit.Cells.Count
           If rKrit(i) = sMatch Then
               arrTmp(i - 1) = rDann(i)
           Else
               arrTmp(i - 1) = sSonst
           End If
       Next i
       For i = 0 To UBound(arrTmp)
           If Not IsError(arrTmp(i)) Then
               If arrTmp(i) <> 0 Then
                   ReDim Preserve arr(n)
                   arr(n) = arrTmp(i)
                   n = n + 1
               End If
           End If
       Next i
       Chris = Join(arr, ";")
    End Function
  4. Schließe den VBA-Editor.

  5. Verwende die Funktion in einer Zelle, zum Beispiel: =Chris(B1:B5;"";A1:A5;0). Damit erhältst du die gewünschten Werte als Text in einer einzigen Zelle.


Häufige Fehler und Lösungen

  • Fehler: #NAME?
    Dieser Fehler tritt auf, wenn Excel die UDF nicht erkennt. Stelle sicher, dass der VBA-Code korrekt eingefügt wurde und dass die Makros aktiviert sind.

  • Fehler: Ergebnis zeigt unerwartete Werte
    Überprüfe, ob die Zellreferenzen in deiner Funktion korrekt sind. Achte darauf, dass die Bereiche in den Argumenten rKrit und rDann die gleiche Größe haben.


Alternative Methoden

Wenn du keine UDF verwenden möchtest, kannst du auch alternative Formeln nutzen. Hier ist ein Beispiel:

  1. Verwende die Funktion TEXTVERKETTEN(), um die Werte zusammenzuführen, wenn du Excel 365 oder Excel 2021 verwendest:

    =TEXTVERKETTEN(";" ; WAHR ; WENN(B1:B5="";"";A1:A5))
  2. Eine weitere Möglichkeit ist die Verwendung der FILTER()-Funktion in Kombination mit TEXTVERKETTEN(), um nur die gewünschten Werte anzuzeigen:

    =TEXTVERKETTEN(";" ; WAHR ; FILTER(A1:A5; B1:B5<>""))

Diese Methoden sind besonders nützlich, wenn du keine Programmierkenntnisse hast.


Praktische Beispiele

Hier ist ein praktisches Beispiel, das zeigt, wie du die oben genannten Techniken anwenden kannst:

Angenommen, du hast folgende Werte in den Zellen:

A B
1
2 x
3
4 x
5

Verwende die UDF in einer Zelle:

=Chris(B1:B5;"";A1:A5;0)

Das Ergebnis wird 1;3;5 sein, da die 0- und Fehlerwerte ausgeschlossen werden.


Tipps für Profis

  • Experimentiere mit der TEXTVERKETTEN()-Funktion, um eine flexible Lösung zu erhalten, die auch in Zellen ohne UDF funktioniert.
  • Nutze den FILTER()-Befehl, um dynamische Arrays zu erstellen, die sich automatisch aktualisieren, wenn sich die Eingabewerte ändern.
  • Wenn du große Datenmengen bearbeitest, achte auf die Effizienz deiner Formeln und Funktionen, um die Ladezeiten in Excel zu minimieren.

FAQ: Häufige Fragen

1. Wie kann ich die UDF in einer anderen Arbeitsmappe verwenden?
Du musst den VBA-Code in das Modul der anderen Arbeitsmappe kopieren. Stelle sicher, dass die Makros aktiviert sind.

2. Funktioniert diese Methode in älteren Excel-Versionen?
Die UDF sollte in Excel 2010 und späteren Versionen funktionieren. Die Formeln wie TEXTVERKETTEN() sind jedoch nur in Excel 365 und 2021 verfügbar.

3. Kann ich diese Technik auch für andere Datentypen verwenden?
Ja, du kannst die gleiche Logik auch für andere Datentypen anwenden, solange du die entsprechenden Bedingungen in der UDF anpasst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige