/ / Função substituta Alemão - excel, vba, excel-vba, excel-formula

Função substituta em alemão - excel, vba, excel-vba, excel-formula

Eu usei uma função substituta manualmente todoso tempo, que funcionou sem problemas, mas foi muito lento. Portanto, quero alterá-lo agora para uma macro, mas quando tento inseri-lo no meu código, ele não funciona; apenas parte do código está dentro da linha correta no desenvolvedor (aqui no stackoverflow, ele funciona como você pode veja abaixo) e o restante da função é colado nas próximas linhas.

Este é o meu código:

Tabelle1.Range("H2:H20001").Formula.Local =
"=WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WECHSELN(
WENN(G2=""___"";""___"";GROSS2(F2));
""Mr "";"""");
""Mrs "";"""");
""Dr. "";"""");
""Mba "";"""");
""Di "";"""");
""MSc "";"""");
""Msc "";"""");
""Kr "";"""");
""Gp%"";""general partner"");
""mbh"";""mbH"");
""Mbh"";""mbH"");
""M.B.H."";""m.b.H."");
"" Kg"";"" KG"");
"" Ag "";"" AG "");
"" Og "";"" OG "");
"" Sa "";"" SA "");
"" Se "";"" SE "");
"" Ab "";"" AB "");
"" Inc"";"" Inc."");
"" Ltd"";"" Ltd."");
""D.O.O."";""d.o.o."");
""S.R.L."";""S.r.l."");
""S.Ar.l."";""SARL"");
"" Sarl"";"" SARL"");
""S.P.A."";""S.p.A."");
"" Spa"";"" S.p.A."");
""S.p.A.r"";""Spar"");
"""S"";"""s"");
""Self Owned"";""Self-Owned"");
""Oesterreich"";""Österreich"");
""Oö"";""OÖ"");
""Nö"";""NÖ"");
""Aws"";""AWS"");
""Foerderung"";""Förderung"");
""Mit "";""mit "");
""Beschränkt"";""beschränkt"");
"" Innovative"";"" innovative"");
""Und "";""und "");
""Von "";""von "");
""Für "";""für "");
""Zur "";""zur "");
""Der "";""der "");
""Des "";""des "");
""Das "";""das "");
""U. "";""u. "");
""Buergerlich"";""bürgerlich"");
""Bürgerlich"";""bürgerlich"");
"".At"";"".at"");
"".De"";"".de"");
"".Ch"";"".ch"");
"".Se"";"".se"");
""Ii"";""II"");
""Iii"";""III"");
"" Llp"";"" LLP"");
"" Fp Lp"";"" FP LP"");
"" Bl.P"";"" BL.P."")"

Alguém sabe como posso fazer este funcionar? Eu também encontrei https://stackoverflow.com/a/36384529/9456216 esta solução para um problema semelhante (não tenho mais 64 ninhos), mas ainda não descobri como aplicá-lo ao meu caso.

Respostas:

2 para resposta № 1

Este é o primeiro passo com o VBA (veja como criar funções personalizadas no VBA aqui):

Option Explicit

Public Function ReplacingForFun(rangeToReplace As Range) As String

Dim changeFrom      As Variant
Dim changeTo        As Variant
Dim returnString    As String

Application.Volatile

returnString = rangeToReplace.Value2
changeFrom = Array("Mr", "Gp%")
changeTo = Array("", "general partner")

Dim cnt

For cnt = LBound(changeFrom) To UBound(changeTo)
returnString = Replace(returnString, changeFrom(cnt), changeTo(cnt))
Next cnt

ReplacingForFun = returnString

End Function

Como você vê, você está definindo duas matrizes, changeFrom e changeTo. Cada posição da matriz diz correspondentemente o que deve ser alterado para o quê. portanto Mr seria alterado para "" e Gp% para general partner.

Funciona assim:

insira a descrição da imagem aqui

Como uma segunda etapa, se você deseja seguir algumas práticas recomendadas, seria uma boa ideia definir o Arrays em intervalos específicos, portanto, seria mais fácil de manter.