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

letzte Nullwerte aus Wert ausblenden

letzte Nullwerte aus Wert ausblenden
01.12.2020 16:18:22
Alex
Hallo,
es geht darum, dass ich mehrere 6-stellige Werte, die ich untereinander in einer Spalte aufgelistet habe, in einer neuen Spalte minimal verändert dargestellt haben möchte. Und zwar sollen diese Werte in der neuen Spalte so dargestellt werden, dass die Nullen am Ende der Werte ausgeblendet werden. Dabei sollen aber wirklich nur die Nullen AM ENDE der Werte ausgeblendet werden und nicht etwaige Nullen, die sich in der Mitte der Zahlenfolge befinden.
Hier als kleines Beispiel:
104590 soll dann als 10459 dargestellt werden
140000 soll als 14 dargestellt werden
173403 bleibt unverändert
Dabei soll also immer von "hinten" angefangen werden.
Mein bisheriger Ansatz nutzt eine LINKS-Funktion bei der jeweils der Wert vorgegeben wird, bis zu dem keine Null am Ende folgt.
In etwa so:
Zelle A1 = 103800 hier die Funktion: =LINKS(A1;4) ,sodass 1038 als Wert in der neuen Spalte C erscheint (C1)
Da ich das jetzt allerdings für eine große Menge an Zellen durchführen müsste, wäre mir sehr damit geholfen, wenn diese Funktion irgendwie "automatisiert" werden könnte, sodass ich nicht immer vorher schauen muss bis zu welchem Wert keine Null am Ende folgt.
Viele Grüße
Alex

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: UDF
01.12.2020 16:28:04
Fennek
Hallo,
teste ma mit

function iNull(rng) as long
NN = val(strreverse(rng))
iNull = strreverse(NN)
end function
mfg
AW: VBA: UDF
01.12.2020 16:40:41
Alex
Vielen Dank für die zügige Antwort. Nur leider habe ich keinerlei VBA-Kenntnisse. Hättest du vielleicht noch eine Alternativlösung ohne VBA parat?
AW: letzte Nullwerte aus Wert ausblenden
01.12.2020 16:59:21
Daniel
Hi
eine Möglichkeit:
=LINKS(A1;AGGREGAT(14;6;SPALTE(BEREICH.VERSCHIEBEN($A1;0;0;1;LÄNGE(A1)))/(TEIL(A1; SPALTE(BEREICH.VERSCHIEBEN($A1;0;0;1;LÄNGE(A1)));1)"0");1)) 
gruß Daniel
AW: letzte Nullwerte aus Wert ausblenden
01.12.2020 17:58:28
Alex
Vielen Dank Daniel, das klappt perfekt!
Anzeige
AW: letzte Nullwerte aus Wert ausblenden
01.12.2020 18:59:52
Yal
Vielleicht viel leichter (?)
=WECHSELN(GLÄTTEN(WECHSELN(C14;"0";" "));" ";"0")
die Nullen in Leerzeichen umwandeln, glätten, zurückumwandeln.
Oder gibt es führende Nullen?
Viel Erfolg
Yal
AW: letzte Nullwerte aus Wert ausblenden
01.12.2020 21:19:03
Daniel
Bei Zahlen gibt es keine führenden Nullen, aber Glätten reduziert auch innerhalb des Textes mehrfach hintereinander vorkommende Leerzeichen auf ein Leerzeichen, dh aus "10000002" wird über Glätten "102"
mit dem in VBA verfügbaren TRIM oder RTRIM würde es funktionieren, weil das die inneren Leerzeichen nicht verändert.
Gruß Daniel
AW: letzte Nullwerte aus Wert ausblenden
01.12.2020 18:20:26
Günther
Moin,
da es sich ja offensichtlich immer um Ganzzahlen handelt, geht es auch ganz ohne Formel mit meinem Lieblingstool… (Power Query)
 
Gruß
Günther  |  mein Excel-Blog
Anzeige
AW: letzte Nullwerte aus Wert ausblenden
01.12.2020 18:53:13
Yal
Hallo Günther,
ich wäre ja mal gespannt, wie es mit PQ geht! Da werden auch Formel vorkommen, oder?
Den Query-Skript, Bitte :-)
VG
Yal
AW: letzte Nullwerte aus Wert ausblenden
01.12.2020 19:37:18
Günther
Moin Yal,
definiere mir doch bitte einmal per Mail (mein Name unten ist der Link), was du unter "Query-Script" verstehst. Und ich habe wirklich nur per Mausklick gearbeitet (Excel 2019). Dass daraus der M-Code erstellt wird, versteht sich von alleine… ;-)
 
Gruß
Günther  |  mein Excel-Blog
Anzeige
AW: letzte Nullwerte aus Wert ausblenden
01.12.2020 20:33:59
Yal
Moin Günther,
ja, hast recht: es heisst M-Code und nicht profane "Query-Skript".
Ich weiss aber nicht, wie man tatsächlich nur per Mausklick einen Vorgang wie
Null in Leerzeichen ändern, glätten, Leerzeichen in Nullen ändern
umsetzen kann:
=WECHSELN(GLÄTTEN(WECHSELN(A1;"0";" ");" ";"0")
Aber sportgeist! Challenge accepted:
let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle2"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Orig", Int64.Type}})
in
#"Geänderter Typ"
habe ich das Problem, das meine Spalten-Inhalt kein Zahl sondern Text sein muss. Also muss ich eingreifen und aus
Int64.Type --> type text
Argh! Es geht doch per Mausklick. Also gut.
Dann Nullen in Leerzeichen. Per Klick. Geht (Eintippen von 0 und Leerzeichen zählen wir nicht zu Tastatur-Eingriff).
Glätten. Aua. "Bereinigen" scheint nicht ausreichend zu sein. An Text.Trim() kommt man nicht vorbei. Und diese M-Function ist nicht in Mausklick-Reichweite.
Leerzeichen in Nullen. Klick. Und Fertig. Schliessen und Laden.
(ich hätte gern den Skript, pardon M-Code, gepostet, aber Excel hat sich bei Schliessen und Laden verabschiedet. Liegt aber nicht an PQ)
Zugegeben kenne ich Power Query nur seit 3-4 Wochen und finde es richtig gut(*) und empfehle es regelmässig (heute nur zwiemal). Aber genauso wie ein Schweizer Taschenmesser für Bäumefällen nicht passend ist, muss man abwegen. Genauso wie Formel, genauso wie VBA.
(*) härteste Nuss bisher: 3-zeilige Header isoliert, depivotiert, mit Semikolon zusammengefasst, repivotiert, als einzeilige Header über den Rest gelegt, Teil der Spalten depivotiert, depivotierte Header in Spalten nach Semikolon getrennt. Sportlich aber geht.
Vielen Dank für die Herausforderung und ein schönen Abend
VG
Yal
(Neugierigkeitshalber: warum per Mail?)
Anzeige
AW: letzte Nullwerte aus Wert ausblenden
01.12.2020 21:10:32
Daniel
HI
was muss man denn jetzt genau anklicken, um das durchzuführen in PQ mit Excel 2016?
zu beachten wäre, dass das Excel-Glätten nicht zulässig ist, weil das aus "100200" nicht "1002" sondern "102" machen würde.
Gruß Daniel
AW: letzte Nullwerte aus Wert ausblenden
01.12.2020 21:53:15
Yal
Hallo Daniel,
Mist. Das mit dem De-Doppelung von Leerzeichen innerhalb wüsste ich nicht.
Für den PQ muss am einfachste
_ das Zielberich als Tabelle deklarieren (Strg+t)
_ unter Daten, Gruppe "Abrufen und transformeiren" den "Aus Tabelle" auswählen
_ dann hast Du ein Rumpf von PQ
_ Spalte in Datentyp Text umwandeln
_ Nullen durch Leerzeichen ersetzen
_ Benutzerdefinierte Spalte einfügen, Formel =Text.Trim([orig.Spalte])
_ Leerzeichen durch Nullen ersetzen
_ originale Spalte entfernen
Fertig. Schliessen und laden.
Vielleicht stürzt bei Dir auch Excel ab (zweite mal!)
Viel Erfolg
Yal
Anzeige
AW: letzte Nullwerte aus Wert ausblenden
01.12.2020 21:17:13
Günther
Moin Yal,
ich habe es noch etwas "hinterlistiger" gelöst, aber der/dein Erfolg zählt, sonst nichts. :-)
Dass du dich an den 3-zeiligen Header "gewagt" hast und auch noch die Klippen souverän umschifft hast, das spricht für dich!
Zu deiner letzten Zeile (in Klammern, die Sache mit der Neugier): Ich bin auf dem Weg mein Künftiges Foren-Dasein so zu gestalten, dass es mir gut tut. Gerne mehr dazu (natürlich) per Mail. ;-)
 
Gruß
Günther  |  mein Excel-Blog
Anzeige
AW: letzte Nullwerte aus Wert ausblenden
01.12.2020 21:26:53
Daniel
Hi Günther
wie hast du es denn gelöst?
ich habe es jetzt in PQ 2016 so gemacht:
nach dem Import in die PQ folgende Schritte, alle üer das Kontextmenü der Spalte (rechte Maustaste auf Spaltenkopf):
1. Typ ändern - Text
2. Werte ersetzen - 0 durch " "
3. Transformieren - Kürzen
4. Werte ersetzen - " " durch 0
5. Typ ändern - Ganzzahl
danach dann schließen und laden.
also ganz einfach und die paar Klicks lassen sich auch gut beschreiben.
Gruß Daniel
AW: letzte Nullwerte aus Wert ausblenden
01.12.2020 22:01:53
Yal
Jetzt: Transformieren >> Kürzen.
Das hat mir gefällt!
(bin auch PQ-Neuling)
VG
Yal
Anzeige
AW: UDF mit RegEx
01.12.2020 22:32:06
Yal
Hallo zusammen,
just for Fun, da Antwort bereit gegeben und User Defined Function nicht taugt.
Public Function RegReplace(Expression As String, Pattern As String, Optional Replacer As String  _
= "") As String
Dim R As New RegExp
R.Pattern = Pattern
RegReplace = R.Replace(Expression, Replacer)
Set R = Nothing
End Function
Dann im Blatt:
=RegReplace(A1;"(0)+$")
Viel Erfolg
Yal
Auch ohne UDF(s, VBA) u.PQ kürzer u.eleganter ...
02.12.2020 00:53:05
Luc:?
…möglich, Alex,
obwohl dir mit UDFs etliche zusätzliche Möglichkeiten, auch über die speziellen von Fennek & Yal hinaus, entgehen. Dazu habe ich zum Schluss noch einige Fml-Varianten mit Links zu den verwendeten UDFs beigefügt. Aber zuerst die UDF-freie Fml:
=--LINKS(A1;LÄNGE(A1)-SUMMENPRODUKT(--(--RECHTS(A1;ZEILE(INDIREKT("1:"&LÄNGE(A1))))=0)))
Hierbei wdn durch die TeilFml als Argument von SUMMENPRODUKT von rechts nach links von 1 bis zu allen Ziffern der Zahl auf A1 anwachsende ZiffernFolgen (als Text) aufgebaut. Durch das -- vor der Fkt RECHTS wdn sie in echte Zahlen umgewandelt, wobei natürlich auch eine Folge von 0en stets 0 ergibt, so dass nur in diesen (endständigen) Fällen der Vgl mit 0 auch WAHR ergibt. Diese Werte wdn durch ein weiteres -- in 1 bzw 0 (FALSCH) gewandelt, so dass ihre Summe die Anzahl der endständigen 0en ergibt. Diese wird dann von der GesamtLänge abgezogen und dieser Wert als 2.Argument von LINKS verwendet. Aus der so entstehenden verkürzten TextZahl wird per -- dann wieder eine echte Zahl. Das Ganze fktioniert dann so nur mit ursprünglich rein numerischen Werten ohne eingestreute andere Zeichen, die durch das -- zu Fehlern führen würden. In diesem Fall müsste die Fml entsprd modifiziert wdn.
So, und nun noch meine UDF-Lösungen. Die erste und längste Fml soll nur eine weitere Kürzungsmöglichkeit zeigen, was ggf mal hilfreich sein könnte:
=TxEval(A1&WIEDERHOLEN("%";AUFRUNDEN((LÄNGE(A1)-VLike(A1;"*[1-9]*";-1))/2;0)))*10^REST(LÄNGE(A1)-VLike(A1;"*[1-9]*";-1);2)
=A1/10^(LÄNGE(A1)-VLike(A1;"*[1-9]*";-1))
=--LINKS(A1;VLike(A1;"*[1-9]*";-1))
Hiervon ist die mittlere wohl die mathematisch „sauberste“ Fml.
UDF-Links für Interessierte:
TxEval (Vs1.0) https://www.herber.de/forum/archiv/1476to1480/1476498_Projektplan.html#1477400
VLike (Vs1.4 m.BedKomp) https://www.herber.de/bbs/user/137167.xlsm bzw https://www.herber.de/bbs/user/137179.xls (DownLoadLinks BspDateien)

Morhn, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Anzeige
AW: Formellösung noch kürzer
02.12.2020 09:23:10
Besserwisser
Hallo Zusammen,
hier noch eine Ergänzung:
=--TEIL(A1;1;VERGLEICH(1;LOG(TEIL(A1;ZEILE(INDIREKT("1:"&LÄNGE(A1)));1))))
und 365:
=--TEIL(A1;1;VERGLEICH(1;LOG(TEIL(A1;SEQUENZ(LÄNGE(A1));1))))
Gruß
Christian
Dann hättest du aber auch gleich LINKS statt ...
02.12.2020 20:22:31
Luc:?
…des 1.TEIL nehmen können, Christian! ;-]
Hätte noch ein Argument gespart. Außerdem enthält deine Fml genausoviel Fktsaufrufe wie meine und muss in Xl-Versionen ohne MatrixFml-AutoDynamik auch als (singulare) MatrixFml gekennzeichnet wdn.
Gruß, Luc :-?
AW: Dann hättest du aber auch gleich LINKS statt ...
03.12.2020 16:33:03
Daniel
Ob jetzt "Links" oder "Teil" ist jetzt wirklich nicht kriegsentscheidend.
Spannender ist her die Rechenmechanik dahinter.
Wobei anzumerken wäre, dass das hier nur mit Zahlen und 0 als zu eleminierendes Zeichen geht, während andere Formeln da universeller sind und auch mit Texten und anderen frei wählbaren Endzeichen funktionieren.
Gruß Daniel
Anzeige

125 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige