Страницы: 1
RSS
Разложить столбец с данными в таблицу соответствующих данных., довести до ума макросом выгрузку 1С
 
Программа 1С вываливает отчет в котором основная информация разбита по ячейкам в одном столбце. Как эту информацию разложить в виде таблицы. Объяснить словами трудно, Пример прилагаю.
Буду благодарен любым советам или решениям.
 
Цитата
в виде таблицы
Относительно ваших столбцов
Код
Sub Convertion()
Dim i As Long
Dim Row_n As Long
Dim Row_k As Long
Dim iLastRow As Long
      iLastRow = Cells(Rows.Count, 2).End(xlUp).Row
    For i = iLastRow To 7 Step -1
      If IsEmpty(Cells(i, 4)) And IsEmpty(Cells(i - 1, 4)) Then
        Rows(i - 1).Insert xlShiftDown
      End If
    Next
      Rows(7).Delete
      iLastRow = Cells(Rows.Count, 2).End(xlUp).Row
    For i = 7 To iLastRow
      Row_n = Cells(Rows.Count, 10).End(xlUp).Row + 1
      Row_k = Cells(i, 2).End(xlDown).Row
        Cells(Row_n, 6) = Cells(i + 1, 2)   'клиент
        Cells(Row_n, 7) = Cells(i, 2)       'город
        Range("B" & i + 2 & ":D" & Row_k).Copy Cells(Row_n, 8)
      Row_n = Cells(Rows.Count, 8).End(xlUp).Row + 1
        Cells(Row_n, 6) = "Итого " & Cells(i + 1, 2)
        Cells(Row_n, 10) = WorksheetFunction.Sum(Range("D" & i + 2 & ":D" & Row_k))
      i = Row_k + 1
    Next
End Sub
Область "как должно получиться" предварительно очистить, оставив шапку
 
Формулами с доп. столбцом
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Спасибо. Ваш пример решения задачи очень понравился. Странно что я сам до подобных логических функций не додумался.
Еще раз спасибо!
 
Kuzmich, Ваш макрос выдает немного с ошибками результат. Может я чего не так запускаю. Результат во вложении.
Изменено: inetemka - 02.05.2015 18:21:24
 
Цитата
Может я чего не так запускаю
Оставьте шапку в строке 6 как было в первом примере

Клиент   Территория    Накладные  ДЗ    Сумма
и запустите макрос (в макросе замените знаки вопроса на Итого как в примере)
Изменено: Kuzmich - 30.04.2015 18:45:48
 
по идеи, можно и в 1С отчет по нормальному настроить, просто накладные, территорию и клиента не в группировку закидывать, а в дополнительные поля,  указанием, что данные в отдельных колонках отражать
Изменено: Ivan.kh - 30.04.2015 20:25:18
 
В том то и дело что нельзя. Этот отчет создавался зам.директора лично, и никаких настроек он не предполагает. Об удобстве пользователей он не думал. К сожалению.
 
Все верно. Если оставить шапку то однократно макрос срабатывает, а вот если запустить макрос два раза подряд ничего не меняя, то выдает ошибку!
Дело в том что данная таблица будет гораздо большей чем та что я выложил для примера, и в таблице возможно будут пустые строки.
Но все равно спасибо Вам за представленный код.
Изменено: inetemka - 02.05.2015 18:22:15
 
Цитата
а вот если запустить макрос два раза подряд
Макрос вставляет пустые строки, отделяя клиентов друг от друга,
если вы удалите эти строки , то можно опять запускать макрос.
Цитата
в таблице возможно будут пустые строки.
Надо будет макросом удалить пустые строки
 
Kuzmich, Спасибо. Попробую. Правда я не совсем понимаю как объяснить макросу какие строки в результате стали пустыми, они ведь всегда разные будут!
 
Цитата
inetemka написал:я не совсем понимаю как объяснить макросу какие строки в результате стали пустыми
можно в Приемах глянуть :) ТЫЦ
 
Цитата
как объяснить макросу какие строки в результате стали пустыми
В вашем примере пост #1 в столбце В клиенты  и относящиеся к ним данные идут
сплошным диапазоном без разрывов.
Макрос, как я уже писал выше, вставляет пустые строки, отделяя клиентов друг от друга.
Вот эти пустые строки и надо удалить для того , чтобы запустить макрос вторично.
Страницы: 1
Наверх