Есть отчёт по продажам сформированый 1С необходимо из этого отчёта сформировать плоскую таблицу Excel (массив данных) который потом можно было б использовать для создания Сводной таблицы.
Как вариант решения стал использовать макрос который нагуглил :
[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]
После запуска макроса ввожу "Номер первой строки с данными..." - 12 и "Количество уровней в иерархии..." - 3 после выполнения макрос выдаёт не тот результат который ожидалось.
Помогите кто разбирается в макросах...
Заранее благодарен
Есть отчёт по продажам сформированый 1С необходимо из этого отчёта сформировать плоскую таблицу Excel (массив данных) который потом можно было б использовать для создания Сводной таблицы.
Как вариант решения стал использовать макрос который нагуглил :
[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]
После запуска макроса ввожу "Номер первой строки с данными..." - 12 и "Количество уровней в иерархии..." - 3 после выполнения макрос выдаёт не тот результат который ожидалось.
"Решается все без макросов. Зайдите в настройки формы отчетов и поменяйте структура отчета с иерархии на табличный вид" (с) Мурад
Тему можно закрыть [moder]Комментарии модератора может удалять только модератор или администратор. А Вы зачем это сделали? Вы за два своих первых поста нарушили Правила 4 раза. Я просто добрый сегодня. Пока еще. И новичков стараюсь сразу не наказывать, а только предупреждать. Но 4 косяка - это перебор уже! А Мураду устный выговор.
Спасибо Мурад, решил так как он сказал.
"Решается все без макросов. Зайдите в настройки формы отчетов и поменяйте структура отчета с иерархии на табличный вид" (с) Мурад
Тему можно закрыть [moder]Комментарии модератора может удалять только модератор или администратор. А Вы зачем это сделали? Вы за два своих первых поста нарушили Правила 4 раза. Я просто добрый сегодня. Пока еще. И новичков стараюсь сразу не наказывать, а только предупреждать. Но 4 косяка - это перебор уже! А Мураду устный выговор.cantbstopped