Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сводная таблица — xlPivotCellGrandTotal / 25 сообщений из 26, страница 1 из 2
20.08.2007, 15:20:52
    #34738926
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица — xlPivotCellGrandTotal
Добрый день !
Подскажите, как определить попадание activecell в зеленую область ?
Пробую cell.PivotCellType, оно =0.
...
Рейтинг: 0 / 0
20.08.2007, 15:31:35
    #34738961
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица — xlPivotCellGrandTotal
Код: 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
20.08.2007, 15:37:51
    #34738987
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица — xlPivotCellGrandTotal
KL (XL) ! Увы ... ваш код отлавливает если я встал в заголовок "Итог План_Продаж", но если я встаю на ячейку с данными, то получаю false. Его же я получаю если встану в ячейку с данными в столбце "План_Продаж". Мне нужно отловить именно итоговые столбцы и строки ( справа и снизу). Заранее спасибо.

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



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

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

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

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

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
20.08.2007, 19:33:32
    #34739981
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица — xlPivotCellGrandTotal
KL (XL)Кстати, .PivotCell.PivotCellType похоже, что действительно сломано (по крайней мере в Excel2007)
Прилагаю пример таблицы с картой типов ячеекНу почему же сразу сломано? Все там в порядке. Проверь что тип ячейки нулевой и она входит в регион pt.TableRange1 - вот тебе и зеленая ячейка :)
...
Рейтинг: 0 / 0
20.08.2007, 19:54:59
    #34740026
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица — xlPivotCellGrandTotal
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
20.08.2007, 20:10:53
    #34740048
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица — xlPivotCellGrandTotal
Такой, не слишком элегантный, способ:

Код: 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
20.08.2007, 20:17:08
    #34740058
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица — xlPivotCellGrandTotal
слегка припудрим [подправим] дурнушку:

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
20.08.2007, 20:19:15
    #34740061
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица — xlPivotCellGrandTotal
Еще попытка:

Код: 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
20.08.2007, 20:38:34
    #34740089
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица — xlPivotCellGrandTotal
KL (XL) ! Саму сводную таблицу приложить не смог - там много данных настоящих, поэтому выложил копи-паст. А решил так как вы и предложили — через поиск вхождения итог . Но все равно спасибо за помощь. Если позволите, то еще вопрос. Есть скажем измерение "Менеджеры". Мне надо на листе ограничить возможность выбора по этому измерению, только одним значением. Это чтобы менеджеры не заходили в чужие отчёты.
авторРазве возможно пользователю редактировать значения полей PivotTable, тем более итоги?
Да можно, он редактирует столбцы с плановыми значениями. В MS OLAP это называется WriteBack.
...
Рейтинг: 0 / 0
20.08.2007, 20:43:22
    #34740100
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица — xlPivotCellGrandTotal
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
20.08.2007, 21:00:51
    #34740109
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица — xlPivotCellGrandTotal
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
20.08.2007, 21:05:14
    #34740116
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица — xlPivotCellGrandTotal
KL (XL) ! А что скажете по моему вопросу :
авторЕсть скажем измерение "Менеджеры". Мне надо на листе ограничить возможность выбора по этому измерению, только одним значением. Это чтобы менеджеры не заходили в чужие отчёты.
...
Рейтинг: 0 / 0
20.08.2007, 21:06:42
    #34740119
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица — xlPivotCellGrandTotal
big-dukeKL (XL) ! Саму сводную таблицу приложить не смог - там много данных настоящих, поэтому выложил копи-паст. А решил так как вы и предложили — через поиск вхождения итог . Но все равно спасибо за помощь. Если позволите, то еще вопрос. Есть скажем измерение "Менеджеры". Мне надо на листе ограничить возможность выбора по этому измерению, только одним значением. Это чтобы менеджеры не заходили в чужие отчёты.
А как ты строишь запрос и таблицу? Может имеет смысл прямо в SQL-запросе указывать что-то типа:
WHERE [Менеджеры]='Иванов Иван Иванович'

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

Код: 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
21.08.2007, 00:31:42
    #34740366
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица — xlPivotCellGrandTotal
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
21.08.2007, 08:16:11
    #34740482
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сводная таблица — xlPivotCellGrandTotal
KL (XL)На самом деле, по задаче, еще нужно учитывать SubTotals, а не только Grand Totals

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

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

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

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

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

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

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

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


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