Страницы: 1 2 След.
RSS
Извлечь текст по маске
 
Есть большой текст    
как можно вычленить из него куски длинной 15 символов где 3,4 и 5 символы будут маской (например XX123XXXXXXXXXX - маска 123)  
изаписать эти куски в столбик на следующщем листе книги
 
{quote}{login=cup}{date=20.02.2012 10:04}{thema=Извлечь текст по маске}{post}Есть большой текст{/post}{/quote}Не Верю!
Я сам - дурнее всякого примера! ...
 
ПСТР() F1
 
какие еще мнения?
 
Примерчик выложите.  
Вопрос не сложный, но лучше получить таблицу с данными от вас...    
Ведь только вы знаете, с какой строки и ячейки начинаются исходные данные, куда конкретно нужно выводить результат и т.д.  
Если сделают местные знатоки сами, то наверняка что-нибудь не так, как вам хочется будет расположено.
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Пример большой    
диапазон ячеек AM-37307
 
можете залить  
www.zalil.ru
 
Тогда никак. Разве что соблаговолите в правила заглянуть.
Я сам - дурнее всякого примера! ...
 
А что, разве если вы ему (Примеру, конечно)сделаете обрезание до десятка строк на десяток столбцов и выложите как образец, то алгоритм решения как-то изменится?
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
{quote}{login=cup}{date=20.02.2012 10:24}{thema=}{post}Пример большой диапазон ячеек AM-37307{/post}{/quote}  
Мы вас что - под венец уговариваем?!. См. скрин - ... ;) -29543-
 
{quote}{login=cup}{date=20.02.2012 10:24}{thema=}{post}Пример большой  
{/post}{/quote}  
Вы немного путаете. Большой рабочий файл, а пример можно сделать небольшим, десяток-другой строк различных написаний кодов. Или времени нет?
 
ок
 
Вы пыль с клавиатуры протирали?  
Где то, что должно получаться "на следующщем листе книги" из этой галиматьи?  
Где задана маска?
 
К сожалению в файле такое содержимое  
в приложенном файле лист1-исходный  
                   лист2-то что ищем
 
Option Explicit  
 
Const PTRN = "[0-9]{2}123[0-9]{10}" 'http://www.regular-expressions.info
 
Function cup(s As String)  
Dim v  
With CreateObject("vbscript.regexp")  
   .Pattern = PTRN  
   .Global = True  
   .IgnoreCase = True  
   Set v = .Execute(s)  
End With  
cup = v(0).Value  
End Function
 
Первая строка не закопипастилась - она должна была быть такой:  
 
Скромная попытка освоить RegExp (UDF, чтоб выбрать в столбик - можно использовать в коде):
 
простите но я не знаю что с этим кодом делать
 
Думаю, UDF Игоря будет пошустрей.
Я сам - дурнее всякого примера! ...
 
Это в модуль, запустить при активном первом листе:  
 
Option Explicit  
 
Const PTRN = "[0-9]{2}123[0-9]{10}" 'http://www.regular-expressions.info
 
Function cup(s As String)  
   Dim v  
   With CreateObject("vbscript.regexp")  
       .Pattern = PTRN  
       .Global = True  
       .IgnoreCase = True  
       Set v = .Execute(s)  
   End With  
   cup = v(0).Value  
End Function  
 
 
Sub tt()  
   Dim cc As Range, s$, i&  
   On Error Resume Next  
   For Each cc In Sheets(1).UsedRange.Cells  
       If Len(Trim(cc)) Then  
           s = cup(cc.Value)  
           If Err = 0 Then  
               i = i + 1  
               Sheets(2).Cells(i, 1).Value = s  
           Else  
               Err.Clear  
           End If  
       End If  
   Next  
End Sub  
 
 
Если данных много - тогда обрабатывать массив, собирать в массив, выгружать массив :)
 
Хотя чуть соврал - запускать tt можно при любом активном листе.
 
Всем привет : )  
 
[Hugo], Игорь разреши прокомментировать UDF.
 
1. Если шаблон содержит только цифры - "[0-9]{2}123[0-9]{10}", нет нужды использовать ключ IgnoreCase.
2. Если интересует только первое вхождение v(0).Value, нет смысла извлекать все .Global = True.  
3. В данном случае переменную [Dim v] можно вообще не использовать, достаточно cup = .Execute(s)(0).Value
 
 
p.s.: по задаче не понял что нужно.  
>Есть большой текст как можно вычленить из него куски длинной 15 символов где 3,4 и 5 символы будут маской (например XX123XXXXXXXXXX - маска 123)  
а) Как вы собрались задавать эти 3,4,5 символы и какие они будут.  
б) Что из себя будут представлять остальные символы в совпадении.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
все символы в искомых кусках либо цифры либо тире (1234567890-)  
а маска одна 123
 
Александр, привет!  
Я ведь ещё учусь, так что критика благодарно принимается :)  
Давай, бери тему - думаю тут оптимально решать на Regexp, так что это твоё :)
 
вариант  
 
Sub bb()  
Dim v(), x, y&  
v = Sheets("Лист1").UsedRange.Value  
ReDim b$(0 To UBound(v) * UBound(v, 2), 0 To 0)  
On Error GoTo err_  
With CreateObject("vbscript.regexp")  
   .Pattern = "[\d-]{2}123[\d-]{10}"
   For Each x In v  
       b(y, 0) = .Execute(x)(0)  
       y = y + 1  
nxt: Next  
End With  
Range("Лист2!A1").Resize(y).Value = b  
Exit Sub  
 
err_: Resume nxt  
End Sub
 
или так  
 
Sub bb()  
Dim v(), x, y&  
v = Sheets("Лист1").UsedRange.Value  
ReDim b$(0 To UBound(v) * UBound(v, 2), 0 To 0)  
On Error Resume Next  
With CreateObject("vbscript.regexp")  
   .Pattern = "[\d-]{2}123[\d-]{10}"
   For Each x In v  
       b(y, 0) = .Execute(x)(0)  
       If Err Then Err.Clear Else y = y + 1  
   Next  
End With  
Range("Лист2!A1").Resize(y).Value = b  
End Sub
 
как сделать .xlsm с этим кодом чтобы кнопка была
 
cup, учите волшебные слова.  
 
Игорь, здесь и без меня найдутся люди, кот. с помощью регулярных выражений способны решить поставленную задачу. И тебе практика будет) Ты все-таки за них взялся? Я правильно понял?)
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Еще не взялся, но пора уже...  
Просто эта задача такая несложная для начала - а на http://www.regular-expressions.info/examples.html подыскал подходящий пример (с номерами кредиток).  
Не 100% конечно, но близко...
 
Ребята, как бы стать такимже умным как вы, я в екселе умею только столбики растягивать.
 
как сделать .xlsm с этим кодом чтобы кнопка была  
скажите плиз
Страницы: 1 2 След.
Читают тему
Наверх