Есть база из 20 тыс строк, полученная из 1С Столбец А выглядит следующим образом : Коллекция 1 Артикул 1 Артикул 2 Коллекция 2 Артикул 3 Артикул 4 Артикул 5 Коллекция 3 Артикул 6
Для сводной нужно сделать данные в формате: Столб. А. Столб. Б. Артикул 1 Коллекция 1 Артикул 2 Коллекция 1 Артикул 3 Коллекция 2 Артикул 4 Коллекция 2 Артикул 5 Коллекция 2 Артикул 6 Коллекция 3
Трудность заключается в том, что количество артикулов под коллекцией колеблется от 1 до 70. Есть ли возможность хоть сколько то автоматизировать процесс? Заранее благодарен откликнувшимся
Ну без файла тут делать нечего. По тому что видно в теме - привязаться можно только к словам артикул и/или коллекция (ещё к длине строки ), но ведь в жизни всё сложнее.
Если это файл из 1С8 то привязыватся можно к цвету шрифта/отступам/группировкам. Стандартные отчеты из 1С очень неудобны для последующей обработки в Excel. Делал для себя "редизайнер таблиц" отчетов из 1С.
Будет файл (лучше оригинал из 1С, а не переработанный) - будет макрос.
Друзья, во вложении исходный файл - ровно такой, каким мне его выдает 1С.
Задача: значения в желтых ячейках в столбце А, перенести в столбец, скажем, F (не принципиально) но напротив каждой даты, которая стоит под значением в желтой ячейке. Удалить желтые ячейки в конце (что не есть проблема - решаю фильтрацией по цвету, выделением строк, и их удалением).
Скопировать можно таким кодом - сперва выделить первый столбец, затем выполнить код:
Код
Sub tt()
Dim r As Range, a(), i&, t$
Set r = Intersect(Selection, Selection.Parent.UsedRange)
a = r
ReDim b(1 To UBound(a), 1 To 1)
For i = 1 To UBound(a)
If Not IsDate(a(i, 1)) Then t = a(i, 1) Else b(i, 1) = t
Next
r.Offset(, 5) = b
End Sub
Друзья, решил, сам решил! Может кому пригодиться (на основе файла выше):
Подготовка: 1. Снял объединение ячеек во всем массиве 2. Фильтром оставил только даты (не желтые ячейки) - привел их в формат "дата" 3. Снял фильтр в и ячейку F3 поставил формулу =ЕСЛИ(ЯЧЕЙКА("формат";A2)="G";A2;F2) 4. Ну и далее ряд косметических доработок. Но суть выше ясна.
Хех, где я был такой умный назад до! 5 тыс. строк ручной переработки
Sub from1C()
Dim i&, j&, t1$, a()
On Error Resume Next
ReDim a(1 To Cells(Rows.Count, 1).End(xlUp).Row, 1 To 5)
j = 1
a(j, 1) = "Номенклатура"
a(j, 2) = "Дата"
a(j, 3) = "Документ реализации"
a(j, 4) = "Количество"
a(j, 5) = "Цена"
For i = 7 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1).Font.Bold Then
t1 = Cells(i, 1).Value
Else
j = j + 1
a(j, 1) = t1
a(j, 2) = CDate(Cells(i, 1))
a(j, 3) = Cells(i, 2)
a(j, 4) = Cells(i, 4)
a(j, 5) = Cells(i, 5)
End If
Next i
With Worksheets.Add
.[a1].Resize(j, 5) = a
.UsedRange.EntireColumn.AutoFit
End With
End Sub
Hugo, действительно проще, но когда знаешь) Я, например VB не владею, но благодаря Вам, в моей рабочей коллекции появился первый макрос За что Вам, большущее спасибо, с ним, действительно, проще!)
Если в моём коде в начало добавить запрос к пользователю величины смещения и затем подставить это число в строку r.Offset(, 5) = b вместо цифры 5 - то будет универсальный макрос, для любых выгрузок. Ну или оперативно изменить это число в коде редактированием. Но правда я ориентировался на даты в выделенном столбце (т.е. на то, что можно рассматривать как дату). А так по задаче конечно полнее отрабатывает код MCH - но он и больше букв
Вариант на Power Query с использованием функции Максима Зеленского из темы [Power Query] Добываем иерархию (вложенность) строк из файла Excel, есть такая функция Внимание! структура оригинального файла должна быть такая же как и в примере, если что-то не заработает или сработает некорректно, то выложите сюда отчет в том виде как он выгружается из 1С с обезличенными данными.
Скачал PowerQuery, начал изучать. Все очень круто и легко делается, спасибо за такой инструмент. К сожалению, пока не понял, как можно разнести по разным столбцам данные из таблицы (во вложении структура файла, так как выгружается из отчета). Понимаю, что сортировать по разным столбцам можно по отступам, но пока не понял, как это сделать. Сможете подсказать?
Файл нужно выгружать в формате .xlsx, иначе PQ не может обратиться к его структуре. либо сразу выгружайте как нужно, либо пересохраните выгруженный отчет в правильном формате. Вот вариант, который корректно переделывает ваш отчет.
Понял, буду пересохранять, так как отчеты поступают от другой компании в таком формате и менять они врят ли будут. Подскажите пожалуйста, а как изменить источник (путь к файлу)?
Не выходит, когда я меняю путь в данной ячейке. Эксель отвечает, что "запрос ссылается на другие запросы и поэтому не может напрямую обратится к источнику данных. Измените эту комбинацию." Вот я и не могу понять, как отредактировать вашу таблицу, которую вы так легко и быстро сделали и с правой стороны в "запросах книги" у меня во всех шагах отображается "только подключение" - не знаю, что это значит, но может как-то влияет.