/ / Funkcja zastępcza niemiecki - excel, vba, excel-vba, formuła excel

Funkcja zastępcza niemiecki - excel, vba, excel-vba, formuła excel

Ręcznie użyłem funkcji zastępczejczas, który działał sprawnie, ale był bardzo powolny. Dlatego chcę teraz zmienić go na makro, ale kiedy próbuję wstawić je do mojego kodu, to nie działa, tylko część kodu znajduje się w prawej linii w Developer (tutaj w stackoverflow działa tak, jak możesz patrz poniżej), a reszta funkcji jest wklejana do następnych wierszy.

To jest mój kod:

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."")"

Czy ktoś wie, jak mogę to zrobić? Ja też znalazłem https://stackoverflow.com/a/36384529/9456216 to rozwiązanie dla podobnego problemu (nie mam więcej 64 gniazd), ale nie zorientowałem się, jak go zastosować w moim przypadku.

Odpowiedzi:

2 dla odpowiedzi № 1

To pierwszy krok z VBA (zobacz jak zbudować funkcje niestandardowe w VBA tutaj):

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

Jak widzisz, definiujesz dwie tablice, changeFrom i changeTo. Każda pozycja tablicy mówi odpowiednio, co należy zmienić na co. A zatem Mr zostanie zmieniony na "" i Gp% do general partner.

Działa to tak:

wprowadź opis obrazu tutaj

Jako drugi krok, jeśli chcesz postępować zgodnie z najlepszymi praktykami, dobrym pomysłem byłoby zdefiniowanie Arrays w określonych zakresach, więc łatwiej byłoby utrzymać.