Excel2013 Makro - Mitarbeiternamen ersetzen

Moderator: ModerationP

Excel2013 Makro - Mitarbeiternamen ersetzen

Beitragvon xds13 » 02. Jul 2022, 15:15

Hi,

Stehe vor der Aufgabe, regelmäßig verschriftlichte Kundenkommentare dahingehend zu überprüfen, dass keine Mitarbeiternamen darin vorkommen.

- Ich bekomme diese als Excel geliefert, die Kundenkommentare befinden sich in Spalte B auf dem Tabellenblatt "Kommentare".
- Ich habe eine Liste aller Mitarbeiter (Vorname, Nachname) auf einem Tabellenblatt "Mitarbeiter" in der selben Arbeitsmappe.
--> Im Grunde "suchen und ersetzen" mit erhöhtem Anspruch. Es soll nicht die ganze Zelle überschrieben, sondern nur der Mitarbeitername unkenntlich gemacht werden.


Beispiel:

Tabellenblatt Kommentare:
A B
1 Mitarbeiter Musterschmidt war absolut inkompetent.
2 Frau Ursula Mustermeier ist ihrem Aufgabenfeld in keinerster Weise gewachsen.
3 Frau Mustermüller war sehr zuvorkommend und freundlich.


Tabellenblatt Mitarbeiter:
A B
1 Frank Musterschmidt
2 Ursula Mustermeier
3 Heike Mustermüller

Soll-Ergebnis Tabellenblatt Kommentare:
B1 --> "Mitarbeiter xyz war absolut inkompetent."
B2 --> "Frau xyz xyz ist ihrem Aufgabenfeld in keinster Weise gewachsen."
B3 --> "Frau xyz war sehr zuvorkommend und freundlich."



Habe bisher folgendes finden können bei meiner Recherche, bin mir jedoch nicht sicher, ob der Code insgesamt zielführend ist.
Zielwerte für Vor- und oder Nachnamen sind im Grunde egal, xyz würde völlig reichen (ist wohl auch sicherlich das kleinere Problem).


Code: Alles auswählen
Sub Ersetzen()

Dim lngZeile As Long
Dim rngZelle As Range

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual                         // -Laufzeit des Makros

lngZeile = Range("A" & Rows.Count).End(xlUp).Row
Range("A2:A" & lngZeile).Select


For Each rngZelle In Selection
    rngZelle.Value = Replace(rngZelle.Value, "Suchbegriff", "Zielwert")     //würde vermutlich die ganze Zelle überschreiben? Zusätzlich müsste hier eben die ganze Tabelle "Mitarbeiter"
                                                                            //geprüft werden, ob ein Name in der Zelle vorkommt
Next rngZelle

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic                     
Call Calculate

End Sub



ganz grober Unfug, oder im Ansatz brauchbar? Hat vielleicht jemand eine Idee? Help :?
xds13
 

Re: Excel2013 Makro - Mitarbeiternamen ersetzen

Beitragvon Gast » 02. Jul 2022, 16:12

Tipp: Zeichne doch einfach mal den Prozess Suchen/Ersetzen für einen Mitarbeiter mit dem Makrorecorder auf. Dann erhälst Du einen ersten Code, den Du anpassen kannst.
Die Suchbegriffe holst Du dann per Schleife bis zur letzten Zeile aus Deiner Tabelle Kollegen.

Zweiter Tipp: In keinster Weise ist grammatikalisch schon Unsinn, in keinester Weise ist dann der Gipfel des Unsinns. Nur so am Rande...
Gast
 

Re: Excel2013 Makro - Mitarbeiternamen ersetzen

Beitragvon snb » 02. Jul 2022, 16:16

Hast du überhaupt je mit VBA gearbeitet ?
snb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9426
Registriert: 25. Sep 2014, 16:37

Re: Excel2013 Makro - Mitarbeiternamen ersetzen

Beitragvon Ralf A » 02. Jul 2022, 16:22

...smile... im Ansatz durchaus brauchbar... :)

Aber wie Du sicher festgestellt hast, müssen Vor- und Nachname in der Mitarbeitertabelle getrennt (und auch getrennt ersetzt) werden. Noch schöner wäre, wenn die Tabellen als formatierte Tabellen vorlägen. Kann ja nachträglich noch gemacht werden.

Auch würde ich den Durchlauf des MA-Bereiches und die Funktionalität des Ersetzens als eigenständige Subs voneinander trennen.

Bsp.: (ist aber kein 2013er Code... kann sein, dass Du die 2 in xlReplaceFormula2 entfernen musst...)
Code: Alles auswählen
Sub AlleMA()
'Alle MA durchlaufen
Dim zelle As Range
For Each zelle In Range("tblMa[Vorname]") 'Namen wurden in 2 Spalten aufgeteilt!
    Ersetze zelle.Value
    Ersetze zelle.Offset(, 1).Value
Next

'Bei Bedarf auch noch Herr, Frau, Mitarbeiterin, Mitarbeiter etc. pp. ersetzen lassen...
End Sub

Sub Ersetze(was As String)
    Range("tblComment[Kommentare]").Replace What:=was, Replacement:="xxx", LookAt:= _
        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
End Sub
Ciao, Ralf
Wer glaubt, für ihn persönlich würde der Bremsweg nicht als Funktion proportional zum QUADRAT der Geschwindigkeit steigen, der ist halt nicht „frei“, sondern ein Narr.
Ralf A
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1275
Registriert: 17. Mär 2018, 11:47

Re: Excel2013 Makro - Mitarbeiternamen ersetzen

Beitragvon xds13 » 02. Jul 2022, 20:25

snb hat geschrieben:Hast du überhaupt je mit VBA gearbeitet ?

Gast hat geschrieben:... ist dann der Gipfel des Unsinns. Nur so am Rande...


War schon mal weniger toxisch hier :roll:



@Ralf A
danke für die Tips - ich probier mal rum :)
xds13
 

Re: Excel2013 Makro - Mitarbeiternamen ersetzen

Beitragvon Öfficer » 03. Jul 2022, 12:05

Hallo xds13,

bist du sicher, dass das zu Ende gedacht ist? Was machst du mit so Namen wie "Klein"? Ersetzt du nur volle Wörter, oder sollen auch Wörter, die mit dem Namen beginnen, ersetzt werden ("Die Hubersche Vorgehensweise...")? Was machst du bei Tippfehlern?

Gruß
der Öfficer
Öfficer
 


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 39 Gäste