ms excel znajdź i zamień wyniki @ symbol w zepsutej formule

4

Próbuję wyszukać i zamienić w programie Excel, kolumna jest sformatowana jako „Tekst”.

Odnaleźć: [@

zamienić: @

Ilekroć znajdzie to dopasowanie na początku komórki, tj. Zawartość komórki zaczyna się od [@ i próbuje zastąpić ją przez @, wynikiem jest błąd „Ta funkcja jest nieprawidłowa”

Wydaje mi się, że skoro operator @ służy do odwołań, powoduje to, że komórka jest interpretowana inaczej (już nie jako tekst)

Jak sprawić, by ta wymiana działała?

Skopiuj / wklej do innego programu nie jest dobrą opcją, ponieważ niektóre komórki zawierają podział wiersza.

Loopo
źródło
1
Czy wymiana na '@akceptowalną? 'Symbol nie będzie widoczny.
douglaslps,
Próbowałem tego, ale apostrof pojawia się, gdy kopiujesz / wklejasz do innego edytora tekstu, potrzebuję, aby wynik był czysty, ponieważ jest używany przez inny program.
Loopo,

Odpowiedzi:

2

Ku mojemu zaskoczeniu, Excel zna przynajmniej 4 różne metody zastępowania podłańcucha.

Wszystkie mogą obsługiwać prowadzenie @w sposób, w jaki chcesz. Z wyjątkiem pierwszej metody, której używasz podczas otwierania okna wyszukiwania i zamiany .

Jest @to symbol zastępczy tekstu. . Jeśli wpiszesz wartość liczbową jak 123w komórce i ustawisz niestandardowy format na @, komórka zostanie sformatowana jako tekst (Wyrównanie: prawo »lewo).


Te wszystkie przykłady wymienić bwartości komórki A1' abcz 123. Wynik jest zawsze a123c.

1. Range.Replace () (to samo co CTRL+ Hokno dialogowe)

    [A1].Replace "b", "123", xlPart

Składnia: Range.Replace( What, Replacement, [LookAt], [SearchOrder], [MatchCase], [SearchFormat], [ReplaceFormat] )

2. WorksheetFunction.Replace ()

    [A1] = WorksheetFunction.Replace([A1], InStr([A1], "b"), Len("b"), "123")

Składnia: WorksheetFunction.Replace( old_text, start, number_of_chars, new_text )

3. WorksheetFunction.Substitute ()

    [A1] = WorksheetFunction.Substitute([A1], "b", "123")

Składnia: WorksheetFunction.Substitute( text, old_text, new_text, [nth_appearance] )

4. Zamień ()

    [A1] = Replace([A1], "b", "123")

Składnia: Replace( Expression, Find, Replace, [Start, [Count, [Compare]]] )


Aby odpowiedzieć na pytanie Loopo. Powinieneś użyć ostatniej metody, ponieważ może ona obsłużyć @na początku wartości komórki. Uczyniłem to trochę wygodniejszym z 2 wejściami.

Sub ReplaceFunction()
    strFind = InputBox("Find what")
    strReplace = InputBox("Replace with")

    For Each cell In Selection
        cell.Value = Replace(cell.Value, strFind, strReplace)
    Next
End Sub

wprowadź opis zdjęcia tutaj

nixda
źródło