Измените «, 00 текст» на «, 00 | текст» в Excel

Я хотел бы заменить некоторый текст в строке в excel на другую строку.

Данные выглядят так: "текст еще текст 0,00 текст еще текст 0,00 текст"

Текст может быть любым, но не содержит десятичных знаков. 0,00 — это пример числа, которое может принимать значения от 0,00 до 9999,99. С помощью формулы я хотел бы изменить приведенный выше пример на:

Данные выглядят так: "текст еще текст 0,00 | текст еще текст 0,00 | текст"

Как это оформить в excel?

Ищете что-то вроде замены регулярного выражения или что-то в этом роде

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
0
47
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

С исходной текстовой строкой в ​​формате A2 попробуйте,

=REPLACE(REPLACE(A2, FIND(",", A2, FIND(",", A2)+1)+3, 1, " | "), FIND(",", A2)+3, 1, " | ")

Нет собственного регулярного выражения рабочего листа, но его можно легко выполнить в пользовательской функции VBA.

Это также работает для строки, которая имеет около 15 или 20 значений «0,00»? Или это работает только для моего первоначального примера «текст еще текст 0,00 | текст еще текст 0,00 | текст»?

mh3982 16.06.2019 20:11

Нет, вам нужно будет создать пользовательскую функцию с помощью VBA и RegEx.Replace для этого.

user11655492 16.06.2019 20:18

Регулярное выражение (UDF, определяемая пользователем функция):

Function ReplaceText(cell)
    With CreateObject("VBScript.RegExp")
        .Pattern = "(\d\s)": .Global = True
        ReplaceText = .Replace(cell, "$1| ")
    End With
End Function

Может быть немного более надежным в использовании \b(\d{1,4},\d{2}\s+), учитывая его характеристики: в диапазоне от 0,00 до 9999,99

Ron Rosenfeld 16.06.2019 21:11
Ответ принят как подходящий

Вы можете легко сделать это с помощью определяемой пользователем функции, написанной на VBA:

Option Explicit
Function addPipes(S As String) As String
    Dim V As Variant
    Dim I As Long

V = Split(S)
For I = 0 To UBound(V)
    If V(I) Like "*#,#*" Then V(I) = V(I) & " |"
Next I

addPipes = Join(V)

End Function

Хотя, если ваша конечная цель состоит в том, чтобы разбить строку на конвейеры, и если вы все равно работаете в VBA, вы можете просто сделать разбиение с помощью простого макроса.

Кроме того, если у вас есть слова, содержащие образец d,d (где d — цифра, нам придется изменить сравнение Like.

Другие вопросы по теме