Страницы: 1
RSS
Заменить в номере дома, обозначение корпуса чтобы не превратилось в дату.
 
Добрый день.
Имеется столбец с все возможным написанием обозначения корпуса т.е. "к, корп.,-, и т.д"
Мне же надо именно например 15к5 превратить в 15/5 именно через слеш.
Через найти и заменить не получается. всё превращается либо в дату либо в числовой вариант даты. (на скриншоте какие параметры выбираю)
Формула не вариант, форма не позволяет добавление столбцов.
Flash Fill да работает но опять же упираюсь что нужен доп столбец

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

Хотелось бы на VBA.
Как я себе это представляю.
всегда начинается с цифр. далее после цифр может быть все мозможное написание A-z А-я *-\@#(любые знаки) или пробел и далее опять цифры
т.е. мы оставляем первые цифры и последние всё что между ними заменяем на /.

Нюансы.
Только для видимых ячеек
По выделенному диапазону
Строк бывает вобщем более 10тысяч без учёта отфильтрованых. если общее то до 50тысяч.
Изменено: Wild.Godlike - 26.07.2019 15:01:35
 
а формулой подставить ?
Лень двигатель прогресса, доказано!!!
 
Сергей, добрый день.
Цитата
Wild.Godlike написал:
Формула не вариант, форма не позволяет добавление столбцов.
 
Можно в PQ такое реализовать, если исходные данные будут в виде умной таблицы.
Вот горшок пустой, он предмет простой...
 
Код
Sub korp()
Dim diapazon As Range
Set diapazon = [a1:a10]
    For Each x In diapazon
    Text = x.Value
    x.Value = "'" & Text
         x.Replace what:="корп", Replacement:="/"
         x.Replace what:="-", Replacement:="/"
         x.Replace what:="к", Replacement:="/"
    Next
End Sub
Изменено: Настя_Nastya - 26.07.2019 15:11:12
 
Текстовый формат ячеек методу Range.Replace не указ!
С VBA проблем нет. Добавляйте к текстам, которые будут нежелательно интерпретированы Excel как дата или число, апостроф слева.
Изменено: sokol92 - 26.07.2019 15:15:15
Владимир
 
PooHkrd, Да вот если бы). по этому только VBA.
Настя_Nastya, Спасибо.
А что надо добавить чтобы
Цитата
Wild.Godlike написал:
Только для видимых ячеек
И я так понимаю в вас в диапазоне строго от а1 до а10 а надо
выделеный :(
Изменено: Wild.Godlike - 26.07.2019 15:32:33
 
Цитата
Wild.Godlike написал:
Да вот если бы).
Как-то так:
Код
let
    Source = Table.TransformColumnTypes(Excel.CurrentWorkbook(){[Name="Tab_2"]}[Content],{{"Дом", type text}}),
    ReplaceAll = Table.TransformColumns(Source, {{"Дом", each 
    let 
        t1 = Text.Combine(List.Transform( Text.ToList(_), each if Text.Contains("0123456789", _ ) then _ else "/" ), ""),
        t2 = if _ = t1 and not Text.Contains( _, "/" ) then _ else Text.BeforeDelimiter(t1, "/") & "/" & Text.AfterDelimiter(t1, "/", {0, RelativePosition.FromEnd})
    in 
        t2, type text}})
in
    ReplaceAll

Допустим ваша зеленая таблица это исходник, в него вносятся данные, если нажать обновить, то все что в корректном формате то не изменится, все остальное будет изменено. К таблице прямо в этом файле можете добавлять любое количество столбцов их запрос не трогает.
Вот горшок пустой, он предмет простой...
 
Цитата
Wild.Godlike написал:
И я так понимаю в вас в диапазоне строго от а1 до а10 а надовыделеный
Замените на
Код
Set diapazon = Selection.SpecialCells(xlCellTypeVisible)
 
PooHkrd,Протестировал на реальных файлах только изменил столбец источник. шикарноооо. :idea: Спасибо большое.
Настя_Nastya,  :oops: Спасибо :)
Изменено: Wild.Godlike - 26.07.2019 16:00:17
Страницы: 1
Наверх