Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1548to1552
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

Formel soll immer die letzte Spalte nehmen...

Formel soll immer die letzte Spalte nehmen...
09.04.2017 18:40:08
Jenny
... damit ich sie nicht dauernd anpassen muss, wenn Spalten hinzukommen.
Hallo erstmal,
weiß jemand für dieses Problem eine Lösung,
VERKETTEN2(M1:BS1;";")
das ist die Formel und diese UDF steckt dahinter:
Function Verketten2(ByRef bereich As Range, Trennzeichen As String) As String
Dim rng As Range
For Each rng In bereich
If rng  "" Then
Verketten2 = Verketten2 & rng & Trennzeichen
End If
Next
If Len(Verketten2) > 0 Then _
Verketten2 = Left(Verketten2, Len(Verketten2) - Len(Trennzeichen))
End Function

seht ihr eine Möglichkeit, dass ich nicht mehr bevor ich die Formel nutzen möchte, mühselig danach suchen muss, welche die letzte Spalte ist, wie derzeit Spalte BS.
Spalte BS hat in einer einzigen von 14687 Zeilen einen Inhalt, ihr könnt euch ja denken wie mühselig das ganze ist.
Oder anders ausgedrückt, dass entweder durch das Makro oder die Formel die letzte Spalte bestimmt wird.
Noch als Info, erst ab Spalte M ist in allen Zeilen garantiert, dass es keine Leerzellen zwischen 2 Zellen mit Inhalt gibt. Also in den Spalten A bis L vor allem Spalte D gibt es sehr viele Leerzellen.
Gruß und danke für eure Hilfe
Jenny

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Es ist wenig sinnvoll, eine ausreichend ...
10.04.2017 03:06:21
Luc:-?
…fktionierende UDF an spezielle Umstände anzupassen, Jenny,
denn das könntest du mit den in neueren Xl-Versionen (wohl ab der deinen) inzwischen (im Abonnement) zV stehenden Pendants dieser UDF, TEXTKETTE und TEXTVERKETTEN, auch nicht tun!
Hier empfiehlt es sich, das wie bei Xl-Fktt über das Argument zu lösen, am besten, indem du deinem Bereich einen Namen gibst und dafür sorgst, dass die neuen Spalten stets vor der letzt­genannten eingefügt wdn und die Tabelle nicht etwa nur weiter­geschrieben wird. Das fktioniert dann aber auch mit direkter Adress­Angabe in der Fml.
Alternativ könntest du natürlich auch mit einer definierten Tabelle arbeiten, die ebenfalls auto­matisch erweitert wird.
Anderenfalls könntest du INDEX mit ganzer Zeile verwenden, bspw ab einer Anfangsspalte so:
=Verketten2(F1:INDEX(1:1;LetzteSpalte(1:1));"…")
LetzteSpalte wäre eine weitere UDF (ggf auch ein Fml-Konstrukt), die du selbst pgmmieren kannst (Bspp für die Ermittlung von letzter Zeile oder Spalte per VBA - hier als Zahl - sollte es ausreichend in Forum und Archiv geben). Das gälte dann im Prinzip auch für die neuen Xl-Fktt und die unten empfohlene UDF.
Deine weiteren Ausführungen lassen dann allerdings darauf schließen, dass du etwas mehr Komfort benö­tigst, als ihn diese UDF und wahr­schein­lich auch die neuen Xl-Fktt bieten. In diesem Fall solltest du dich mal mit den Möglich­keiten der UDF VJoin befassen!
Morrn, Luc :-?
Besser informiert mit …
Anzeige
AW: Es ist wenig sinnvoll, eine ausreichend ...
10.04.2017 11:00:33
Jenny
Hallo Luc,
ich muss ganz ehrlich sagen, ich verstehe nur Bahnhof.
Werde dann mal den Vorschlag von Daniel probieren, den ich wenigstens nachvollziehen kann.
Aber was anderes, mein Excel kennt die Funktionen Textkette und Textverketten nicht.
Ich habe kein Excel Abo, nur eine normale 2016 Kaufversion aus dem Einzelhandel.
Bin auch nicht bei Office365 oder wie das heißt angemeldet.
Gruß
Jenny
AW: Formel soll immer die letzte Spalte nehmen...
10.04.2017 08:50:23
Daniel
Hi
VBA kennt (mehr oder weniger gut) den genutzten Bereich auf dem Tabellenblatt, das ist die UsedRange.
wenn du jetzt die Schnittmenge (Intersect) aus der UsedRange und deiner Range bildet, kannst du diese Range auch größer angeben, ohne dass die Berechnung länger läuft.
For each rng in Intersect(Bereich, Bereich.Worksheet.UsedRange)
dann kannst du problemslos folgendes angeben:
=VERKETTEN2(1:1;";")
oder wenn die Verkettung erst ab M laufen soll
=VERKETTEN2(M1:XFD1;";")
ohne dass du eine Verlängerung der Laufzeit merken wirst.
Gruß Daniel
Anzeige
AW: Formel soll immer die letzte Spalte nehmen...
10.04.2017 11:03:00
Jenny
hallo Daniel,
erstmal danke für deine Hilfe, du meinst dann so?

Function Verketten2(ByRef bereich As Range, Trennzeichen As String) As String
Dim rng As Range
For Each rng In Intersect(bereich, bereich.Worksheet.UsedRange)
If rng  "" Then
Verketten2 = Verketten2 & rng & Trennzeichen
End If
Next
If Len(Verketten2) > 0 Then _
Verketten2 = Left(Verketten2, Len(Verketten2) - Len(Trennzeichen))
End Function
Gruß
Jenny
AW: Formel soll immer die letzte Spalte nehmen...
10.04.2017 11:17:24
Daniel
ja, genau so
dann läuft die Schleife nicht mehr über Zellen, die nicht zum genutzten Bereich gehören (diese sind sowieso immer leer).
kleiner Tip noch am Rande:
wenn man in der Schleife das Trennzeichen voran stellt:
Verketten2 = Verketten2 & Trennzeichen & rng
läßt es sich etwas einfacher wieder abtrennen:
Verketten2 = Mid(Verketten2, Len(Trennzeichen) + 1
Gruß Daniel
Anzeige
AW: Formel soll immer die letzte Spalte nehmen...
10.04.2017 15:08:56
Jenny
Hallo Daniel, habe jetzt auch mal ausgiebiger getestet.
Es wird auf jedenfall die längste Zeile komplett erfasst. Das klappt.
Die berechnungezeit bei rd. 15000 Zeilen hat sich jetzt schon verlängert, ich sag mal von ca. 3 Sek auf 1 Min.
Aber da es keine permanenten Formeln sind, sondern ich direkt danach die Werte einfüge, nehme ich diese Verlängerung in Kauf, brauche die Formel vlt. 1mal im Monat.
aber was mir auffällt, das Ergebnis wird bei mir in Kursivschrift ausgegeben, obwohl die Zelle vorher "normal" formatiert war.
Nicht das mich das stört kann es ja wieder ändern aber es ist mir aufgefallen.
Gruß
Jenny
Anzeige
AW: Formel soll immer die letzte Spalte nehmen...
10.04.2017 16:52:44
Daniel
Hi
wenn du es sowieso nur einmal im Monat machst und es nicht dynamisch ist, kannst du das ganze auch so lassen wie es ist und die Formel von Hand schreiben.
die letzte befüllte Spalte (und auch Zeile) kannst du einfach mit der Tastenkombination STRG+E finden.
Excel springt dann zur rechten untern Zelle der Usedrange und du musst nicht aufwendig suchen.
Gruß Daniel
AW: Formel soll immer die letzte Spalte nehmen...
10.04.2017 17:16:46
Jenny
Hallo Daniel,
hmmm das mit Strg E wusste ich nicht.
Aber wenn ich das drücke kommt diese Meldung hier
https://www.herber.de/bbs/user/112786.jpg
Anzeige
AW: Formel soll immer die letzte Spalte nehmen...
11.04.2017 12:58:05
Daniel
Hi
sorry ist nicht STRG+E sondern STRG+ENDE
Gruß Daniel
AW: Formel soll immer die letzte Spalte nehmen...
11.04.2017 17:33:05
Jenny
Hallo Daniel,
damit geht es, das stimmt.
Zumindest die letzte Spalte. Was mich wundert, es landet in Zeile 16189, nicht in 14512 (es war mal 16189, allerdings entferne ich des öfteren auch mal Duplikate).
Gruß
Jenny
AW: Formel soll immer die letzte Spalte nehmen...
11.04.2017 17:54:58
Daniel
Hi
beim normalen Löschen von Zeilen passt Excel betroffene Formeln an, und auch die Kennung für die letzte verwendete Zelle (UsedRange) wird aktulalisert.
beim Duplikate-Entfernen passiert genau das nicht und ich vermute, das dies auch der Grund ist, warum es in unsortierten Daten so viel schneller ist als das normale Löschen.
dh du müsstest nach dem Duplikate-Entfernen noch die überzähligen Zeilen am Tabellenende normal löschen.
Gruß Daniel
Anzeige
AW: Formel soll immer die letzte Spalte nehmen...
11.04.2017 19:15:23
Jenny
danke für den Tipp
Jenny

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige