Изменить ", 00 текст" на ", 00 | текст" в Excel - PullRequest
0 голосов
/ 16 июня 2019

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

Данные выглядят следующим образом: «текст еще текст 0,00 текст еще текст 0,00 текст»

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

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

Как я могу организовать это в Excel?

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

Ответы [ 3 ]

2 голосов
/ 16 июня 2019

Вы можете легко сделать это с помощью пользовательской функции, написанной на 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 сравнение.

1 голос
/ 16 июня 2019

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

Function ReplaceText(cell)
    With CreateObject("VBScript.RegExp")
        .Pattern = "(\d\s)": .Global = True
        ReplaceText = .Replace(cell, "$1| ")
    End With
End Function
0 голосов
/ 16 июня 2019

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...