2.4k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Zusammen,

ich habe folgendes Problem:
in einer Zelle steht:

120 km/h oder auch
Ende 120 km/h oder auch
Aus

Wie kann ich es anstellen, dass die erste Zeile in einer neuen Spalte nur 120 ausgibt, die zweite und dritte Spalte nichts?

Vielen Dank für Eure Vorschläge
Kerstin

7 Antworten

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

ich weiß nicht, ob ich dich richtig verstanden habe, aber probier mal die folgende Formel aus:

Bis Excel 2003:
=WENN(ISTFEHLER(WERT(LINKS(A1;LÄNGE(A1)-FINDEN("km/h";A1))))=FALSCH;WERT(LINKS(A1;LÄNGE(A1)-FINDEN("km/h";A1)));"")

ab Excel 2007:
=WENNFEHLER(WERT(LINKS(A1;LÄNGE(A1)-FINDEN("km/h";A1)));"")

In Zelle A1 steht dein Text und die Zahl ist immer nur mit der Bezeichnung km/h ergänzt.

Gruß

M.O.
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

ist aus meiner sicht nur, wenn überhaupt mit einem Makro machbar.
Hierbei ist noch nicht klar ob vielleicht eine zweite Zahlengruppe in der Zelle steht. IN dem Fall wäre zu klären welche Zahlen dann zu nehmen sind.

Gruß

Helmut
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

ein Beispiel

gruss nighty

angenommen A1 waere "abc123defg4567hij"

= ZahlenBlockIsolierung(A1; 1)
ergebnis 123

= ZahlenBlockIsolierung(A1; 2)
ergebnis 4567

der zweite Parameter gibt die Position eines zahlenblockes an

die function ist unter
alt+f11/projectexplorer/allgemeinesModul einzufuegen

sie ist dann unter einfuegen function/benutzerdefiniert unter selbigen namen zu finden

Function ZahlenBlockIsolierung(Zellen As Range, ZahlenBlock As Integer) As String
Dim Zelle As Range
Dim Zeichen As Integer
Dim schalter As Boolean
Dim BlockIndex As Integer
ReDim AnzZahlenBlock(Len([Zellen])) As String
BlockIndex = 1
If ZahlenBlock > Len([Zellen]) Then ZahlenBlock = Len([Zellen])
For Zeichen = 1 To Len([Zellen])
If Mid([Zellen], Zeichen, 1) Like "[0-9]" = True Then
AnzZahlenBlock(BlockIndex) = AnzZahlenBlock(BlockIndex) & Mid([Zellen], Zeichen, 1)
schalter = True
End If
If schalter = True And Mid([Zellen], Zeichen, 1) Like "[0-9]" = False Then
BlockIndex = BlockIndex + 1
schalter = False
End If
Next Zeichen
ZahlenBlockIsolierung = AnzZahlenBlock(ZahlenBlock)
End Function
0 Punkte
Beantwortet von rudi4ad Mitglied (167 Punkte)
Hallo nighty,

kannst du mir erklären, welche Bedeutung die eckigen Klammern im Ausdruck
Len([Zellen])
haben? Kann ich das einfach gleichsetzen mit Zellen.Value?

Gruß
Rudi
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi Rudi ^^

Die viereckigen klammern geben ein rangeobject an

der Parameter ,value ist eine defaultstellung

die bei obiger Syntax unnötig sein sollte

gruss nighty
0 Punkte
Beantwortet von rudi4ad Mitglied (167 Punkte)
Hallo nighty,

danke, dass du dich dazu gemeldet hast.

1.
Ich wollte aber eigentlich wissen, warum du die Klammern gesetzt hast, ob es irgendeinen Nutzen hat, oder ob es einfach nur schick aussieht. Überflüssig können die Klammern ja nicht sein, denn die Syntax wird ja zugelassen. Andererseits funktioniert es ja auch ohne. Lass' mich nicht dumm sterben.

2.
Wenn wir schon dabei sind, noch eine Frage. Mit der Namensgebund der Variable 'Zellen' hab ich ein Problem. Irgendwie suggeriert mir der Name, dass ich der Funktion auch ein Range mit mehr als nur einer Zelle anbieten könnte, kann ich aber nicht. Vielleicht war das ja (ursprünglich) deine Absicht? Hast du die Funktion fertiggestellt? Kann diese auch Bereiche mit mehreren Areas verarbeiten?

3.
Die Zeile
If ZahlenBlock > Len(Zellen) Then ZahlenBlock = Len(Zellen)
ist in meinen sensiblen Augen unlogisch. Ich würde nur schreiben:
ZahlenBlock = Len(Zellen)
Oder mach ich damit was falsch?

Gruß
Rudi
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi :-) all

zu 1
[Zellen] ist anstatt von Range(Zellen)

zu 2
die Namensgebungen sind oftmals Altlasten und ich aendere sie kaum solange die Deklarierung stimmt

zu 3
ansatz einer fehlerroutine

max ermittlung der arraygröße,die sich auf die maxanzahl der zeichen bezieht

sollte der Anwender nun bei 9 zeichen in der zelle einen größeren index angeben,so wird er nun korrigiert und als alternative auf das max gesetzt

die variablen kannst du leicht durch deine Assoziationen ersetzen ^^

gruß nighty
...