Excel: Werte aus entsprechender Kopfzeile ausgeben

Plauzi92

Aktives Mitglied
Hi, ich weiß leider nicht ob das hier das richtige Unterforum ist, aber möglicherweise brauche ich zur Lösung VBA, was irgendwo ja auch eine "andere Programmiersprache" ist.

Folgendes Problem:

Ich möchte gerne in Excel überprüfen welche Zellen Werte enthalten, und welche nicht.

ABCDAusgabe
1XXXD
2XXB C
3XA B D
4XXA C

Falls eine Zelle keinen Wert enthält, möchte ich den entsprechenden Wert der Kopfzeile (hier beispielhaft A-D) dieser Spalte ausgegeben bekommen. Das allerdings über alle Spalten hinweg.
Für die obige Beispieltabelle wäre die Ausgabe dann wie folgt:
Zeile 1: D
Zeile 2: B C
Zeile 3: A B D
Zeile 4: A C

Bis jetzt habe ich nur eine sehr umständliche Lösung, bei der ich eine weitere Tabelle erstellen muss die mir für jede Zelle den Wert der Kopfzeile ausgibt falls sie leer ist und diese füge ich dann über "Textkette" zusammen. Aber es muss doch irgendwie eine Formel geben mit der ich die gesamte Zeile auf einmal überprüfen kann, oder?

Danke im Voraus :)
 

mustBe

Mitglied
Hi. So sollte das gehen:

Code:
Function checkRows()
Const startRow = 2
Const endRow = 5
Const startCol = 2
Const endCol = 5
Dim i As Long
Dim j As Long
For i = startRow To endRow
    Set emptyCols = checkRow(range(Cells(i, startCol), Cells(i, endCol)))
    If emptyCols.Count > 0 Then
        Dim a As Variant
        ReDim a(emptyCols.Count - 1)
        For j = 0 To emptyCols.Count - 1
            a(j) = emptyCols(j + 1)
        Next j
        Cells(i, endCol + 1).Value = Join(a, ", ")
    Else
        Cells(i, endCol + 1).Value = "-"
    End If
Next i
End Function

Function checkRow(ByVal r As range) As Collection
Set coll = New Collection
For Each c In r
    If IsEmpty(c.Value) Then
        coll.Add (c.Column)
    End If
Next c
Set checkRow = coll
End Function

1658248142515.png
 

Meniskusschaden

Top Contributor
wo soll das ausgeben werden? Konsole Toaster txt? Was ist das end Ergebnis?
Ich habe die Aufgabenstellung auch nicht verstanden. Wenn nur die Ausgabespalte der Tabelle gefüllt werden soll, wäre es ja naheliegend, eine Formel wie =WENN(ISTLEER(B2);B$1;"")&WENN(ISTLEER(C2);C$1;"")&WENN(ISTLEER(D2);D$1;"")&WENN(ISTLEER(E2);E$1;"") zu verwenden. Die hat zwar den Schönheitsfehler, dass sie einen Term pro Spalte benötigt, aber aus der Excel-Fraktion ist man ja schlimmere Verbrechen gewohnt.;) Kommt natürlich auch darauf an, um wieviele Spalten es geht.
 

mustBe

Mitglied
Hallo @Meniskusschaden . Er hat nach einem Makro gefragt, das alle Spalten in der Ergebnisspalte auflistet, die keinen Inhalt haben/leer sind. Das sollten meine zwei Funktionen erfüllen. Und ich bin Makro-Experte...

Ob "checkRows" Parameter haben sollte oder "checkRow" andere Parameter haben sollte, darüber ließe sich trefflich diskutieren.

Im Prinzip geschieht Folgendes:
  1. die n x m Tabelle wird Zellenweise durchgegangen (also Spalte... Reihe...),
  2. für jede Zelle wird geprüft, ob diese leer ist,
  3. wenn diese leer ist, wird sie einer Ergebnisliste hinzugefügt,
  4. die Ergebnisliste wird dann in die Ergebniszelle geschrieben (für jede Reihe...).

Also kein Hexenwerk, eigentlich ein imperativer Ansatz.
 
Y

yfons123

Gast
Junge, was schreibst du da?! Wenn man keine Ahnung hat sollte man das Esswerk halten...
gut dass die Anforderung war dass die Header zeile eingetragen wird in die spalte falls sie leer ist und nicht die spalten nummer

deswegen bewirkt dein fancy visualbasic ding gar nichts.. da es keinerlei der anforderungen erfüllt da es ganz klar um die header zeile geht, Tobias :)
 

Meniskusschaden

Top Contributor
Er hat nach einem Makro gefragt, das alle Spalten in der Ergebnisspalte auflistet, die keinen Inhalt haben/leer sind.
Er hat geschrieben, dass er "möglicherweise" eines benötigt. Nach einer Formel hat er auch gefragt. Normalerwiese würde ich eine Formel vorziehen und ein Makro nur einsetzen, wenn es mit Formel nicht geht oder zu umständlich wird.
gut dass die Anforderung war dass die Header zeile eingetragen wird in die spalte falls sie leer ist und nicht die spalten nummer
Das lässt sich ja leicht anpassen. Als Grundlage ist das Makro doch gut zu gebrauchen, wenn es denn auf eine Makro-Lösung hinaus läuft.
 
Y

yfons123

Gast
Als Grundlage ist das Makro doch gut zu gebrauchen,
das kann gut sein.. nur ich wollte nochmal eine bestätigung dass es auch wirklich tobias ist

bestimmt kann man das verwenden nur ich weis halt nicht wo die "Ausgabe" hin sollte
zb möchte er eine extra datei schreiben und da die ausgabe hinleiten ? => würde powershell gehen
möchte er in Excel ? => würde ich auch formeln weg gehen

vllt braucht er auch was ganz was anderes :)
 

KonradN

Super-Moderator
Mitarbeiter
das kann gut sein.. nur ich wollte nochmal eine bestätigung dass es auch wirklich tobias ist
Und genau das sollte hier im Thread doch erst einmal egal sein.
bestimmt kann man das verwenden nur ich weis halt nicht wo die "Ausgabe" hin sollte
Das sieht man aber doch in der Tabelle. Es geht halt um VBA / Excel. Daher ist das eine gute Lösung von @mustBe - unabhängig davon, ob es nun Tobias ist oder nicht.
zb möchte er eine extra datei schreiben und da die ausgabe hinleiten ? => würde powershell gehen
Nein, da der TE direkt von VBA und Excel spricht. Also doch einfach einmal den Thread aufmerksam lesen statt einfach nur User dumm anzumachen. Das ist, was mich hier im Forum immer wieder massiv nervt.

möchte er in Excel ? => würde ich auch formeln weg gehen
Dann bereite es auf. Wobei das dann nicht die Anforderung VBA erfüllen würde. Aber das wäre vielleicht tatsächlich eine Alternative. Aber wenn man den Thread gelesen hätte, dann wäre einem in #4 schon aufgefallen, dass diese Option auch schon gezeigt wurde. Daher ist es für mich absolut unverständlich, hier noch zu diskutieren, ob dies auch gehen würde oder nicht.

vllt braucht er auch was ganz was anderes :)
Also was er (der TE) aus meiner Sicht bestimmt nicht braucht, sind Deine Beiträge und unnötigen Nachfragen die nur entstehen, weil Du nicht aufmerksam genug gelesen hast.
 

Plauzi92

Aktives Mitglied
Sorry, wollte hier keine große Diskussion auslösen. Das ganze ist nur ein kleiner Teil eines größeren Problems und ich brauchte die Daten in einem bestimmten Format, ohne groß in der Tabelle fummeln zu müssen. Tatsächlich löst der Vorschlag von @Meniskusschaden mein Problem schon perfekt. Hätte ich auch selbst drauf kommen können die Ausgaben innerhalb einer Spalte zu verknüpfen, anstatt jeweils eine neue Spalte zu nutzen um die Ausgaben im Nachgang zu verketten.. :D

Vielen Dank an alle :)
 

KonradN

Super-Moderator
Mitarbeiter
Ich denke nicht, dass du in diesem Kontext beurteilen könntest, welche Lösung hierbei "perfekt" oder angemessen ist.
Da er derjenige ist, der das Problem mit allen Anforderungen am Besten kennt von uns hier, ist er zumindest hier im Forum derjenige, der es am Besten bewerten kann. Wir können und nur auf Basis der Informationen, die wir bekommen haben, ein Bild machen und die Lösungen mit der eingeschränkten Sicht bewerten.
 

Ähnliche Java Themen

Neue Themen


Oben