Страницы: 1
RSS
Как "разобрать" сгруппированные строки по столбцам, чем то похоже с задачей которую решал Николай в макросе "Редизайнер"
 
Проще посмотреть файл - станет понятнее, в нем название групп цифры а элементы групп буквы, как преобразовать такую таблицу в два столбца чтобы название группы было в отдельном столбце в одной строке с каждым элементом группы как в таблице выделенной синим, есть ли какой то инструмент? Это выдернуто из 1С нужно как то преобразовать в вид годный для эксель, при этом количество и содержимое строк разное, единственное за что можно ухватиться это название групп на русском а элементы на английском, но название может начинаться с цифры.
И еще в идеале такое сделать на три столбца есть шанс что группировка будет по трем группам. Спасибо.
Изменено: bortnik27 - 29.08.2017 09:46:00
 
Для первого столбца в D21 :
=ЕСЛИ(ЕТЕКСТ(A1);ИНДЕКС($A$1:A1;ПОИСКПОЗ(9^9;$A$1:A1));"")
Для второго E21:
=ЕСЛИ(D21<>"";A1;"")
Затем пустое удаляем со сдвигом вверх.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Владимир,а если групп будет не 3 а 1000? вообще строк 3364 если 9^9 менять на 3364*3364 то он не пашет наверно потому что слишком много?
Изменено: bortnik27 - 29.08.2017 10:36:57
 
Владимир,а так там на текст проверка, она работать не будет там же может быть текст в обоих столбцах, т.е. и в названии группы и в ее содержимом, кстати если можно сделать проверку на англ и рус язык то тоже прокатит
Изменено: bortnik27 - 29.08.2017 10:44:05
 
Почему бы тогда не сделать грамотный пример?
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Владимир,я не понимаю как можно сделать пример который будет отображать суть если на него ограничение в 100кБ , поэтому прикладываю ссылку на яндекс диск там ни регистрации никаких ограничений
https://yadi.sk/i/dCIOfE3X3MQq2K
Изменено: bortnik27 - 29.08.2017 11:05:35
 
как то через макрос это можно реализовать?
 
Цитата
bortnik27 написал:
я не понимаю как можно сделать пример который будет отображать суть
Это я не понимаю, как можно писать в примере 1, 2, 3.., если в реальном файле - "В пути", "Мебель", "Офис" и пр.. Ну, никак не числа.
----------------------
Не буду учить писать Вас примеры. Макрос бесплатно Вам писать тоже не буду.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Цитата
bortnik27 написал:
через макрос это можно реализовать?
Почитайте там
 
попробуйте вот такой подход
https://yadi.sk/i/BgI6RB4h3MRTSe
если не поможет постарайтесь сделать понятный файл с исходными данными и нужным вам результатом
сразу замечу за третий уровень группировки вы не говорили так что я тоже не заморачивался
PS всю сложность поставленной Вами задачи можно решить перенастроив отчет в 1С - это будет гораздо быстрее и удобней.
 
Blood81, это интересно, буду разбираться
 
разобрались?
 
Цитата
Александр Кочетов написал:
разобрались?
Очень актуальный вопрос, через 6 лет :D
 
Подскажите, пжл, как с помощью Power Query преобразовать сгруппированные строки в столбцы. Есть номер столбца (level)
Финансы отдают данные в структуре, как в примере, для дальнейшей работы необходимо преобразовать в плоскую таблицу
структура баланса.xlsx (37.6 КБ)структура баланса.xlsx (37.6 КБ)
 
Здравствуйте!
pq
Ma_Ri ≠ Мария
 
Еще бы дублирование  каждого "высшего" уровня протянуть по горизонту.
Возможно ли это?
 
Здравствуйте!
В файл добавила 2 варианта:
- с заполнением значения до последнего уровня - Лист "все уровни с заполнением";
- строки только с последними уровнями с заполнением - Лист "только последний уровень".
Всего доброго!
Ma_Ri ≠ Мария
 
Еще вариант для файла Ma_Ri,
pq
 
Здраствуйте! Подскажите пожалуйста,  как с помощью формул Excel вывести в разные столбцы данные. Номеров столбцов нет, данные присылают ежемесячно в структуре, как в примере Таблица 1, для дальнейшей работы необходимо преобразовать данные в Таблицу 2
Прочитала тему, но решение задачки не вижу.
 
JSWBH, Добрый день.
Проще эту работу делать макросом, или написать UDF, или в PQ.
Вот например как на скрине UDF помогает получить метку, по которой далее можно строить логику извлечения данных.
Хотя если уж UDF - то можно сразу всё и делать. Только пока не понятно что именно нужно практически сделать, почему не нужны остальные данные, как будет выглядеть задача например в августе...

Скрин
 
Цитата
JSWBH,   Прочитала тему...
JSWBH, , подобных тем здесь масса
можно в вашем примере формулами зацепиться за метку "РФ " и подтягивать данные сразу в итоговую таблицу, но в плане анализа данных лучше в исходнике извлечь все необходимые категории в свой столбец...
см файл
 
Цитата
написал:
Только пока не понятно что именно нужно практически сделать, почему не нужны остальные данные, как будет выглядеть задача например в августе...
Добрый день. Во всех периодах задача одна и та же выбрать именно этот продукт в каждом канале в разрезе регионов.  
 
ПавелW, Добрый день. Спасибо вам за пример решения! С дополнительной нумерацией понятно столбцов, решение понятно. Без дополнительных столбцов в исходном файле наверное можно как то по другому решить? Хотелось бы автоматизировать рутину. Исходник к сожалению не доступен, а извлекать данные в этом порядке требуется ежемесячно.
 
Цитата
как с помощью формул...
Без дополнительных столбцов
...
JSWBH,   в файле Лист1 #21
 
pq
 
Ну, с помощью запроса PQ можно привести таблицу к плоскому виду, а на основе этого запроса строить сводную как душе угодно (запрос не обязательно выгружать на лист)
вариант полностью на кнопках:
pq
 
Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
Option Explicit
 
Sub Разобрать()
    CloseEmptyWb
    Dim shSource As Worksheet
    Set shSource = ActiveSheet
     
    shSource.Copy
    Dim shTarget As Worksheet
    Set shTarget = ActiveSheet
     
    Dim Application_Calculation As XlCalculation: Application_Calculation = Application.Calculation: Application.Calculation = xlCalculationManual
     
    TargetSheetJob shTarget
     
    Application.Calculation = Application_Calculation
    shTarget.Parent.Saved = True
End Sub
  
Private Sub TargetSheetJob(shTarget As Worksheet)
    With shTarget
        SplitHeader .Range("B2")
         
        Dim yt As Long, y0 As Long, y3 As Long
        For yt = 4 To .UsedRange.Row + .UsedRange.Rows.Count - 1
            If .Cells(yt, 3).IndentLevel = 0 Then
                y0 = yt
            ElseIf .Cells(yt, 3).IndentLevel = 3 Then
                y3 = yt
            ElseIf .Cells(yt, 3).IndentLevel = 5 Then
                .Cells(yt, 2).Cut Destination:=.Cells(yt, 4)
                .Cells(y0, 2).Copy .Cells(yt, 2)
                .Cells(y3, 2).Copy .Cells(yt, 3)
            End If
        Next
         
        For yt = .UsedRange.Row + .UsedRange.Rows.Count - 1 To 4 Step -1
            If IsEmpty(.Cells(yt, 4)) Then
                .Rows(yt).Delete
            End If
        Next
         
        yt = .UsedRange.Row + .UsedRange.Rows.Count - 1
         
        With .Range("E4:V4").Rows(0)
            .FormulaR1C1 = "=SUM(R[1]C:R" & yt & "C)"
            .Formula = Application.ConvertFormula(.Formula, xlA1, xlA1, xlRelative)
        End With
         
        Dim xs As Long, rs As Range
        xs = .UsedRange.Column + .UsedRange.Columns.Count + 1
        Set rs = .Range(.Cells(4, xs), .Cells(yt, xs))
        Set rs = rs.Resize(, 3)
        rs.Columns(1).Formula = "=MATCH(B:B,B:B,0)"
        rs.Columns(2).FormulaR1C1 = rs.Columns(1).FormulaR1C1
        rs.Columns(3).FormulaR1C1 = rs.Columns(1).FormulaR1C1
         
        With .Sort
            .SortFields.Clear
            .SortFields.Add Key:=rs.Columns(2), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
            .SortFields.Add Key:=rs.Columns(3), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .SortFields.Add Key:=rs.Columns(1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .SetRange shTarget.Range(shTarget.Cells(4, 2), shTarget.Cells(yt, xs + 2))
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        rs.Clear
    End With
End Sub
 
Private Sub SplitHeader(cl As Range)
    Dim arr As Variant
    arr = Split(cl.Value, "/")
    cl.Cells(1, 2).EntireColumn.Resize(, UBound(arr)).Insert
    cl.Resize(1, UBound(arr) + 1).Value = arr
End Sub
 
Private Sub CloseEmptyWb()
    Dim wb As Workbook
    For Each wb In Application.Workbooks
        If wb.Path = "" Then wb.Close False
    Next
End Sub
 
JSWBH, я хотел понять полностью техпроцесс.
Из ответа (и наверное представленных решений, но детально
не вникал) получается что данные за начало года в августе сохранять не надо, это будет уже другой файл. Хотя зачем-то в таблице столбцы на весь год зоготовлены...
 
Спасибо, работает!
 
Hugo, вы верно рассуждаете. Дальше уже скорректирую.
Страницы: 1
Читают тему
Loading...