Есть файл, отчёт из 1С, со множеством строк с группировкой по уровням. Каждые 3-4 строки - иерархия развития событий по закупке товара. Верхняя строка - номенклатура. Нижняя - клиент. Как отфильтровать по клиенту так, чтобы показывалась соответствующая номенклатура? Т.е. критерий поиска в одной строке, искомый результат в другой. Всё, что их объединяет - принадлежность к одной цепочке уровней. Также, есть усложняющий момент - по некоторой номенклатуре есть привязка к нескольким клиентам. Наверняка нужно провести целый ряд действий для преобразования таблицы, чтобы получить нужный результат. Но вот никак в голову не придёт, какой.
Буду очень благодарен за помощь в данном нетривиальном случае.
Спасибо заранее.
С уважением, Валерий
Добрый день.
Есть файл, отчёт из 1С, со множеством строк с группировкой по уровням. Каждые 3-4 строки - иерархия развития событий по закупке товара. Верхняя строка - номенклатура. Нижняя - клиент. Как отфильтровать по клиенту так, чтобы показывалась соответствующая номенклатура? Т.е. критерий поиска в одной строке, искомый результат в другой. Всё, что их объединяет - принадлежность к одной цепочке уровней. Также, есть усложняющий момент - по некоторой номенклатуре есть привязка к нескольким клиентам. Наверняка нужно провести целый ряд действий для преобразования таблицы, чтобы получить нужный результат. Но вот никак в голову не придёт, какой.
Буду очень благодарен за помощь в данном нетривиальном случае.
Могу конечно ошибаться, но на мой взгяд - никак. Гораздо проще и правильнее сделать выгрузку из 1С в виде массива где для каждого критерия отдельный столбец: Отдельный столбец поставщик; номенклатура; заявка; корректировка. 1С позволяет это сделать И тогда уже сводными таблицами решать вопрос фильтров.
Могу конечно ошибаться, но на мой взгяд - никак. Гораздо проще и правильнее сделать выгрузку из 1С в виде массива где для каждого критерия отдельный столбец: Отдельный столбец поставщик; номенклатура; заявка; корректировка. 1С позволяет это сделать И тогда уже сводными таблицами решать вопрос фильтров.VaeV1ctis
Не помню откуда закинул себе когда-то макрос "редизайнер 1С". (применяйте его на копии книги или листа)
[vba]
Код
Sub re_dezigne()
fr = InputBox("Номер первой строки с данными...") levCount = InputBox("Количество уровней в иерархии...")
Application.ScreenUpdating = False
lr = Cells(Rows.Count, 2).End(xlUp).Row
For i = lr To fr Step -1 If Cells(i, 2) = "" Then Rows(i).Delete End If Next i
lr = Cells(Rows.Count, 2).End(xlUp).Row
Columns(1).Delete
For i = levCount To 1 Step -1 Columns(1).Insert Shift:=xlToRight Next i
k = 1 For i2 = fr To lr If Cells(i2, 5).Font.Bold = True Then Select Case k Case Is = 1 lev1 = Cells(i2, 5) Case Is = 2 lev2 = Cells(i2, 5) Case Is = 3 lev3 = Cells(i2, 5) End Select k = k + 1 Else Cells(i2, 4) = Cells(i2, 5) Select Case k Case Is = 4 Cells(i2, 1) = lev1 Cells(i2, 2) = lev2 Cells(i2, 3) = lev3 Case Is = 3 Cells(i2, 2) = lev2 Cells(i2, 3) = lev3 Case Is = 2 Cells(i2, 3) = lev3 End Select If Cells(i2 + 1, 5).Font.Bold = True Then k = 3 If Cells(i2 + 2, 5).Font.Bold = True Then k = 2 If Cells(i2 + 3, 5).Font.Bold = True Then k = 1 End If End If End If End If Next i2
For i = lr To fr Step -1 If Cells(i, 1) = "" Then Rows(i).Delete End If Next i
Application.ScreenUpdating = True
End Sub
[/vba]
Не помню откуда закинул себе когда-то макрос "редизайнер 1С". (применяйте его на копии книги или листа)
[vba]
Код
Sub re_dezigne()
fr = InputBox("Номер первой строки с данными...") levCount = InputBox("Количество уровней в иерархии...")
Application.ScreenUpdating = False
lr = Cells(Rows.Count, 2).End(xlUp).Row
For i = lr To fr Step -1 If Cells(i, 2) = "" Then Rows(i).Delete End If Next i
lr = Cells(Rows.Count, 2).End(xlUp).Row
Columns(1).Delete
For i = levCount To 1 Step -1 Columns(1).Insert Shift:=xlToRight Next i
k = 1 For i2 = fr To lr If Cells(i2, 5).Font.Bold = True Then Select Case k Case Is = 1 lev1 = Cells(i2, 5) Case Is = 2 lev2 = Cells(i2, 5) Case Is = 3 lev3 = Cells(i2, 5) End Select k = k + 1 Else Cells(i2, 4) = Cells(i2, 5) Select Case k Case Is = 4 Cells(i2, 1) = lev1 Cells(i2, 2) = lev2 Cells(i2, 3) = lev3 Case Is = 3 Cells(i2, 2) = lev2 Cells(i2, 3) = lev3 Case Is = 2 Cells(i2, 3) = lev3 End Select If Cells(i2 + 1, 5).Font.Bold = True Then k = 3 If Cells(i2 + 2, 5).Font.Bold = True Then k = 2 If Cells(i2 + 3, 5).Font.Bold = True Then k = 1 End If End If End If End If Next i2
For i = lr To fr Step -1 If Cells(i, 1) = "" Then Rows(i).Delete End If Next i
Гораздо проще и правильнее сделать выгрузку из 1С в виде массива где для каждого критерия отдельный столбец: Отдельный столбец поставщик; номенклатура; заявка; корректировка. 1С позволяет это сделать
Да, согласен. Но тут проблема в том, что работать надо именно с этим файлом в таком виде. Сервер временно недоступен, а дела не должны стоять.
Гораздо проще и правильнее сделать выгрузку из 1С в виде массива где для каждого критерия отдельный столбец: Отдельный столбец поставщик; номенклатура; заявка; корректировка. 1С позволяет это сделать
Да, согласен. Но тут проблема в том, что работать надо именно с этим файлом в таком виде. Сервер временно недоступен, а дела не должны стоять.
Не помню откуда закинул себе когда-то макрос "редизайнер 1С". (применяйте его на копии книги или листа)
Подскажите как использовать макрос? После запуска макроса ввожу "Номер первой строки с данными..." - 12 и "Количество уровней в иерархии..." - 3 после выполнения макрос выдаёт не тот результат который ожидалось.
Заранее благодарен [moder]Читайте Правила форума Создавайте свою тему Эта тема закрыта.
Не помню откуда закинул себе когда-то макрос "редизайнер 1С". (применяйте его на копии книги или листа)
Подскажите как использовать макрос? После запуска макроса ввожу "Номер первой строки с данными..." - 12 и "Количество уровней в иерархии..." - 3 после выполнения макрос выдаёт не тот результат который ожидалось.
Заранее благодарен [moder]Читайте Правила форума Создавайте свою тему Эта тема закрыта.cantbstopped
Сообщение отредактировал _Boroda_ - Вторник, 14.07.2015, 14:58