Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Schleife fürs Verketten - eilt leider -

199 views
Skip to first unread message

Heiner Berghoff

unread,
May 1, 2000, 3:00:00 AM5/1/00
to
Hallo XL-Freunde,
nochmals folgendes Problem (v.29.12. 11:42)

In einem durch zwei Überschriften ( per VBA gesucht und mit x und y
definiert) markierten Bereich befinden sich mehrfach 2-5 Zeilen
Text durch Leerzellen getrennt. Dieser Bereich wird von mir mit
resize um zwei auf drei Spaltenerweitert. Diese Textbereiche
( unterschiedlich 3-6 Stück) möchte ich wieder in einer Zelle mit
"verketten" vereinigen. Ich stelle es mir so vor:

Geh nach unten suche die erste Zelle die nicht leer ist;
zähle die Reihen bis zur ersten Leerzelle ( Z )
Füge in der Leerzelle "verketten" mit Anzahl Z ein;
ActiveCell.FormulaR1C1 = "=CONCATENATE(R[-3]C&"" ""&R[-2]C&"" ""&R[-1]C)"
Erweitere die Formel auch für die beiden Spalten b und c
und kopiere die Formel als Wert in die Spalten d,e und f.

Dann müßte sich die/eine Schleife den nächsten Bereich
unterhalb der eingefügten Formel vornehmen
Die Schleife läuft durch bis zur Zelle y.
Als Ergebnis habe ich die verketteten Texte als Werte,
nicht als Formel in den Spalten d-f. Mittels
Gehezu/Inhalte/Leerzellen/Zellen löschen in den Spalten
d-f habe ich dann das gewünschte Ergebnis in d1 - f(?)
welches ich dann an die gewünschte Stelle einer anderen
Tabelle kopieren kann. Dann wird meine "Zwischenlagertabelle"
gelöscht und das nächste Dokument ( mehr als 1000 !) ist dran.
Wenn ich das richtig erklärt habe, müßtet Ihr als erstes auf die
Excel "Teilsummenfunktion" kommen. Dies ist aber auf Text
nicht anwendbar, oder bin ich auf dem falschen Dampfer ?

Wer hat ein wenig Zeit für mich und bastelt mir die VBA-Schleife.

heiner....@cityweb.de


Heiner Berghoff.vcf

Ulli Tolksdorf

unread,
May 1, 2000, 3:00:00 AM5/1/00
to
Hi!!

Also mir zumindest ist jetz so auf anhieb nicht sooo klar, was du willst...

Per VBA verschiedene zeilen die text enthalten in eine stecken?

wenn du eine variable hast, kannst du diese problemlos verketten. beispiel:

For x=1 to 10
strText=StrText & x
next

jetzt hast du eine Variable, die den Inhalt 12345678910 hat. ist es das, was
du suchst?


bye
Ulli.

Heiner Berghoff schrieb:

--
Microsoft MVP für Excel

Heiner Berghoff

unread,
May 2, 2000, 3:00:00 AM5/2/00
to
Danke für Dein Verständnis, Ulli,

> Also mir zumindest ist jetz so auf anhieb nicht sooo klar, was du
willst...

Der relevante Abschnitt der Datei sieht etwa so aus:

Überschrift1
Leerzeile
Leerzeile
ab
df
cl
Leerzeile(1)
hd
gh
Leerzeile(2)
am
ol
df
Leerzeile(3)
Leerzeile
Leerzeile
Überschrift2

In den Leerzeilen (1,2,3) unter den je unbekannt langen Textblocks
möchte ich mit "verketten" die Texte wieder in eine
Zeile bringen. Problem sind die unbekannte Anzahl an
Blocks sowie die unbekannte Anzahl an Zeilen innerhalb eines
Blocks. Solltest Du mir helfen wollen, maile ich Dir die Datei
mal zu.

Michael Gmeiner

unread,
May 2, 2000, 3:00:00 AM5/2/00
to
Hallo Heiner,

geht es Dir nur darum die Daten zwischen einer und der nächsten Leerzelle zu
einem String zusammenzufassen?

Vielleicht kann Dir meine kleine Prozedur dabei helfen. Einfach mal
ausprobieren und zurückmailen, ob's geklappt hat.

Gruß

Michael

Sub verketten()
Dim ende As Long
Dim beginn As Long
Dim tabellenende As Long
Dim nächsterBeginn As Long
Dim zf as String

tabellenende = tabellenende = Sheets
"Tabelle2").UsedRange.Rows.Count
beginn = Cells(1, 1).End(xlDown).Row
For i = 1 To tabellenende
If Cells(beginn + 1, 1) = "" Then
ende = beginn
Else
ende = Cells(beginn, 1).End(xlDown).Row
End If


If ende = tabellenende Then Exit Sub

nächsterBeginn = Cells(ende, 1).End(xlDown).Row

For Each cell In Range(Cells(beginn, 1), Cells(ende, 1))
zf = zf & cell.Value
Next cell

Cells(ende + 1, 1) = zf
beginn = nächsterBeginn
zf = ""
If i = tabellenende Then Exit Sub
Next i
End Sub

Heiner Berghoff <heiner....@cityweb.de> schrieb in im Newsbeitrag:
8en7sv$paa$1...@news.cityweb.de...

0 new messages