Страницы: 1
RSS
Как разобрать файл excel (выгрузка из 1с) со сложной структурой в плоскую таблицу ?
 
пример во вложении, это данные по заказам покупателя, нужно преобразовать в плоскую таблицу, которую потом было бы удобно обычными фильтрами обрабатывать.все объединения нужно убрать, во вложенном файле есть кусок того, как выглядит исходный файл, и как хотелось бы, чтобы выглядел итоговый. как автоматизировать обратное преобразование этого файла в плоскую таблицу?
 
недавно, кажется, разбирали 1С с отступами на форуме.
Если остальное можно обработать формулами или руками, то отступ или группировку в 1С можно отследить только свойством indent или outline соответственно (через VBA).
Так что макрос, макрос. Или мучить программиста 1С, который вам настроит отчет под ваши нужды.
F1 творит чудеса
 
Редизайнер для 1С. (делал не я, на форуме поделились, благодетеля забыл записать, увы)
Скрытый текст
Изменено: JayBhagavan - 02.09.2014 10:24:46

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Подскажите как использовать макрос?
После запуска макроса ввожу "Номер первой строки с данными..." - 12 и "Количество уровней в иерархии..." - 3 после выполнения макрос выдаёт не тот результат который ожидалось.

Заранее благодарен
 
Тут другой макрос вероятно нужен, попроще - привязка к IndentLevel. Если 0 - то запоминаем номенклатуру, если 1 - то товар. Ну а когда 2 - то выводим запомненное и данные текущей строки на итоговый лист.
 
Можно решить без макроса.
"Зайдите в настройки формы отчетов и поменяйте структура отчета с иерархии на табличный вид." (с) нашел на другом форуме

Спасибо тем кто пытался помочь
 
Например - выделить данные(можно все, можно 1 столбец) и выполнить код (шапку лень выписывать...):
Код
Sub tt()
    Dim diap As Range, sh As Worksheet, r As Range, t1$, t2$, i&

    Set diap = Selection
    Set sh = Sheets.Add
    i = 1
    For Each r In diap.Columns(1).Cells
        Select Case r.IndentLevel
        Case 0: t1 = r
        Case 1: t2 = r
        Case 2
            i = i + 1
            With sh
                .Cells(i, 1) = t1
                .Cells(i, 2) = t2
                .Cells(i, 3) = r
                .Cells(i, 4) = r.Offset(, 1)
                .Cells(i, 5) = r.Offset(, 2)
            End With
        End Select
    Next
End Sub

 
Чуть короче, но с шапкой:
Код
Option Explicit

Sub tt()
    Dim diap As Range, sh As Worksheet, r As Range, t1$, t2$, i&

    Set diap = Selection
    Set sh = Sheets.Add
    sh.Cells(1).Resize(, 5) = Split("Номенклатура|Характеристика номенклатуры|Контрагент|Количество|Сумма продажи", "|")
    i = 1
    For Each r In diap.Columns(1).Cells
        Select Case r.IndentLevel
        Case 0: t1 = r
        Case 1: t2 = r
        Case 2
            i = i + 1
            sh.Cells(i, 1) = t1: sh.Cells(i, 2) = t2
            sh.Cells(i, 3).Resize(, 3).Value = r.Resize(, 3).Value
        End Select
    Next
End Sub


 
Ребята, а выгружать в плоском виде из 1с?
Преобразование Универсального отчета в сводную таблицу Excel
смотрите во втором комментарии или в картинке ниже.

Спасибо этому человеку!
 
Здравствуйте!

Буду признательна за помощь!
Пыталась переделать макросы, указанные на этой странице, не получилось, так как только учусь EXCEL.
В 1С менять структуру отчета не могу, доступа нет.

 
Изменено: Anid - 20.04.2017 03:36:42
 
Anid, здравия. Формулы + фильтр.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Спасибо!
 
Anid, вообще-то не за что, т.к. если в реальной таблице будет более одной номенклатуры у одного клиента, то предложенный способ не годится.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Кнопка цитирования не для ответа [МОДЕРАТОР]

Да, у контрагента несколько видов товара, и хочу поправить, так как в номенклатуре выходит контрагент, а в столбце документ движения еще и номенклатура.
 
Anid, правила не просто так пишут:
Цитата
2.3. Приложите файл(ы) с примером (общим весом не более 100 Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Здравствуйте!

Макрос очень помог, спасибо.

К сожалению, у меня осталась проблема с шапкой таблицы.

Как можно в шапке таблицы первым трем столбцам присвоить имена самостоятельно, а последующим - скопировать из исходной таблицы?

Спасибо!

 
Страницы: 1
Читают тему
Наверх