Страницы: 1
RSS
Упорядованичение разрозненных значений в таблице, Приведение данных по объектам к единому виду
 
Доброй пятницы, уважаемые. Есть таблица с данными по объектам, переведенная из текстового файла в Ексел, часть данных импортировалось "Криво". Как  их упорядочить?
 

Проблемные моменты:

- как убрать из столбца А номера пунктов типа 1. 1.1., 1.2., 1.3, 2. 2.1., 2.2., и т.д. При этом не должны быть убраны даты (например , в А16 стоит дата 11.03.2002 г.?; Такая обработка возможна в данном случае?

- некоторые названия строки и его значения разлетелись. Это "Назначение объекта недвижимости"" "Адрес" и "основание государственной регистрации". Например, если у А3 - "назначение объекта недвижимости" информация " нежилое" находится на строчку ниже, в А4 ( а должно быть в В4), то у "Адреса" и "основание государственной регистрации" часть информации находится справа, остальная информация улетела ниже и встала в несколько строк.;

- в случае, если решатся первых два вопроса, перевести информацию построчно в таблицу, как во вкладке "Пример идеального результата"

P.S. Выделенные строки серым ненужны.

Как я вижу выполнение задачи: обработка в столбце А1 видит значение "Вид объекта недвижимости" и понимает, что это новый объект . Дальше доходит до "Назначение объекта недвижимости" и всё, чтонаходится ниже, до "Виды разрешенного использования" вставляет в В3. Идёт ниже, видит "Адрес" и всё, что напротив ячейки "Адрес" и ниже до "Площадь" вставляет в В7. Дальше идёт до "основание государственной регистрации" и всё что справа и ниже до "Ограничение прав" вставляет в В13. Дальше опять находит в А19 "Вид объекта недвижимости" и цикл повторяется.

А вот разворот в построчную таблицу, это, наверное отдельной обработкой лучше?

 
Количество строк в информационном блоке всегда одинаково?
upd
Разное и с "основанием регистрации" там засада, конечно. Да и с адресом тоже  по мелочи :cry:
Изменено: Xel - 10.09.2021 11:46:09
 
Xel, нет, к сожалению не одинаково. Но после "Адреса", всегда идёт "Площадь", А после "основание государственной регистрации" всегда идёт "Ограничение прав и обременение объекта".
upd
Возможно проще три мелких одинаковых макроса, чем один большой. Например, первый, найти в столбце А  ячейку с названием "Назначение объекта недвижимости" (А3) и вставить напротив в столбце В (В3) информацию из ячейки, которая ниже (из А4). После этого строку (4) удалить. ну и т.д...
Изменено: Zagadka - 10.09.2021 11:55:08
 
Доброго!
Цитата
Zagadka написал:
Есть таблица с данными по объектам, переведенная из текстового файла в Ексел, часть данных импортировалось "Криво".
А можно на исходный текстовый файл взглянуть? Вдруг, там порядка больше? Я так понимаю, это выгрузка из некой программы/сайта?
 
alexleoix, вот текстовый файл. Есть в формате ВОРД.
 
Из правил форума:
Цитата
2.6. Один вопрос - одна тема. Не следует в открываемой теме обозначать и задавать сразу несколько вопросов.
Комплексно - можно перенести тему в раздел платных заказов
 
Zagadka,
К сожалению, с текстовым файлом проще не стало. Думал, можно за непечатаемые символы зацепиться в качестве разделителя, но увы...
А в формате .csv у вас не выгружает, случайно? или может в HTML-структуре поковыряться?
 
alexleoix, к сожалению не выгружается.
 
Zagadka, А это точно не персональные данные в Вашем файле
 
Тогда Вам, действительно, нужно искать того, кто возьмётся сделать комплексное решение (см. сообщение #6 модератора vikttur)
 
Msi2102, нет, не они
upd
эти сведения находятся в открытых источниках росреестра
Изменено: Zagadka - 10.09.2021 13:38:41
 
Попробуйте так
Код
Sub RegExp1()
Set RegExp = CreateObject("VBScript.RegExp")
RegExp.Global = True: RegExp.Pattern = "(\d+\.\s)?\d+\.\d+\.\s": RegExp.IgnoreCase = True
For Each cel1 In Selection
    cel1.Value = RegExp.Replace(cel1.Value, "")
Next
End Sub
Изменено: Msi2102 - 10.09.2021 14:07:32
 
Msi2102, да, отлично сработало - номера пунктов замечательно убирает. Спасибо Вам огромное!
 
pq:
Код
let
    a = Table.TransformColumns(Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], {{"Столбец1", each if Text.Contains(_, "Вид объекта недвижимости") then "Вид объекта недвижимости" else if Text.Contains(_, "Вид права, доля в праве") then "Вид права, доля в праве" else _, type text}, {"Столбец2", Text.Trim, type text}}),
    b = Table.FromColumns({a[Столбец1], a[Столбец2],  List.Skip(a[Столбец1], 1)}),
    c = Table.AddColumn(b, "q", each if [Column1] = "Адрес" then [Column2] &  [Column3] else if [Column3] = "Площадь" then "delete" else if [Column1] = "Назначение объекта недвижимости" and [Column2] = "" then [Column3] else if [Column2] = null and [Column3] = "Адрес" then "delete" else if [Column1] = "основание государственной регистрации" then [Column2] &  [Column3] else [Column2]),
    d = Table.AddColumn(Table.AddIndexColumn(c, "Индекс"), "q1", each if [Column1] = "Вид объекта недвижимости" then [Индекс] else null),
    e = Table.FillDown(Table.SelectRows(d, each ([q] <> "delete") and not Text.Contains([Column1], "Виды разрешенного использования объекта") and [Column1] <> "недвижимости" and not Text.Contains([Column1], "Ограничение прав и обременение объекта")),{"q1"}),
    f = Table.AddColumn(e, "q2", each if [Column1] = "основание государственной регистрации" then [Индекс] else null),
    g = Table.FillDown(Table.AddColumn(f, "q3", each if [Индекс] = [q2] then [Индекс] else if [Индекс] = [q1] then 1 else null),{"q3"}),
    h = Table.Group(g, {"q3"}, {{"s", each _}, {"w", each [Column2]{0} & Text.Combine([Column1], " ")}}),
    i = Table.ExpandTableColumn(h, "s", {"Column1", "q", "q1"}),
    j = Table.SelectRows(i, each ([q] <> null))[[Column1], [q1], [q]],
    q = Table.Pivot(j, List.Distinct(j[Column1]), "Column1", "q")
in
    q
 
upd

Антон, ещё раз здравствуйте) . Подскажите, пожалуйста, в мои значения с вашей обработкой для Power Query была дозагружена информация. Однако обработка не завершается, выдаёт ошибку. Как её исправить...
Изменено: Zagadka - 15.09.2021 08:24:05
 
Zagadka, по картинке могу только одно сказать: 56 не может быть записано в тип text. надо исходник смотреть
 
Zagadka, Вы сообщение #6 прочитали?
Страницы: 1
Наверх