Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1360to1364
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Inhalt von Zellen Zeile für Zeile zusammenfassen

Inhalt von Zellen Zeile für Zeile zusammenfassen
19.05.2014 13:53:13
Zellen
Hallo Zusammen,
ich hab ein kleines Problem, bei dem mir hoffentlich jemand helfen kann.
Ich möchte den Inhalt mehrerer Zellen in einer zusammenfassen. Allerdings nur Zeile für Zeile und mit variabler Anzahl der Spalten, die zusammen gefasst werden sollen. Es ist aber immer ein zusammenhängender Bereich, der auch Leerzellen enthalten kann. Wenn ich als den Bereich A2:O200 angebe, sollen also 200 Zusammenfassungen entstehen.
folgenden Code habe ich bereits:

Sub Makro1()
Cells(1, 17).FormulaR1C1 = VerketteZeile(1, 15, "+%")
Range(A2:O200).FormulaR1C1 = VerketteZeile(1, 15, "+%")
End Sub
Function VerketteZeile(ByVal iStartspalte As Integer, ByVal iEndSpalte As Integer, Optional  _
strTrennzeichen As String = ",") as String
'iStartspalte ab dieser Spalte soll es losgehen
'iEndSpalte   bis zu dieser Spalte wird zusammen gefasst
'strTrennzeichen  Zeichen zwischen den Spalten
Dim i As Integer
Dim strTmp As String
Dim ilenGes As Integer
Dim iLenTrenn As Integer
strTmp = ""
For i = iStartspalte To iEndSpalte
strTmp = strTmp & "RC[" & i & "]" & strTrennzeichen
Next i
ilenGes = Len(strTmp)
iLenTrenn = Len(strTrennzeichen)
strTmp = Left(strTmp, ilenGes - iLenTrenn)
VerketteZeile = strTmp
End Function

Allerdings liefert mir dies noch das falsche Ergebnis:
RC[1]+%RC[2]+%RC[3]+%RC[4]+%RC[5]+%RC[6]+%RC[7]+%RC[8]+%RC[9]+%RC[10]+%RC[11]+%RC[12]+%RC[13]+%RC[14]+%RC[15]
und nicht den Inhalt der jeweiligen Zellen. Ich könnte den Bereich als Range definieren und Zelel für zelle durchlaufen und so an den Inhalt kommen. Allerdings wollte ich damit erreichen, dass wenn ich sehr viele Zeilen (z.B. komplettes Tabellenblatt) beschreiben will, ich nur einen Aufruf machen brauch und excel das als eine Region binnen kürzester Zeit füllt.
Könnt ihr mir den Knoten im Kopf bitte lösen
Danke
yummi

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inhalt von Zellen Zeile für Zeile zusammenfassen
19.05.2014 14:51:54
Zellen
Hallo,
Function VerketteZeile(ByVal iStartspalte As Integer, ByVal iEndSpalte As Integer, Optional _
strTrennzeichen As String = ",") As String
'iStartspalte ab dieser Spalte soll es losgehen
'iEndSpalte   bis zu dieser Spalte wird zusammen gefasst
'strTrennzeichen  Zeichen zwischen den Spalten
Dim Tmp
Dim lRow As Long
lRow = Application.Caller.Row
Tmp = Range(Cells(lRow, iStartspalte), Cells(lRow, iEndSpalte))
Tmp = Application.Transpose(Tmp)
Tmp = Application.Transpose(Tmp)
VerketteZeile = Join(Tmp, strTrennzeichen)
End Function

Gruß
Rudi

Anzeige
AW: Inhalt von Zellen Zeile für Zeile zusammenfassen
19.05.2014 15:12:15
Zellen
Hallo Rudi,
erstmal vielen Dank für deine Hilfe.
Wenn ich die Funktion so verwende, wie Du geschrieben hast, bekomme ich einen Laufzeitfehler 424 beim Caller Aufruf. Wenn ich die row Variable als Übergabewert mache funktioniert es für eine Zeile super.
Wenn ich dann aber einen Aufruf mache ala

Range("A2:O10").FormulaR1C1 = VerketteZeile(1, 15, "+")
dann bekomme ich beim 1. Transpose eien Typenunverträglichkeit 13
Gruß
yummi

AW: Inhalt von Zellen Zeile für Zeile zusammenfassen
19.05.2014 15:18:38
Zellen
Hallo,
mit der Anweisung schreibst du in den Bereich A2:O200 die Formel.
Das kann doch nicht dein Ziel sein.
Gruß
Rudi

Anzeige
AW: Inhalt von Zellen Zeile für Zeile zusammenfassen
19.05.2014 15:40:22
Zellen
Hallo Rudi,
doch im Prinzip schon.
Ich versuch es nochmal anders zu erklären: Ich habe eine unbestimmte Anzahl an Spalten die komplett gefüllt sind (ganze Tabellenblatt bis zur letzten Zeile) In den Spalten stehen unterschiedliche Werte (strings)
Was ich erreichen möchte ist eine zusätzlcihe Spalte, in der jede Zeile einzeln zusammen gefasst wird.
Wenn ich es händisch mache würde ich die Zellen A2:O1048576 auswählen und dann die Formel
=A2&"+"&B2&"+"&....&O2 eintragen und die Eingabe mit [Strg]+[Enter] abschliessen.
das möchte ich gern automatisieren.
Gruß
yummi

Anzeige
AW: Inhalt von Zellen Zeile für Zeile zusammenfassen
19.05.2014 15:53:25
Zellen
Hallo,
das ergäbe einen Zirkelbezug denn in A2 stünde die Formel =A2&"+"&B2&"+"&....&O2
Anders wenn die Formel in P2:P200 steht.
Gruß
Rudi

AW: Inhalt von Zellen Zeile für Zeile zusammenfassen
19.05.2014 16:00:46
Zellen
Hallo Rudi,
Du hast Recht. Die Erklärung ist nicht eindeutig:
Ich habe z.B. die Spalten A bis O beschrieben. Die Zusammenfassung soll in Spalte P.
Ich wähle also P2:P1048576 aus und schreibe obige Formel rein mit Strg+Enter.
Somit kein Zirkelbezug, ERklärung war fehlerhaft.
Gruß
yummi

AW: Inhalt von Zellen Zeile für Zeile zusammenfassen
19.05.2014 15:57:20
Zellen
Hallo,
vielleicht hilt dir ja diese Uni-Verkettenfunktion
es können sowohl Zeilen als auch Spalten verkettet werden
ist wahl = 1 dann Zeilen verketten
ist wahl = 0 dann Spalten verketten
bei Bezug dann je nach wahl zeile oder spalte
Anfang und Ende dann je nach wahl Zeilen oder Spalten
Function Verketten_zs(wahl As Boolean, bezug As Long, Anfang As Long, Ende As Long, TZ As  _
String) As String
Dim i As Long
Dim temp As String
If wahl Then
For i = Anfang To Ende
temp = temp & Cells(bezug, i).Value & TZ
Next
Else
For i = Anfang To Ende
temp = temp & Cells(i, bezug).Value & TZ
Next
End If
Gruß Ewald

Anzeige
AW: Inhalt von Zellen Zeile für Zeile zusammenfassen
19.05.2014 16:33:47
Zellen
Hallo Ewald,
nach Ergänzen des fehlenden Bereichs gefällt mir die Version sehr gut. Sie ist schnell (auch für 1048576 Zeilen) und liefert mir fast das gewünschte :-)
Mit einem weiteren Übergabeparameter ist es aber einfach möglich den Trenner am Ende abzuschneiden oder bei Bedarf am Anfang zuzufügen.
Vielen Dank
yummi

AW: Inhalt von Zellen Zeile für Zeile zusammenfassen
19.05.2014 16:07:10
Zellen
Hallo,
dann doch einfach
Range("P2:P200").Formula = "=verkettenzeile(1,15,""+"")"
Gruß
Rudi

AW: Inhalt von Zellen Zeile für Zeile zusammenfassen
19.05.2014 16:27:52
Zellen
Hallo Rudi,
das liefert mir nur #NAME? als Ergebnis.
aber der Vorschlag von Ewald ist auch sehr schnell und liefert das was ich will.
Danke
yummi
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige