Страницы: 1
RSS
Сохранить форматирование "Процентное" при группировке в сводной
 
Привет всем!
Если кратко, вопрос такой - можно ли сделать группировку в сводной с сохранением процентного форматирования?
Руками править можно, но долго. Особенно если делать это не один десяток раз в день.
Возможно конечно сделать это макросом, по значению, перебором строк но :) это уж крайний вариант, если сама сводная вообще никак этого не умеет.

Более детально в файле.
 
Добрый день!
сделал через допстолбец, что гораздо проще
 
Добрый день
Сделал форматирование в  :) в коде.
Остается сделать, что бы код срабатывал в активном поле активной сводной. Понедельник, чего то туплю, так и не дошло до меня как это запилить...
А конструкция:
Код
ActiveSheet.ActivePivotTables.ActivePivotFields.PivotItems.Count
само собой не работает...


А может и проще всё можно сделать было?
Код
Sub Замена_процентов_в_сводной()
Dim aa0 As PivotFields
 For i = 1 To ActiveSheet.PivotTables("Сводная таблица1").PivotFields("Среднее значение").PivotItems.Count
 If InStr(aa0, "<") Or InStr(aa0, ">") Or InStr(aa0, "%") Then
 Else
 aa1 = Len(aa0)
            aa2 = InStr(aa0, "-")
 aa3 = InStrRev(aa0, "-")
 aa4 = Left(aa0, aa2 - 1)
 aa5 = Mid(aa0, aa2 + 1)
 aa6 = Format(WorksheetFunction.Round(aa4 * 100, 0) / 100, "0.0%")
 aa7 = Format(WorksheetFunction.Round(aa5 * 100, 0) / 100, "0.0%")
 aa8 = aa6 & "-" & aa7
 ActiveSheet.PivotTables("Сводная таблица1").PivotFields( _
 "Среднее значение").PivotItems(i).Caption = aa8
 End If
 Next i
End Sub

Изменено: MadG . - 20.05.2019 10:30:42
 
Вариант при помощи Power Query.
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Дата", type date}, {"Показатель", type text}, {"Доля", type number}}),
    #"Added Custom" = Table.AddColumn( #"Changed Type", "Группировка", each let g = Number.RoundDown([Доля] * 10) * 10 in (Text.From( g ) & "% - " & Text.From( g + 10 ) & "%") )
in
    #"Added Custom"

В принципе это то же решение через доп.столбец, но виртуальный без вмешательства в данные.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
В принципе это то же решение через доп.столбец
:) очень изящно!
 
Добрый день всем еще раз!
Дабы не плодить новые темы спрошу тут - и всё таки, как определить имя активной сводной таблицы и имя активного поля этой сводной.
При этом конечно выделена ячейка в нужном поле нужной сводной.
Вот прям как на картинке ниже - "Сводная таблица7", поле "Доля"  Причем есть же отдельное окошко "Активное поле"!
 
Немного поковырял, возможно кому то пригодится, возможно кто то поможет сделать код чуть более читаемым
Код
Активная сводная таблица = ActiveSheet.Application.ActiveCell.PivotTable.Name
Активное поле сводной таблицы = ActiveSheet.Application.ActiveCell.PivotField.Name
Изменено: MadG . - 21.05.2019 10:50:08
 
Цитата
MadG . написал:
Дабы не плодить новые темы спрошу тут - и всё таки, как определить имя активной сводной таблицы и имя активного поля этой сводной.
Может всё же правила прочитать?
Цитата
2.6. Один вопрос - одна тема. Не следует в открываемой теме обозначать и задавать сразу несколько вопросов.
Страницы: 1
Наверх