1.6k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Zusammen,
ich habe folgendes Problem - in einer Datei werden unsere
Konfigurationsinformationen gespeichert.
Sinngemaß schaut die Tabelle so aus
Spalte A mit den Werten:
PRD
TEST
LABOR
SUPPORT

Spalte B mit den Werten
WEBHOST_ID_[1,n]
DBHOST_ID_[1,n]
FW_[1,n]
API_[1,n]

wobei [1,n] bedeutet API1 / API2 / ... / APIn

Die Tabelle ist per Autofilter für die Spalte A auf die Umgebungen
selektierbar.

In einer Zelle will ich nun folgende Werte bekommen
API_1,API_2,API_3
FW_1,FW_2,FW_3,FW_4,FW_5,FW_6

mit der tollen Verketten1 Funktion:

Function VERKETTEN1(Bereich As Range, Optional Trenner As String
= ",") As String
'http://www.office-loesung.de/fpost803391.php#803391
Dim rng As Range, r As Range
Dim i As String
For Each rng In Bereich.Columns
For Each r In rng.Cells
i = i & r & Trenner
Next
Next
VERKETTEN1 = Left(i, Len(i) - Len(Trenner))
End Function

Wird die Filterung nicht berücksichtigt und das ist das Problem

10 Antworten

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

bei deiner Verketten-Funktion durchläufst du alle Zellen, unabhängig davon, ob diese gefiltert sind.

Versuch mal statt
For Each r In rng.Cells

die Version
For Each r In rng.Cells.SpecialCells(xlCellTypeVisible)


Damit sollten dann nur die sichtbaren Zellen durchlaufen werden.

Gruß

M.O.
0 Punkte
Beantwortet von
Danke M.O. für den Tip. Leider werden nach wie vor alle Zellen berücksichtigt.
Hinweis:
Ich habe ein einer Zelle unterhalb der Tabellendaten die Formel eingebaut.

Grüße
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

wie sieht denn deine Verketten1-Formel aus?

Gruß

M.O.
0 Punkte
Beantwortet von
=VERKETTEN1(F2:F118)


in dieser Variante
=VERKETTEN1(F:F)
mit F:F laufe ich auf den Fehler #WERT
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

ändere die Funktion wie folgt ab:

Function VERKETTEN1(Bereich As Range, Optional Trenner As String = ",") As String
'http://www.office-loesung.de/fpost803391.php#803391
Dim rng As Range, r As Range
Dim i As String
For Each rng In Bereich.Columns
For Each r In rng.Cells
If Rows(r.Row).Hidden = False Then i = i & r & Trenner
Next
Next
VERKETTEN1 = Left(i, Len(i) - Len(Trenner))
End Function


Dann noch einmal die Formel neu berechnen lassen.
Mit F:F funktioniert die Formel nicht, da dann die ganze Spalte F verkettet wird. Dazu gehört auch die Überschrift. Hierzu müsste man die Function entsprechend ändern.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.

prima - mit dieser Anpassung werden in der Tat nur die sichbaren Werte berücksichtigt.
Cool

Einen kleinen Schönheitsfehler hats noch - der String wird nun immer mit dem Trenner - also einem , abgeschlossen.


Grüße
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

bei mir nicht ;-).

Mit der Zeile
VERKETTEN1 = Left(i, Len(i) - Len(Trenner))

sollte eigenlich der letzte Trenner entfernt werden.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo
hmm selbst nach dem zweiten Mal hineinkopieren noch immer mit dem , am Ende
Ich habe das mal hier
hier
hochgeladen.

Viele Grüße
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

das hängt daran, dass du mit der Formel =VERKETTEN1(E2:E6) auch eine Leerzeile ansprichst. Änderst du die Formel in =VERKETTEN1(E2:E5) so wird dein gewünschtes Ergebnis angezeigt.

Gruß

M.O.
0 Punkte
Beantwortet von
top das ist's gewesen.
Vielen Dank für deine Unterstützung
...