ms excel найти и заменить @ symbol результаты в сломанной формуле

Я пытаюсь найти и заменить в excel, столбец отформатирован как "текст".

найти: [@

заменить на: @

всякий раз, когда это находит совпадение в начале ячейки i.e содержимое ячейки начинается с [@
и пытается заменить, что с @ результатом является ошибка "эта функция не является допустимым"

Я предполагаю, что, поскольку оператор @ предназначен для ссылок, это заставляет ячейку интерпретироваться по-разному (не как текст больше)

Как я делаю эту работу замены?

копировать / вставить в другую программу не является хорошим вариантом, потому что некоторые из ячеек содержат разрывы строк.

8
задан Hennes
08.04.2023 6:32 Количество просмотров материала 2931
Распечатать страницу

1 ответ

к моему удивлению, Excel знает по крайней мере 4 различных метода замены подстроки.

все они могут справиться с ведущим @ так, как вы этого хотите. Кроме первого метода, который вы используете при открытии поиск и замена диалог.

@ - это текст-заполнитель.. Если ввести числовое значение типа 123 в ячейке и установите пользовательский формат @, ячейка будет отформатирована как текст (выравнивание: вправо-влево.)


эти примеры заменят b в ячейке A1 ' значение abc С 123. Результат всегда a123c.

1. Диапазон.Заменить() (то же, что и CTRL+H диалог)

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

синтаксис: Range.Replace( What, Replacement, [LookAt], [SearchOrder], [MatchCase], [SearchFormat], [ReplaceFormat] )

2. WorksheetFunction.Заменить()

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

синтаксис: WorksheetFunction.Replace( old_text, start, number_of_chars, new_text )

3. WorksheetFunction.Заменить()

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

синтаксис: WorksheetFunction.Substitute( text, old_text, new_text, [nth_appearance] )

4. Заменить()

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

синтаксис: Replace( Expression, Find, Replace, [Start, [Count, [Compare]]] )


ответить на вопрос Loopo. Вы должны использовать последний метод, так как он может обрабатывать @ в начале значения ячейки. Я сделал его немного более удобным с входом 2 кабинки.

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

enter image description here

2
отвечен nixda 2023-04-09 14:20

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх