Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

via Macro Text in markierten Zellen abschneiden bis "§"
#1
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
Antworten Top
#2
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.
________
Servus
Case
Antworten Top
#3
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
Antworten Top
#4
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
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • jakob
Antworten Top
#5
Super, das funktioniert einwandfrei! 

Vielen Dank Case!
Antworten Top
#6
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
Antworten Top
#7
Hallo,

in der Windows-Version kennt VBA für die Suche von rechts:


Code:
Pos = instrRev()


mfg
Antworten Top
#8
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
Antworten Top
#9
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:
  • jakob
Antworten Top
#10
PHP-Code:
Option Explicit
Sub Main
()
    Dim rngCell As Range
    
For Each rngCell In Selection
        With rngCell
            
.Value Left(.ValueInStrRev(.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:
  • jakob
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste