MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 19.06.2019, 12:28   #1
Dzafer
Neuer Benutzer
Neuer Benutzer
Standard Excel 2013 - Auf definierte Strings folgende Wörter entfernen

Hallo,

angenommen ich habe eine Spalte mit mittellangen Texten (ca. 200 Zeichen) und darin befinden sich Namen welche bisher manuell zensiert wurden. Diese Namen haben aber in 99% der Fälle entweder ein Herr, Hr., Frau oder Fr. vorm Namen, wie könnte ich einen Befehl formulieren welcher immer den darauffolgenden String (Also nach Herr, Hr., Frau oder Fr.) entweder durch beliebige Zeichen ersetzt (z.B. durch ******) oder komplett entfernt?


LG

Dzafer
Dzafer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.06.2019, 12:44   #2
ReginaR
MOF User
MOF User
Standard

Moin,
befindet sich der Name immer am Ende des Strings, d.h. nach den Schlüsselwörtern soll alles bis zum Ende gelöscht werden?

__________________

Gruß
Regina
ReginaR ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.06.2019, 13:23   #3
MisterBurns
MOF Meister
MOF Meister
Standard

Hier mal eine Lösung für den Fall, dass nur ein Name im Text vorkommt. Lösung ist mit zwei Hilfsspalten, die zwar nicht zwingend notwendig sind, aber die Formeln leichter lesbar machen.

Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCDE
1Das ist ein sinnbefreiter Herr Müller kurzer Text HerrMüller kurzer TextDas ist ein sinnbefreiter Herr ********** kurzer Text
2Noch ein sinnloser Frau Huhu Text text Text. FrauHuhu Text text Text.Noch ein sinnloser Frau ********** Text text Text.
3Das ist ein sinnbefreiter Hr. Müller kurzer Text Hr.üller kurzer TextDas ist ein sinnbefreiter Hr. ********** kurzer Text
4Noch ein sinnloser Fr. Huhu Text text Text. Fr.uhu Text text Text.Noch ein sinnloser Fr. ********** Text text Text.

ZelleFormel
C1=WENN(NICHT(ISTFEHLER(FINDEN("Herr";A1)));"Herr";WENN(NICHT(ISTFEHLER(FINDEN("Frau";A1)));"Frau";WENN(NICHT(ISTFEHLER(FINDEN("Hr.";A1)));"Hr.";WENN(NICHT(ISTFEHLER(FINDEN("Fr.";A1)));"Fr.";"falsch"))))
D1=RECHTS(A1;LÄNGE(A1)-(FINDEN(C1;A1)+4))
E1=LINKS(A1;FINDEN(C1;A1)+LÄNGE(C1))&"**********"&RECHTS(D1;LÄNGE(D1)-FINDEN(" ";D1)+1)
C2=WENN(NICHT(ISTFEHLER(FINDEN("Herr";A2)));"Herr";WENN(NICHT(ISTFEHLER(FINDEN("Frau";A2)));"Frau";WENN(NICHT(ISTFEHLER(FINDEN("Hr.";A2)));"Hr.";WENN(NICHT(ISTFEHLER(FINDEN("Fr.";A2)));"Fr.";"falsch"))))
D2=RECHTS(A2;LÄNGE(A2)-(FINDEN(C2;A2)+4))
E2=LINKS(A2;FINDEN(C2;A2)+LÄNGE(C2))&"**********"&RECHTS(D2;LÄNGE(D2)-FINDEN(" ";D2)+1)
C3=WENN(NICHT(ISTFEHLER(FINDEN("Herr";A3)));"Herr";WENN(NICHT(ISTFEHLER(FINDEN("Frau";A3)));"Frau";WENN(NICHT(ISTFEHLER(FINDEN("Hr.";A3)));"Hr.";WENN(NICHT(ISTFEHLER(FINDEN("Fr.";A3)));"Fr.";"falsch"))))
D3=RECHTS(A3;LÄNGE(A3)-(FINDEN(C3;A3)+4))
E3=LINKS(A3;FINDEN(C3;A3)+LÄNGE(C3))&"**********"&RECHTS(D3;LÄNGE(D3)-FINDEN(" ";D3)+1)
C4=WENN(NICHT(ISTFEHLER(FINDEN("Herr";A4)));"Herr";WENN(NICHT(ISTFEHLER(FINDEN("Frau";A4)));"Frau";WENN(NICHT(ISTFEHLER(FINDEN("Hr.";A4)));"Hr.";WENN(NICHT(ISTFEHLER(FINDEN("Fr.";A4)));"Fr.";"falsch"))))
D4=RECHTS(A4;LÄNGE(A4)-(FINDEN(C4;A4)+4))
E4=LINKS(A4;FINDEN(C4;A4)+LÄNGE(C4))&"**********"&RECHTS(D4;LÄNGE(D4)-FINDEN(" ";D4)+1)
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg


Falls mehrere Namen im Text vorkommen, geht es wohl nur über VBA, das ist mir aber ehrlich gesagt zu aufwändig.

__________________

Schöne Grüße
Berni
MisterBurns ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.06.2019, 13:45   #4
Jadzia_Dax
MOF User
MOF User
Standard

Hallo Dzafer,

hier eine Möglichkeit mit VBA.

LG Dax
Angehängte Dateien
Dateityp: xlsm ZensurNamen.xlsm (23,1 KB, 5x aufgerufen)
Jadzia_Dax ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.06.2019, 13:55   #5
Dzafer
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Wow danke euch vielmals!
Dzafer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.07.2019, 14:01   #6
Dzafer
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Wie müsste ich den Code umändern wenn sich die Textspalte in D befindet?

Code:

Option Explicit

Sub Zensur_Namen()

Dim ws As Worksheet
Set ws = Tabelle1 'ggf. anpassen

Dim arr As Variant
Dim erg() As Variant
Dim a As Long
Dim b As Integer
Dim lz As Long

'Spalte (1) der Texte anpasse
'wenn Überschriften vorhanden, Anzahl Überschriftenzeilen anstatt "- 0" eintragen
lz = ws.Cells(Rows.Count, 1).End(xlUp).Row - 0

ReDim erg(1 To lz, 1 To 1)

For a = 1 To lz
    arr = Split(ws.Cells(a, 1)) 'Spalte (1) anpassen
    For b = 0 To UBound(arr)
        If UCase(arr(b)) = "HERR" Or UCase(arr(b)) = "HR" Or UCase(arr(b)) = "HR." Or UCase(arr(b)) = "FRAU" Or UCase(arr(b)) = "FR" Or UCase(arr(b)) = "FR." Then
            If b < UBound(arr) Then arr(b + 1) = "*****"
        End If
        
        If erg(a - 0, 1) = "" Then 'wenn Überschriften vorhanden, Anzahl Überschriftenzeilen anstatt "- 0" eintragen
            erg(a - 0, 1) = arr(b) 'wenn Überschriften vorhanden, Anzahl Überschriftenzeilen anstatt "- 0" eintragen
        Else
            erg(a - 0, 1) = erg(a - 0, 1) & " " & arr(b) 'wenn Überschriften vorhanden, Anzahl Überschriftenzeilen anstatt "- 0" eintragen
        End If
    Next b
Next a

ws.Range(ws.Cells(1, 1), ws.Cells(lz + 0, 1)) = erg 'erste Zeile nach Überschrift anpassen, ggf. Spalte anpassen, "+0" ersetzen durch Anzahl Überschriftenzeilen

End Sub
LG
Dzafer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.07.2019, 14:15   #7
Jadzia_Dax
MOF User
MOF User
Standard

Hi,

hatte ich Dir extra reinkommentiert:
Code:

'Spalte (1) der Texte anpasse
'wenn Überschriften vorhanden, Anzahl Überschriftenzeilen anstatt "- 0" eintragen
lz = ws.Cells(Rows.Count, 4).End(xlUp).Row - 0

ReDim erg(1 To lz, 1 To 1)

For a = 1 To lz
    arr = Split(ws.Cells(a, 4)) 'Spalte (1) anpassen
    
....
ws.Range(ws.Cells(1, 4), ws.Cells(lz + 0, 4)) = erg 'erste Zeile nach Überschrift anpassen, ggf. Spalte anpassen
LG Dax
Jadzia_Dax ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:46 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.