Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/35: Рейтинг темы: голосов - 35, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 06.10.2008
Сообщений: 23

Как из одной сводной таблицы "отнять" другую?

07.10.2008, 12:44. Показов 7193. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как в момент сложения сводных таблиц в третью, результирующую, у всех данных одной из них поменять знак, оставив при этом первичные данные 'в покое'?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.10.2008, 12:44
Ответы с готовыми решениями:

Как от одной даты отнять другую
Запрос SELECT ., .госномер, .дата, автомашины., автомашины., DateDiff("yyyy",,) AS Выражение1 FROM автомашины INNER JOIN ON...

Отнять от одной даты другую
Мне даны две даты. Нужно от одной даты отнять другую и получить количество дней. Подскажите, пожалуйста, как это сделать.

Итоговое поле сводной таблицы и условное форматирование сводной таблицы по данным из другой таблицы
добрый день всем! подскажите как мне правильно сделать формулу в сводной таблице, чтобы посчитать итоги. в общем есть две таблицы...

7
1 / 1 / 0
Регистрация: 28.09.2007
Сообщений: 285
08.10.2008, 12:15
Я, вообще то , не знаю как ты складываешь несколько сводных таблиц - из меню, вроде , можно только получить новую сводную на основе только одной другой сводной таблицы.
Но вроде всегда есть возможность создать вычисляемые поля и зная исходные их можно инвертировать по знаку.
Или получать данные как из внешнего источника - тогда имеется возможность править поля в SELECT'е .
0
0 / 0 / 0
Регистрация: 06.10.2008
Сообщений: 23
08.10.2008, 12:40  [ТС]
Я получаю данные именно как из внешнего источника, но мне нужно только расчетные данные поправить, а исходные оставить как есть. А select дает править только исходные данные. Как мне вклиниться в процедуру создания сводной таблицы, чтобы поменять знаки только на этом этапе, в самом модуле (виртуально, только для расчета), а не в данных. Например, в момент, когда я указываю область значений, указать хитрым образом, что знак нужно поменять.
0
1 / 1 / 0
Регистрация: 28.09.2007
Сообщений: 285
09.10.2008, 00:35
Я не понимаю твоего высказывания, так ниже в примере я извлекаю данные из внешнего источника с помощью SELECT'а и при этом какие угодно результаты м.б. получены, не затрагивая никоим образом исходные данные :
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sDriver = '{Microsoft Access Driver (*.mdb)}'
 
With ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal)
 .Connection = Array( _
 Array('ODBC;DBQ=' + PathDB + ';DefaultDir=' + NameFile(PathDB, 'P')), _
 Array(';Driver=' + sDriver + ';DriverId=25;FIL=MS Access;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5' _
       ), _
 Array(';SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;') _
                     )
 .CommandType = xlCmdSql
 .CommandText = Array('SELECT TdTotal.KodPdr, TdTotal.DtSm, TdTotal.Name, TdTotal.OstKol, TdTotal.sRash ' & _
                      Chr(13) & '' & Chr(10) & 'FROM TdTotal TdTotal')
 .CreatePivotTable TableDestination:=Sheets(HistorySheetName).Range(TLC), _
                          TableName:=MergeTableName
End With
0
1 / 1 / 0
Регистрация: 28.09.2007
Сообщений: 285
09.10.2008, 00:38
Забыл : Ну значения некоторых переменных тут опущены - ясно , что они где выше присвоены .
0
0 / 0 / 0
Регистрация: 06.10.2008
Сообщений: 23
09.10.2008, 17:34  [ТС]
Несколько раз 'глубоко вдумался в текст'.

.CommandText = Array('SELECT TdTotal.KodPdr, TdTotal.DtSm, TdTotal.Name, TdTotal.OstKol, TdTotal.sRash ' & _
Chr(13) & '' & Chr(10) & 'FROM TdTotal TdTotal')

KodPdr, DtSm, Name и т.д. это названия столбцов (или других поименованных областей) в области данных TdTotal (это переменная, чтобы не работать с данными источника). Так? Т.е. можно написать Array('SELECT TdTotal.KodPdr*(-1), ...)? Так что-ли?
Тогда это уже хорошо.
Но я беру динамически изменяющуюся область данных для своей сводной таблицы. Я не знаю, сколько у нее будет строк и столбцов, и поэтому я еще глубже копнуть хотел.
Когда я делаю ссылку на область с данными для сводной таблицы, автоматически эта область внутри VBA (независимо от пользователя) разбивается на:
название строк, название колонок и сами данные.
А как мне 'проникнуть' в эту разбивку и написать что-нибудь типа

ОбластьДанныхДляТаблицы = СамиДанные*(-1)

Или вот еще задумка. У Сводной таблицы есть такой метод .Calculation, у которого 'вшито' несколько вариантов расчета полей: xlNormal, xlDifferenceFrom, xlPercentOfColumn и т.д. Может, мне до него добраться? Или я уже брежу, и пора спускаться на нашу грешную?
0
1 / 1 / 0
Регистрация: 28.09.2007
Сообщений: 285
10.10.2008, 03:21
'Т.е. можно написать Array('SELECT TdTotal.KodPdr*(-1), ...)? Так что-ли?'
- Да так, конечно.
'Но я беру динамически изменяющуюся область данных для своей сводной таблицы. Я не знаю, сколько у нее будет строк и столбцов, и поэтому я еще глубже копнуть хотел.
Когда я делаю ссылку на область с данными для сводной таблицы, автоматически эта область внутри VBA (независимо от пользователя) разбивается на:
название строк, название колонок и сами данные.
'
- Так откуда данные - то берутся - из листа Excel или извне ? Впрочем,
для меня например, это без разницы, см. мой ответ http://www.relib.com/forums/topic.asp?id=756843&pg=2
А что касается динамически меняющейся области данных, то следует строить на разное число столбцов свои SELECT'ы, ну разное число строк - оно понятно всегда в реляционных СУБД предполагается разным.
0
0 / 0 / 0
Регистрация: 06.10.2008
Сообщений: 23
12.10.2008, 19:07  [ТС]
//- Так откуда данные - то берутся - из листа Excel или извне? Впрочем, для меня например, это без разницы, см. мой ответ
http://www.relib.com/forums/topic.asp?id=756843&pg=2

Спасибо, ответ я сейчас почитаю и постараюсь разобраться. А данные, как я писал в самом начале, берутся из сводных таблиц, в которых и количество столбцов и количество строк постоянно растет. По столбцам даты, по строкам фирмы, в значениях суммы. Сводная таблица - так называемый 'бюджет' компании. Я ведь не программист, я 'экономист')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.10.2008, 19:07
Помогаю со студенческими работами здесь

Как сослаться на элементы управления сводной таблицы и сводной диаграммы ?
Как сослаться на элементы управления сводной таблицы и сводной диаграммы ?

Получить данные из одной таблицы и отнять это значение в другой
Имеется 2 таблицы. Мне нужно чтоб при добавления товара в таблицу СоставЗаказаНаВыдачуТовара и заполнения столбца Количество, это...

Создание сводной таблицы из одной большой
Не очень представляю как подойти в вопросу. Есть офигенно длинная таблица экселя 1-й столбец ФИО 2-й столбец сумма циферками. Мне...

Как из одной таблицы сделать другую?
Долго ломал голову, как сформулировать вопрос, но так и не придумал ничего тупее.:) Не судите строго, с базами данных никогда не работал, и...

Раскрытие данных только для одной категории в сводной таблицы
Добрый день, форумчане. Подскажите, пожалуйста, как мне настроить сводную таблицу, чтобы у меня один и тот же месяц при раскрытии...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru