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

Kurzbez. aus Langbez. auslesen

Kurzbez. aus Langbez. auslesen
27.04.2021 09:05:11
Gerald
Hallo,
ich brauche mal wieder eure Hilfe für ein Problem.
Beispielmappe unter:
https://www.herber.de/bbs/user/145801.xlsm
Aus SAP bekomme ich Langbezeichnungen von diversen Abteilungen.
Beispiel:
|___ BX-3/E - Geschaeftlich Kon
|_____ BX-2/E - Geschaeftlich Kon
|__ BX-1/E - Geschaeftlich Kon
Alle Langbezeichnungen fangen bis zum ersten Buchstaben genau gleich an, nur mit einer unterschiedlichen Anzahl von Unterstrichen
Was ich aber benötige zum weiteren Arbeiten sind nur die Buchstaben und Zahlenkombinationen bis zum 1. Leerzeichen.
Beispiel:
BX-3/E
BX-2/E
BX-1/E
Dies soll in die 2. Spalte hinter der Langbezeichnung geschrieben werden.
leider weiß ich absolut nicht, wie ich das in VBA umsetze.
Ich hoffe jemand kann mir helfen.
Gruß
Gerald

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kurzbez. aus Langbez. auslesen
27.04.2021 09:12:37
Sigi.21
Hallo Gerald,
wie folgt:
= LINKS(A1; SUCHEN(" - "; A1;1) - 1)
Gruß
Sigi
AW: Kurzbez. aus Langbez. auslesen
27.04.2021 09:23:54
Gerald
Hallo Sigi,
damit schneidet er zwar hinten die Langbezeichnung weg, aber nicht vorne die Unterstriche usw. bis zur eigentlichen Kurzbezeichnung.
Auch wollte ich es eigentlich in meinem Tool als VBA einbinden nicht als Formel
Gruß
Gerald
AW: die Formel entsprechend erweitern und ...
27.04.2021 09:50:06
neopa
Hallo Gerald,
... danach entsprechend in VBA umsetzen. Die Formelerweiterung sähe so aus:
=WENNFEHLER(GLÄTTEN(WECHSELN(WECHSELN(LINKS(A1; SUCHEN(" - "; A1;1) - 1);"_";"");"|";"")); "")
Gruß Werner
.. , - ...
AW: die Formel entsprechend erweitern und ...
27.04.2021 10:31:02
Gerald
Hallo Werner,
Deine Formel funktioniert genauso wie es sein soll.
Nur wie setze ich das in VBA um?
Ich stehe absolut auf dem Schlauch.
Anzeige
AW: die Formel entsprechend erweitern und ...
27.04.2021 10:37:46
Gerald
Also jetzt habe ich schon einmal herausgefunden wie die Formel in VBA aussehen müsste
= IfError(Trim(Substitute(Substitute(Left(A1, Search(" - ", A1, 1) - 1), "_", ""), "|", "")), "")
Aber wie rufe ich die auf?
Mit call geht es ja nicht. Muss ich eine Variable deklarieren?
AW: die Formel entsprechend erweitern und ...
27.04.2021 10:50:55
Gerald
Ich habe es jetzt einmal so probiert
Range("A3").FormulaLocal = "= IfError(Trim(Substitute(Substitute(Left(A1, Search(" - ", A1, 1) - 1), "_", ""), "|", "")), "")"
Jedoch wird mir in der Formel immer der Unterstrich markiert als nicht zulässiges Zeichen
AW: Kurzbez. aus Langbez. auslesen
27.04.2021 09:53:19
Sigi.21
Hallo Gerald,
dann davon halt noch 6 Zeichen von Rechts:
=RECHTS(LINKS(A1; SUCHEN(" - "; A1;1) - 1); 6)
Gruß
Sigi
Anzeige
AW: Kurzbez. aus Langbez mit VBA
27.04.2021 10:06:26
Sigi.21
Hallo,

Function KurzBez(Text As String) As String
KurzBez = Right(Left(Text, WorksheetFunction.Find(" - ", Text, 1) - 1), 6)
End Function
Gruß
Sigi
AW: Kurzbez. aus Langbez mit VBA
27.04.2021 10:43:45
Gerald
Hallo Sigi, wie rufe ich die Function auf?
AW: Kurzbez. aus Langbez mit VBA
27.04.2021 10:52:34
Sigi.21
Hallo,
du hast eine Variable mit deiner Langbezeichnung sowie eine weitere Variable für die Kurbezeichnung, dann ..
Sub KurzbezeichnungAuslesen()
Dim Langbezeichnung As String
Dim Kurzbezeichnung As String
Langbezeichnung = "|___BX-1/E - Geschaeftlich Kon"
Kurzbezeichnung = KurzBez(Langbezeichnung)
MsgBox Kurzbezeichnung
End Sub

Private Function KurzBez(Text As String) As String
KurzBez = Right(Left(Text, WorksheetFunction.Find(" - ", Text, 1) - 1), 6)
End Function
Gruß
Sigi
Anzeige
AW: Kurzbez. aus Langbez. auslesen
27.04.2021 10:11:07
Daniel
Hi
Formel einfügen + Formel durch Wert ersetzen kann man auch in VBA sehr einfach ausführen.
Gruß Daniel
GLÄWEXWDH
27.04.2021 10:52:44
lupo1
=GLÄTTEN(TEIL(WECHSELN(WECHSELN(TEIL($A1;2;199);"_";);" - ";WIEDERHOLEN(" ";49));1;49))
verwendet den Quellbezug A1 nur einmal und ignoriert einfach das |
Ersetzt man die 1 durch SPALTE(A1)*49-48, hat man außerdem gleich die identische Formel für den hinteren Teil.
In VBA zeichnet man Excelformeln bekanntlich auf und kann sie dann im oder als Code verwenden. Umgekehrt geht das nicht oder nur zufällig.
AW: GLÄWEXWDH
27.04.2021 11:26:42
Gerald
Hallo,
Deine Formel funktioniert super.
ich habe das jetzt so gelöst über eine Makro Aufzeichnung .
Formel in erste Zelle kopiert und anschließend nach unten gezogen.
Das funktioniert auch, aber ich habe natürlich im Hintergrund in den Zellen überall die Formel drin.
Das wollte ich ja eigentlich nicht.

Sub Makro2()
ActiveCell.FormulaR1C1 = _
"=TRIM(MID(SUBSTITUTE(SUBSTITUTE(MID(RC7,2,199),""_"",),"" - "",REPT("" "",49)),1,49))"
Range("F6").Select
Selection.AutoFill Destination:=Range("F6:F1000"), Type:=xlFillDefault
Range("F6:F1000").Select
End Sub
Kann man das auch so machen, das keine Formel in den Zellen steht, sondern nur das Ergebnis?
Anzeige
in VBA .Value = .Value verwenden
27.04.2021 11:40:51
lupo1
Vor dem Punkt steht entweder beide Male Dein zu entformelnder Range, oder Du hast den mit With ausgegliedert.
AW: in VBA .Value = .Value verwenden
27.04.2021 12:00:51
Gerald
Ich habe ein großes Fragezeichen im Kopf. Was meinst Du genau?
Im Makro hatte ich eine Zeile unterschlagen. So ist es richtig

Sub KurzBez_ermitteln()
Range("F6").Select
ActiveCell.FormulaR1C1 = _
"=TRIM(MID(SUBSTITUTE(SUBSTITUTE(MID(RC7,2,199),""_"",),"" - "",REPT("" "",49)),1,49))"
Range("F6").Select
Selection.AutoFill Destination:=Range("F6:F1000"), Type:=xlFillDefault
Range("F6:F1000").Select
End Sub

so
27.04.2021 12:08:28
lupo1

Sub KurzBez_ermitteln(): With Range("F6:F1000")
.FormulaR1C1 = "=TRIM(MID(SUBSTITUTE(SUBSTITUTE(MID(RC7,2,199),""_"",),"" - "",REPT("" "",49)),1,49))"
.Value = .Value
End With: End Sub

Anzeige
AW: so
27.04.2021 12:10:34
Gerald
Super, ich Danke Dir
Jetzt macht es das was es soll
Gruß Gerald

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige