Registriert seit: 04.01.2018
Version(en): excel für Mac 2011
04.01.2018, 13:53
(Dieser Beitrag wurde zuletzt bearbeitet: 04.01.2018, 13:55 von jakob.)
Hallo zusammen,
ich würde gern ein Macro in meiner excel einfügen, das - auf Knopfdruck - in den markierten Zellen (z.B. Spalte A) den Text von rechts bis zum ersten "§" in jeder einzelnen Zelle abschneidet.
Aus 12345§p§54321§xyz123 wird entsprechend 12345§p§54321
In den Zellen stehen sowohl Zahlen, Buchstaben als auch weitere §.
Bisher konnte ich folgende Formel finden.
=LINKS(A1;LÄNGE(A1)-LÄNGE(RECHTS(A1;FINDEN("§";A1)+1)))
Allerdings wird das Ergebnis logischerweise in einer anderen Zelle angezeigt und nicht markierte Zellen editiert. Daher muss ein Makro herhalten, oder?!
Ich hoffe mein Anliegen ist verständlich.
Viele Grüße und schonmal vielen Dank für die Hilfe
jako
00202
Nicht registrierter Gast
Hallo, :19:
Du könntest "
Evaluieren" - sprich Deine schon vorhandene Formel auswerten und anwenden, als Makro:
Code:
Option Explicit
Sub Main()
Dim rngCell As Range
For Each rngCell In Selection
With rngCell
.Value = Evaluate("=LEFT(" & .Address & ",LEN(" & .Address & ")-LEN(RIGHT(" & .Address & ",FIND(""§""," & .Address & ")+1)))")
End With
Next rngCell
End Sub
Das gilt jetzt nur für die markierten Zellen.
Registriert seit: 04.01.2018
Version(en): excel für Mac 2011
04.01.2018, 14:57
(Dieser Beitrag wurde zuletzt bearbeitet: 04.01.2018, 15:07 von jakob.)
Hi Case,
ich danke dir für deine Hilfe!
Leider schneidet das Makro mal zu viel und mal zu wenig vom Text ab.
Wie es aussieht ist die excel-Formel nicht so fehlerfrei wie ich dachte :/
Zur Info: Die Anzahl der Buchstaben und Zahlen die von rechts bis zum § abgeschnitten werden müssen, ist variabel. Es handelt sich also nicht um die jeweils 5 letzten Zeichen o.ä..
Viele Grüße
00202
Nicht registrierter Gast
Hallo, :19:
dann probiere es mal so:
Code:
Option Explicit
Sub Main()
Dim rngCell As Range
For Each rngCell In Selection
With rngCell
.Value = Evaluate("=LEFT(" & .Address & ",FIND(""#"",SUBSTITUTE(" & .Address & _
",""§"",""#"",LEN(" & .Address & ")-LEN(SUBSTITUTE(" & .Address & ",""§"",""""))))-1)")
End With
Next rngCell
End Sub
Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:1 Nutzer sagt Danke an Gast für diesen Beitrag 28
• jakob
Registriert seit: 04.01.2018
Version(en): excel für Mac 2011
Super, das funktioniert einwandfrei!
Vielen Dank Case!
Registriert seit: 04.01.2018
Version(en): excel für Mac 2011
Hallo nochmal,
meine Excel-version hat sich mittlerweile geändert und nun funktioniert das makro nicht mehr :/
Ich möchte via makro den Text in markierten Zellen abschneiden bis einschließlich dem ersten _ von recht.
neue Excel version: exel für mac version 16.10
Bisher verwendeter code in excel für mac 2011 version 14.7.3:
Option Explicit
Sub FormateAbschneiden()
Dim rngCell As Range
For Each rngCell In Selection
With rngCell
.Value = Evaluate("=LEFT(" & .Address & ",FIND(""#"",SUBSTITUTE(" & .Address & _
",""_"",""#"",LEN(" & .Address & ")-LEN(SUBSTITUTE(" & .Address & ",""_"",""""))))-1)")
End With
Next rngCell
End Sub
Mein neues excel gibt hier #wert! zurück.
Könnte mir bitte jemand helfen das makro der neuen Version entsprechend anzupassen?
Viele Grüße
jako
Registriert seit: 06.12.2015
Version(en): 2016
Hallo,
in der Windows-Version kennt VBA für die Suche von rechts:
mfg
Registriert seit: 04.01.2018
Version(en): excel für Mac 2011
Hallo Fennek,
danke für deine Antwort!
Leider verstehe ich zu wenig von dem Thema, als ob ich nun wüsste was zu tun ist :/
Was wird mit Pos = instrRev() ersetzt?
Danke dir und viele Grüße
jako
Registriert seit: 06.12.2015
Version(en): 2016
Hallo
wenn in A1: asd§123§vf
steht, dann wird nach dem Makro in B1: asd§123
Code:
Sub F_en()
cells(1,2) = left(cells(1,1), instrRev(cells(1,1), "§")-1)
end sub
Wenn Du die Text in einer Spalte ersetzen möchtest, nutze die "Sub" mit einer Schleife, falls den gekürzte Text in einer anderen Spalte stehen soll, kann man es in eine "Function" umschreiben:
Code:
Function Fen_(rng as range) as string
Fen_ = left(rng.value, instrRev(rng.value, "§")-1)
end function
Ohne Basiskenntnisse in VBA wird es etwas schwer.
mfg
(getestet, aber dann abgetipt)
Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:1 Nutzer sagt Danke an Fennek für diesen Beitrag 28
• jakob
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
22.02.2018, 19:25
(Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2018, 19:25 von LCohen.)
PHP-Code:
Option Explicit
Sub Main()
Dim rngCell As Range
For Each rngCell In Selection
With rngCell
.Value = Left(.Value, InStrRev(.Value, "§") - 1)
End With
Next rngCell
End Sub
[A1].Select 'Verhindert eine Katastrophe durch "Prellen"
Folgende(r) 1 Nutzer sagt Danke an LCohen für diesen Beitrag:1 Nutzer sagt Danke an LCohen für diesen Beitrag 28
• jakob