Страницы: 1
RSS
Замена любого текста находящегося между символами
 
Всем привет, искал подобное, но почему то нигде не нашел(может плохо искал, подправьте если что).

Суть проблемы:
имеется огромная таблица (>20тыщ. строк), в строке в ячейке имеется текст вида:

1 строка: текст1~текст2~текст3~текст4
2 строка текст5~текст6
3 текст~текст~текст~текст~и т.д.

т.е в каждой строке только 1 ячейка содержащая подобный текст разделенных символом ~ (слов может быть как 10 так и 40)

Нужно:
Через функцию (бейсик хромает на все 4 лапы) осуществить замену любого содержимого находящегося между символом ~ и приведение данного в ячейке к виду:
1 строка: param~param~param~param
2 строка param~param
3 param~param~param~param  и т.д.

по сути заменить все что между спец символом на слово param (соответственно не должно быть ни пробелов, ни переносов)

изучал подобную тему " удаление текста между символами " очень схожа, но не могу разобраться как применить..
Код
=ЛЕВСИМВ(A1;ПОИСК("/";ПОДСТАВИТЬ(A1;"$";"/";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;"$";""))))-1)
прошу помощи у вас Гуру Excel'я
Изменено: manyak - 18.07.2016 08:51:21
 
Цитата
бейсик хромает на все 4 лапы
Я бы сказал лузер хромает! а валит всё на бейсик!
И даже русский язык хромает на 8 лап
Цитата
любого содержимого находящегося между символом ~
растокуйте понятней как может быть текст между одним символом?
 
 строка: текст1~текст2~текст3~текст4
строка: param~param~param~param
Не соответствует описанной задаче:
1. почему Текст1 заменён? ведь он не между символом?!
2. если Текст1 заменён, то почему не заменена строка:? ведь она в таком же положении как и Текст1
По вашему описаню я понял, что надо было заменить лишь Текст2 и Текст3. Они, по крайней мере, между символами ~
Изменено: Александр Моторин - 18.07.2016 09:38:42
 
Цитата
Александр Моторин написал:
1. почему Текст1 заменён? ведь он не между символом?!
да, не усмотрел, добавлю символ и приведу к виду ~text1~text2~ если так будет проще.
заменить нужно полностью все содержимое между символами ~
и заменить именно на одно слово param
Изменено: manyak - 18.07.2016 09:45:08
 
Где файл?
 
файл
 
Код
Public Function fnc(strk As String) As String
For i = 1 To Len(strk) - Len(Replace(strk, "~", "")) - 1
k = k & "~param"
Next
fnc = k & "~"
End Function
Для вашего примера
Изменено: VideoAlex - 18.07.2016 10:37:47
 
Цитата
VideoAlex написал: Для вашего примера
а можете файлом скинуть? выдает что аргумент не аргумент
 
вариант функции uuu в столбце E

Код
 Function uuu$(t$)
 With CreateObject("VBScript.RegExp"): .Pattern = "[^~]+~": .Global = True
    uuu = Mid(.Replace(t, "~param"), 2) & "~"
 End With
End Function
 
Изменено: sv2013 - 18.07.2016 10:45:22
 
Добавил файл
 
Цитата
VideoAlex написал: Добавил файл
огромное спасибо, буду разбираться))
Цитата
sv2013 написал: вариант функции uuu в столбце E
вам тоже огромное спасибо..

жаль плюсиков нет тут))
 
Код
Function Мяу(Strc$)
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "~(\s|\S)+?~"
        If .test(Strc) Then
            Мяу = Replace(.Replace(Replace(Strc, "~", "~~"), "~param~"), "~~", "~")
        End If
    End With
End Function
Страницы: 1
Читают тему
Наверх