Не работает пересчет формул

Автор sofi, 21 июля 2014, 06:10

0 Пользователи и 1 гость просматривают эту тему.

sofi

Всем привет!
Интересный случай в нашей деревне!
Расширенный Фильтр выдергивает данные из одного листа и вставляет результат на другом.
Затем, формулы вида:
=COUNTIF(A1:A10;"нет")
считают статистику по данным фильтра.

Так вот, формулы не обрабатывают результаты фильтра при их изменении!
Все остальное, на том же листе, пересчитывается и чудно работает!
Хоть не вставляй формулы макросом, после фильтра либо все макросом считать!
Люди добрые, что за теоритическая засада?

P.S.
Если из формулы "руками" убираешь "=", а затем вновь вставляешь,
формула выдает правильный результат.
Правильно поставленный вопрос, на 50% предполагает правильный ответ!
А, если автоматизировать бардак, то получится автоматизированный бардак!

Yakov

Цитата: sofi от 21 июля 2014, 05:10Хоть не вставляй формулы макросом,
Может быть проблема в том, что формулы вставляются как текст?
Приведите пример вашего кода.

sofi

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

Привожу код:

  'включаем фильтр
   oSheet = ThisComponent.getSheets().getByIndex(1)
   oFiltDesc = oSheet.createFilterDescriptor(True) 'определяем переменную CopyOutputData 
   oCritRange = oSheet.getCellRangeByName("B1:P2") 'определяем диапазон критериев фильтрации
   oDataRange = oSheet.getCellRangeByName(rng.Address) 'определяем диапазон базы для фильтрации
   oFiltDesc = oCritRange.createFilterDescriptorByObject(oDataRange)
   
   oFiltDesc.CopyOutputData = True 'разрешаем копировать на лист3
   Dim x As New com.sun.star.table.CellAddress
   x.Sheet = 2 'лист 3
   x.Column = 0 'столбец 1
   x.Row = 14 'строка 15
   oFiltDesc.OutputPosition = x 'определяем адрес куда копировать отфильтрованные данные
   oDataRange.filter(oFiltDesc) 'записываем данные на лист3
Правильно поставленный вопрос, на 50% предполагает правильный ответ!
А, если автоматизировать бардак, то получится автоматизированный бардак!

rami

Цитата: sofi от 21 июля 2014, 05:10Интересный случай в нашей деревне!
Чудна погода в вашей деревне : густой туман скрадывает очертания домов и деревьев.
У меня всё работает и фильтр и формула.
Цитата: sofi от 21 июля 2014, 05:10Хоть не вставляй формулы макросом, после фильтра либо все макросом считать!
А вот тут я бы попросил подробности.

sofi

#4
ЦитироватьА вот тут я бы попросил подробности.
Я хочу сказать, что если формулу вставлять на лист программно,
т.е. после выгрузки результатов фильтрации, то все работает!

Не работает, если формула "забита" в ячейку листа "руками".
Иначе говоря, перезаписывать макросом формулу в ячейку, после
каждого применения фильтра.
Правильно поставленный вопрос, на 50% предполагает правильный ответ!
А, если автоматизировать бардак, то получится автоматизированный бардак!

rami

Проверьте "Сервис" "Содержимое ячейки" "Вычислять автоматически", если нет флажка, может быть где то в макросах снимается. "Забитые" вручную и не вручную формулы всегда пересчитываются при изменении влияющих ячеек если пересчёт не запрещён.

sofi

"Обижаешь начальник!"  :)
Calculate я первым делом проверил! Галка есть.
А в макросах он вообще, нигде не применяется.
Вы не обратили внимание, ранее я писал:

ЦитироватьТак вот, формулы не обрабатывают результаты фильтра при их изменении! 
Все остальное, на том же листе, пересчитывается и чудно работает!

Так, что беда какая-то! :o
Правильно поставленный вопрос, на 50% предполагает правильный ответ!
А, если автоматизировать бардак, то получится автоматизированный бардак!

rami

Что я делаю не так? Фильтр и формулу скопировал у вас, только диапазоны поменял.

Hasim

А сам проблемный файл выложить не судьба?

sofi

ЦитироватьФильтр и формулу скопировал у вас, только диапазоны поменял
К сожалению, Ваш файл я открыть не могу.

Цитироватьпроблемный файл выложить
Попробую
Правильно поставленный вопрос, на 50% предполагает правильный ответ!
А, если автоматизировать бардак, то получится автоматизированный бардак!

rami

Цитата: sofi от 21 июля 2014, 13:54К сожалению, Ваш файл я открыть не могу.
Медиапроигрыватель VLC открывает. А в каком формате вы смотрите видеофайлы?

sofi

У меня штатный WindowsMedia.

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

Это какая-то мистика! Но ведь чудес не бывает! :o
Правильно поставленный вопрос, на 50% предполагает правильный ответ!
А, если автоматизировать бардак, то получится автоматизированный бардак!

Hasim

теперь можно попробовать сделать большой пример для себя (с самого начала).

sofi

Попробовал, все очень печально!
Дал команду фильтру выгружать данные на другой лист и
все работает!
Выходит у меня "вылетил" первоначальный лист!
Прошел код F8, ошибок не нашел.
Видно, как фильтр вставляет данные на лист, а формула это не видит!
Теперь все переделывать, тоска!!!! :'(
Правильно поставленный вопрос, на 50% предполагает правильный ответ!
А, если автоматизировать бардак, то получится автоматизированный бардак!

Hasim