Страницы: 1
RSS
Как сделать так, что-бы единицы измерения (кг, мес) шли после чисел?
 
Добрый день! Возможно кто-то сталкивался уже с такой проблемой. Есть такие данные в ячейке:

Вес, кг - 12 ; Гарантия, мес. - 12 ; Класс защиты - IP21 ; Комплектация - Сварочная горелка, кабель заземления, редукционный клапан ; Минимальная сила тока, А - 20 ; Мощность, Вт - 4400 ; Напряжение, В - 92 ; Питание, В - 220 ; Производитель - Edon ; Расход воздуха, л/мин - 190 ; Страна производитель - Китай ; Тип - Плазморез ; Толщина реза (сталь), мм - 12 ;

Как сделать так, что-бы единицы измерения (кг, мес) шли после чисел? В идеале, вот так, но знаки не имеют значения, их можно легко заменить.

Вес:12 кг; Гарантия:12 мес; Класс защиты - IP21; Комплектация: Сварочная горелка, кабель заземления, редукционный клапан; Минимальная сила тока: 20 А ; Мощность:4400 Вт ; Напряжение: 92 В; Питание: 220 В; Производитель: Edon ; Расход воздуха: 190 л/мин ; Страна производитель: Китай; Тип: Плазморез ; Толщина реза (сталь): 12 мм;  
 
можно попробовать PQ и разделить столбец по ; но у вас в некоторых строках набор отличается от обычного
 
Vik_tor, даже тогда будет просто разделение по столбцам, а тут просят поменять местами меру со значением там, где они есть. Надо макросом, и придумать алгоритм, проще варианта пока не вижу.
Похоже, что где в блоке после точки с запятой есть запятая, там и есть мера, а где меры нет, там только дефис.
Изменено: Ungrateful - 04.04.2020 12:25:45
 
регулярки:
Код
Function ed$(t$)
    With CreateObject("VBScript.Regexp")
        .Global = True
        .Pattern = "(,)([^,-]+)(-[^;]+)(;)"
        ed = .Replace(t, "$3$2$4")
    End With
End Function
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, о прикольно, RegExp творит чудеса )
 
buchlotnik, круто! Спасибо. Простите новичка, а что с этим делать, куда вставлять, или где почитать?
Изменено: elmontazh - 04.04.2020 14:59:10
 
Цитата
elmontazh написал:
что с этим делать, куда вставлять
Это пользовательская функция, она вставляется в стандартный модуль. Нажмите Alt+F11 в приложенном buchlotnik файле и увидете код этой функции. А как использовать на листе - тоже показано в приложенном файле.
 
Цитата
elmontazh написал:
где почитать?
да здесь же в приемах: Создание макросов и пользовательских функций на VBA
Изменено: buchlotnik - 04.04.2020 12:55:36
Соблюдение правил форума не освобождает от модераторского произвола
 
Спасибо buchlotnik, я так понял, это макрос. Ни разу с ними не сталкивался. Пока буду просто вставлять и протягивать. Но нужно будет разобраться.

Спасибо! Очень помогли! Пришло время изучать макросы и пользовательские функции:)
 
Цитата
elmontazh написал:
изучать макросы и пользовательские функции
и регулярные выражения подтянуть  ;)
чутка попроще и посимпатичнее:
Код
Function edf$(t$)
    With CreateObject("VBScript.Regexp")
        .Global = True
        .Pattern = "(,\s)([^,-]+)(\s-[^;]+)"
        edf = .Replace(t, "$3$2")
    End With
End Function

Соблюдение правил форума не освобождает от модераторского произвола
 
Спасибо buchlotnik, сам бы, ни за что в жизни не сделал-бы. Чем больше узнаю Excel, тем больше понимаю, что я ничего не знаю  :) .
Страницы: 1
Наверх