Страницы: 1
RSS
UDF Форматирование текста под шаблон (исключение кроме номеров по маске
 
Всем привет!

помогите, пожалуйста, с UDF
- целевое решение: забирает из соседней ячейки произвольный текст и возвращает только номера по маске (только номера из 6 цифр, исключая денежные значения типа 123456,78)  
 
Анализ текста регулярными выражениями (RegExp) в Excel
Согласие есть продукт при полном непротивлении сторон
 
Sanja, спасибо!

частично помогло, но остается проблема в выводе нескольких вхождений в одну ячейку (эксель 2016, динамических массивов нет) и исключения денег - из суммы 123456,00 выводит 123456 но это смысловая ошибка.

возможно ли как-то модифицировать код формулы - для обхода проблем?
Изменено: vlho553 - 09.12.2024 15:09:49
 
Код
Public Function НОМЕРА(исходные_данные As String) As String
    Dim arr As Variant
    ReDim arr(1 To Int(Len(исходные_данные) / 6))
    Dim ya As Long
    Dim ii As Long
    For ii = 1 To Len(исходные_данные) - 6 + 1
        If Mid(исходные_данные, ii, 6) Like "######" Then
            If Not Mid(исходные_данные, ii, 9) Like "######,##" Then
                ya = ya + 1
                arr(ya) = Mid(исходные_данные, ii, 6)
            End If
            ii = ii + 6 - 1
        End If
    Next
    If ya > 0 Then
        ReDim Preserve arr(1 To ya)
        НОМЕРА = Join(arr, "; ")
    End If
End Function
 
МатросНаЗебре, Большое спасибо!
 
Цитата
vlho553 написал:
только номера из 6 цифр, исключая денежные значения типа 123456,78
можно ещё такой формулой (массивная)
Код
=ОБЪЕДИНИТЬ("; ";1;ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(B6;СИМВОЛ(10);" ");";";" ");", ";" ");" ";"</s><s>")&"</s></t>";"//s[.*0=0][string-length()=6]"))

Только если денежные значения будут без запятой и шестизначные, то их тоже найдёт и главное, что бы в Вашем офисе были эти функции
Страницы: 1
Наверх