powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сводная таблица — xlPivotCellGrandTotal
26 сообщений из 26, показаны все 2 страниц
Сводная таблица — xlPivotCellGrandTotal
    #34738926
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день !
Подскажите, как определить попадание activecell в зеленую область ?
Пробую cell.PivotCellType, оно =0.
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34738961
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
Sub test()
    Dim pt As PivotTable
    Set pt = ActiveSheet.PivotTables( 1 )
    If Intersect(ActiveCell, pt.DataBodyRange) Is Nothing Then MsgBox ("Doesn't Intersect") Else MsgBox ("Intersects")
End Sub


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34738987
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL) ! Увы ... ваш код отлавливает если я встал в заголовок "Итог План_Продаж", но если я встаю на ячейку с данными, то получаю false. Его же я получаю если встану в ячейку с данными в столбце "План_Продаж". Мне нужно отловить именно итоговые столбцы и строки ( справа и снизу). Заранее спасибо.

...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34739083
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока сделал с помощью проверки на colorindex. Но надеюсь, что предложат что-нить более умное.
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34739127
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeKL (XL) ! Увы ... ваш код отлавливает если я встал в заголовок "Итог План_Продаж", но если я встаю на ячейку с данными, то получаю false. Его же я получаю если встану в ячейку с данными в столбце "План_Продаж". Мне нужно отловить именно итоговые столбцы и строки ( справа и снизу). Заранее спасибо.



Аааа! А я как раз понял обратное :-) Пардон. Может для простоты повесишь файл с примером?

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34739375
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложил. Запретная область красного цвета. А предтеча этой ситуации крайне проста. Для записи плановых значений я использую write back в куб. И крайне нежелательно, чтобы юзер что-нить писал в итоговые колонки.
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34739765
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeПриложил. Запретная область красного цвета. А предтеча этой ситуации крайне проста. Для записи плановых значений я использую write back в куб. И крайне нежелательно, чтобы юзер что-нить писал в итоговые колонки.
Чегой-то я не въезжаю :-)

1) А почему в приложении PivotTable уничтожена?
2) Разве возможно пользователю редактировать значения полей PivotTable, тем более итоги?
3) Ты что, после создания/обновления PivotTable превращаешь ее в обычный диапазон?
4) Если так, то разве при экспорте обратно твой код изпользует поля итогов?

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34739837
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, .PivotCell.PivotCellType похоже, что действительно сломано (по крайней мере в Excel2007)
Прилагаю пример таблицы с картой типов ячеек

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34739981
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)Кстати, .PivotCell.PivotCellType похоже, что действительно сломано (по крайней мере в Excel2007)
Прилагаю пример таблицы с картой типов ячеекНу почему же сразу сломано? Все там в порядке. Проверь что тип ячейки нулевой и она входит в регион pt.TableRange1 - вот тебе и зеленая ячейка :)
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34740026
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl KL (XL)Кстати, .PivotCell.PivotCellType похоже, что действительно сломано (по крайней мере в Excel2007)
Прилагаю пример таблицы с картой типов ячеекНу почему же сразу сломано? Все там в порядке. Проверь что тип ячейки нулевой и она входит в регион pt.TableRange1 - вот тебе и зеленая ячейка :)
1) Да нет, для big-duke зеленая ячейка входит в Итоги или Подитоги.

2) Excel VBA Help:
NameValueDescriptionxlPivotCellBlankCell9A structural blank cell in the PivotTable. xlPivotCellCustomSubtotal 7A cell in the row or column area that is a custom subtotal.xlPivotCellDataField4A data field label (not the Data button).xlPivotCellDataPivotField8The Data button. xlPivotCellGrandTotal 3A cell in a row or column area that is a grand total.xlPivotCellPageFieldItem6The cell that shows the selected item of a Page field.xlPivotCellPivotField5The button for a field (not the Data button).xlPivotCellPivotItem1A cell in the row or column area that is not a subtotal; grand total; custom subtotal; or blank line. xlPivotCellSubtotal 2A cell in the row or column area that is a subtotal.xlPivotCellValue0Any cell in the data area (except a blank row).
раз дефиниция говорит, что тип 3 это любая ячейка в области итоговой строки или столбца (а не только та, которая содержит лейбл), то следует ожидать, что ячеек типа 3 будет несколько больше, и т.д.
Разве не так?

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34740048
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой, не слишком элегантный, способ:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub test()
    Dim rng1 As Range, rng2 As Range
    On Error GoTo Done
    Set rng1 = Intersect(ActiveCell.PivotTable.TableRange1, ActiveCell.PivotCell.Range.EntireColumn)
    Set rng2 = Intersect(ActiveCell.PivotTable.TableRange1, ActiveCell.PivotCell.Range.EntireRow)
    Select Case True
    Case Application.CountIf(rng1, "*Total*"), Application.CountIf(rng2, "*итог *")
        MsgBox ("Intersects")
    Case Else
        MsgBox ("Doesn't Intersect")
    End Select
Done:
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34740058
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
слегка припудрим [подправим] дурнушку:

Sub test()
Dim rngRow As Range, rngCol As Range
On Error GoTo Done
With ActiveCell
Set rngCol = Intersect(.PivotTable.TableRange1, .PivotCell.Range.EntireColumn)
Set rngRow = Intersect(.PivotTable.TableRange1, .PivotCell.Range.EntireRow)
End With
With Application
Select Case True
Case .CountIf(rngCol, "*итог *"), .CountIf(rngRow, "*итог *"): MsgBox ("Intersects")
Case Else: MsgBox ("Doesn't Intersect")
End Select
End With
Done:
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34740061
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще попытка:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Sub test()
    Dim rngRow As Range, rngCol As Range
    On Error GoTo Done
    With ActiveCell
        Set rngCol = Intersect(.PivotTable.TableRange1, .PivotCell.Range.EntireColumn)
        Set rngRow = Intersect(.PivotTable.TableRange1, .PivotCell.Range.EntireRow)
    End With
    With Application
        Select Case True
        Case .CountIf(rngCol, "*итог *"), .CountIf(rngRow, "*итог *"): MsgBox ("Intersects")
        Case Else: MsgBox ("Doesn't Intersect")
        End Select
    End With
Done:
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34740089
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL) ! Саму сводную таблицу приложить не смог - там много данных настоящих, поэтому выложил копи-паст. А решил так как вы и предложили — через поиск вхождения итог . Но все равно спасибо за помощь. Если позволите, то еще вопрос. Есть скажем измерение "Менеджеры". Мне надо на листе ограничить возможность выбора по этому измерению, только одним значением. Это чтобы менеджеры не заходили в чужие отчёты.
авторРазве возможно пользователю редактировать значения полей PivotTable, тем более итоги?
Да можно, он редактирует столбцы с плановыми значениями. В MS OLAP это называется WriteBack.
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34740100
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)1) Да нет, для big-duke зеленая ячейка входит в Итоги или Подитоги.ааа... виноват, не дочитал до третьего поста.

KL (XL)2) Excel VBA Help:
NameValueDescription xlPivotCellGrandTotal 3A cell in a row or column area that is a grand total. xlPivotCellSubtotal 2A cell in the row or column area that is a subtotal.
раз дефиниция говорит, что тип 3 это любая ячейка в области итоговой строки или столбца (а не только та, которая содержит лейбл), то следует ожидать, что ячеек типа 3 будет несколько больше, и т.д.
Разве не так?Конечно не так :) Соглашусь что там кривоватое определение, но все же с точки зрения формальной грамматики английского главенствующее существительное - area, а не row or column. В общем, никто не обещал что жить будет легко :)

Но тогда можно отыскать ячейки с итоговыми цифрами так:
Код: plaintext
1.
2.
3.
4.
pt.PivotSelect "FirstField[All;Sum]", xlDataAndLabel
set rngSubTotalsForFirstField = Selection
pt.PivotSelect "'Column Grand Total'", xlDataAndLabel
set rngSubTotalsForFirstField = union(rngSubTotalsForFirstField, Selection)
А потом сравнивать пересечение исходной ячейки с этой областью. Изврат конечно, но работает.
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34740109
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlНо тогда можно отыскать ячейки с итоговыми цифрами так:
Код: plaintext
1.
2.
3.
4.
pt.PivotSelect "FirstField[All;Sum]", xlDataAndLabel
set rngSubTotalsForFirstField = Selection
pt.PivotSelect "'Column Grand Total'", xlDataAndLabel
set rngSubTotalsForFirstField = union(rngSubTotalsForFirstField, Selection)
А потом сравнивать пересечение исходной ячейки с этой областью. Изврат конечно, но работает.
Да, этот вариант предлагался в одном из форумов, где я искал, но мне он радикально не нравится из-за необходимости тотального "хард-кодинга" имен полей. Я почти-что предпочитаю свой вариант, хотя он тоже не ахти какой элегантный.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34740116
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL) ! А что скажете по моему вопросу :
авторЕсть скажем измерение "Менеджеры". Мне надо на листе ограничить возможность выбора по этому измерению, только одним значением. Это чтобы менеджеры не заходили в чужие отчёты.
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34740119
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeKL (XL) ! Саму сводную таблицу приложить не смог - там много данных настоящих, поэтому выложил копи-паст. А решил так как вы и предложили — через поиск вхождения итог . Но все равно спасибо за помощь. Если позволите, то еще вопрос. Есть скажем измерение "Менеджеры". Мне надо на листе ограничить возможность выбора по этому измерению, только одним значением. Это чтобы менеджеры не заходили в чужие отчёты.
А как ты строишь запрос и таблицу? Может имеет смысл прямо в SQL-запросе указывать что-то типа:
WHERE [Менеджеры]='Иванов Иван Иванович'

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34740136
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)
А как ты строишь запрос и таблицу? Может имеет смысл прямо в SQL-запросе указывать что-то типа:
WHERE [Менеджеры]='Иванов Иван Иванович'
KL
[MVP - Microsoft Excel]
Менеджеры это таблица, на основе которой строится измерение для таблицы фактов. И SQL запрос ограничит мне это измерение, но тогда другие менеджеры не увидят ничего.
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34740315
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала то что получилось у меня:
ОПРЕДЕЛЕНИЕ ДИАПАЗОНА ИТОГОВЫХ ЗНАЧЕНИЙ -ВОТ

Код: plaintext
1.
2.
3.
4.
5.
 With ActiveSheet.PivotTables( 1 )
    .PivotSelect "'Row Grand Total'", xlDataOnly, True
     Set rng = Selection
    .PivotSelect "'Column Grand Total'", xlDataOnly, True
     Set rng = Union(rng, Selection)
 End With

Потом заметил, что похожее уже было, да к тому же радикально не нравится KL(XL).

KL (XL) White OwlНо тогда можно отыскать ячейки с итоговыми цифрами так:
Код: plaintext
1.
2.
3.
4.
pt.PivotSelect "FirstField[All;Sum]", xlDataAndLabel
set rngSubTotalsForFirstField = Selection
pt.PivotSelect "'Column Grand Total'", xlDataAndLabel
set rngSubTotalsForFirstField = union(rngSubTotalsForFirstField, Selection)
А потом сравнивать пересечение исходной ячейки с этой областью. Изврат конечно, но работает.
Да, этот вариант предлагался в одном из форумов, где я искал, но мне он радикально не нравится из-за необходимости тотального "хард-кодинга" имен полей. Я почти-что предпочитаю свой вариант, хотя он тоже не ахти какой элегантный.

KL
[MVP - Microsoft Excel]

Всвязи с чем у меня вопрос что означает фраза " тотального "хард-кодинга" имен полей "?

З.ы.:
на мой взгляд недостаток один, правда сущестывенный, - необходимость выделять ячейки (select).
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34740366
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad
Код: plaintext
1.
2.
3.
4.
5.
 With ActiveSheet.PivotTables( 1 )
    .PivotSelect "'Row Grand Total'", xlDataOnly, True
     Set rng = Selection
    .PivotSelect "'Column Grand Total'", xlDataOnly, True
     Set rng = Union(rng, Selection)
 End With


На самом деле, по задаче, еще нужно учитывать SubTotals, а не только Grand Totals

DeggasadВсвязи с чем у меня вопрос что означает фраза " тотального "хард-кодинга" имен полей "?

З.ы.:
на мой взгляд недостаток один, правда сущестывенный, - необходимость выделять ячейки (select).

Имелась ввиду необходимость точного, подробного и жесткого прописывания названий полей,

например:
"'Row Grand Total'"
"'Column Grand Total'"
"FirstField[All;Sum]"
и т.д.

в отличие от
"*итог*"

правда существует вероятность того, что итоговое поле переименовано с удалением слова "итог" или существуют данные содержащие данный текст, хотя пример мне на ум не приходит.
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34740482
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)На самом деле, по задаче, еще нужно учитывать SubTotals, а не только Grand Totals

Для выложенного примера вроде это самое то. хотя вам виднее.

KL (XL)Имелась ввиду необходимость точного, подробного и жесткого прописывания названий полей,

например:
"'Row Grand Total'"
"'Column Grand Total'"
"FirstField[All;Sum]"
и т.д.
в отличие от
"*итог*"

Вроде ничего сложного написать 2 строки, тем болеее одинаковые как для русского, так и для английского Exel. в отличии от "итог", тем более

KL (XL)правда существует вероятность того, что итоговое поле переименовано с удалением слова "итог" или существуют данные содержащие данный текст, хотя пример мне на ум не приходит.
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34741648
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadДля выложенного примера вроде это самое то. хотя вам виднее.
Не то, что бы нам виднее, в обоих примерах по вертикали стоят по нескольку столбцов Subtotals, а не Grand Total, и для каждого из них надо прописывать свое имя ("'Row Grand Total'" не подойдет)

DeggasadВроде ничего сложного написать 2 строки, тем болеее одинаковые как для русского, так и для английского Exel. в отличии от "итог"...
Проблема не в сложности, а в жесткости (наличии [нескольких] констант). Это как разница между [A1] и ActiveCell
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34741711
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL) DeggasadДля выложенного примера вроде это самое то. хотя вам виднее.
Не то, что бы нам виднее, в обоих примерах по вертикали стоят по нескольку столбцов Subtotals, а не Grand Total, и для каждого из них надо прописывать свое имя ("'Row Grand Total'" не подойдет)

DeggasadВроде ничего сложного написать 2 строки, тем болеее одинаковые как для русского, так и для английского Exel. в отличии от "итог"...
Проблема не в сложности, а в жесткости (наличии [нескольких] констант). Это как разница между [A1] и ActiveCell

У меня вроде всё получается, может я сводную как то не так рисую. Посмотрите файл.
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34741712
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот и файл
...
Рейтинг: 0 / 0
Сводная таблица — xlPivotCellGrandTotal
    #34741756
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadА вот и файл

Упс! Сдаюсь :-)
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сводная таблица — xlPivotCellGrandTotal
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]