Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Макрос, проверяющий цвет шрифта в ячейке
 
Jack Famous, спасибо! Работает!
Макрос, проверяющий цвет шрифта в ячейке
 
Такая же проблема. Оказалось, VBA не видит изменение цвета шрифта в результате применения условного форматирования. Можно это обойти?
Подсчёт количества итераций на листе.
 
Цитата
Ilya66 написал:
P.S. Проблема решена "в лоб" - сравнение времени расчётов при числе итераций = х(заданной для этого листа по умолчанию) и 3х.
Вылезли недостатки такого решения - более-менее работает при достаточно объёмных вычислениях. А при простых заданиях итераций затрачивается мало, вычисляется быстро, и таймер не успевает толком запуститься. Время нормально не отслеживается, то измеряет какие-нибудь 7 мс, то тут же вообще 0. Пришёл к другому решению:
Код
Sub ill66()
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.MaxIterations = 200 ' число итераций должно быть гарантированно больше максимально требуемого раза в 1,5.

здесь запускаем свои вычисления

qz = [B17] + [Q22] + [Y54] + .... 'записываем сумму вычисленных значений в контрольных ячейках.
Application.MaxIterations = 199 ' уменьшаем число итераций на 1

снова запускаем вычисления
qs = записываем сумму значений в контрольных ячейках
If qz <> qs Then ' если хоть в одной контрольной ячейке результаты вычислений при 200 и 199 итерациях отличаются, сумма будет разной
MsgBox ("BAD!")
Else
MsgBox ("OK")
End If

Application.MaxIterations = 200
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub  
Это работает стабильно и быстро. Возможно, при каких-то вычислениях придётся перед суммированием лепить Round на каждую контрольную ячейку, дабы откинуть мусор, объявить переменные, и т.д. Мне не понадобилось.
Подсчёт количества итераций на листе.
 
Цитата
БМВ написал:
Я о том что вы вроде говорите правильные вещи но для своего измерения.
То же самое могу сказать о Вас.

Цитата
БМВ написал:
Также любой инженер (простите не любой)  скажет что не нужно показывать результат  с точностью до 15го знака если прибор или данные имеют точность до второго.
Любой даже не инженер согласится, что если для вычислений вводятся числа с точностью, скажем, до 5-го знака, то "шум" в каком-нибудь шестнадцатом разряде, образующийся при вычислениях есть мусор, и должен по умолчанию отбрасываться. Просто по обычной логике, коль скоро стандарт вычислений не позволяет избавиться от этой погрешности.

Цитата
БМВ написал:
а пока ответ на вопрос темы - итераций на листе будет столько, сколько указано в настройках приложения.
Второй раз - ответ неверный.

Цитата
Андрей VG написал:
ТС не хочет усвоить того простого факта, что Excel не использует в вычислениях простых чисел
Да усвоил, усвоил. Мне непонятно почему, зная этот врождённый дефект, создатели счётных программ не озаботились о его устранении, переложив проблему на плечи пользователя. Почему я и "гоню" на программистов.

Цитата
Светлый написал:
Тестовый пример для подсчёта итераций при достижении (или недостижении) требуемой точности.
Спасибо. В-общем, я решил задачу другим способом. Гораздо проще написать десяток строк в VBA, чем городить подобную проверку на каждую итерационную цепочку.

P.S. ИМХО, тема превратилась в перепалку знатоков против чайника (меня). Да я и не обижаюсь, но больше писать нечего. Ещё раз всем спасибо.
Подсчёт количества итераций на листе.
 
Цитата
vikttur написал:
Стандарт такой , параграф 9.
Я же спрашивал про инструкцию для чайника-пользователя, который всё же знает, что 2 + 3 - 1 = 4, а не какие-нибудь 4,000000000000000000000000012. Дело не столько в абсолютной ошибке, а в том, что при сравнении арифметически одинаковых чисел, с точки зрения компьютера они оказываются не равны. И приходится пихать Round там, где это по обычной, нормальной математике не нужно.
Цитата: Язык программирования и программист не могут изменить эту ситуацию...
Язык - да, а программист не может, или не хочет? Если пользователь вводит целые числа, или числа с точностью до N знака, неужто программист не в состоянии сделать, чтобы программа это отслеживала? Не верю.

Цитата
vikttur написал:
A1=A1+1. Но! Не просто так, а с проверкой результата (не десятков пзависимостей, а конкретного, нужного результата!)
:) Нет там НУЖНОГО результата, это не подгон решения под правильный ответ. Будь известен результат, зачем нужны какие-то вычисления??????

Цитата
Андрей VG написал:
Интересный у вас первоклассник, однако. Если он 2 поделит на 3 и получит на калькуляторе только 15 шестёрок после запятой (в лучшем случае, а некоторые так в последнем разряде и 7! покажут - караул!) - то это нормально? Непорядок, выкиньте неправильный калькулятор
1 А потом умножит эти 0,6666666666666667 на 3 и получит 2. И при сложении, вычитании, умножении и делении целых чисел получает-таки целые числа. На калькуляторе в компьютере. Удивительно.
2 Речь зашла не о бесконечных десятичных дробях, а о 2х2. Думаю, сойдёмся на том, что результат = 4, независимо от того, что там думает компьютер. :)
3 Пусть не первоклассник, (в каком там классе дроби проходят?), запишет абсолютно точный результат - 2/3. Компьютер так не умеет? Так пускай его научат...программисты, ваш выход.

Цитата
Ігор Гончаренко написал:
нет дело в безграмотных пользователях не желающих изучать базовые принципы работы устройства за эксплуатацию которого они взялись
Снобизм попёр... эксель - программа не для узкопрофильных специалистов, а для чайников. Которые не должны знать о дурацких "особенностях", о которых их к тому же не предупреждают.

Цитата
Ігор Гончаренко написал:
компьютер придумали не программисты, а бестолковые (с вашей точки зрения) инженеры
:) Не валите с больной головы на здоровую, как раз к инженерам претензий нет. Практика показывает, что именно программисты - самое слабое звено.
Подсчёт количества итераций на листе.
 
Цитата
Ігор Гончаренко написал:
не в Excele, а в компьютере
Пользователю безразлично, в экселе или компьютере не соблюдаются правила арифметики. И где (в какой) инструкции на компьютер написано, что сей чудный аппарат не может без "хвостов" в дцатых разрядах произвести арифметические действия с целыми числами, т.е. то, что умеет любой первоклассник?

Цитата
Ігор Гончаренко написал:
использовать его по назначению
Калькулятор в том же компьютере таких вольностей себе не позволяет. Так что дело как обычно, в кривых ручках программистов.
Подсчёт количества итераций на листе.
 
Цитата
БМВ написал:
так как знаю, что не всегда 2*2=4
В арифметике 2*2 = 4 всегда. А за то, что в экселе железные правила арифметики вдруг стали относительны, спасибо создателям сей программы. :D
Подсчёт количества итераций на листе.
 
Цитата
БМВ написал:
Написано то одно но каждый читает то что ему хочется.
Читают все одно и то же, понимают по-разному. Вам осталось уяснить, для чего при задании максимального числа итераций задаётся ещё и относительная точность. А также понять, что фраза "циклические ссылки могут повторяться бесконечно" вовсе не означает, что циклические ссылки всегда будут повторяться бесконечно (т.е. до установленного максимального значения итераций). Наконец, почитать про циклические ссылки с примерами в инете.

Цитата
Ігор Гончаренко написал:
любое уродское решение, дающее правильный результат, в моих глазах выглядит гораздо привлекательнее любого изящного решения считающего ерунду.
:) Согласен.
Подсчёт количества итераций на листе.
 
Цитата
БМВ написал:
Доказать сможете?
Доказывать то, что написано в мануале?
P.S. Проблема решена "в лоб" - сравнение времени расчётов при числе итераций = х(заданной для этого листа по умолчанию) и 3х. Неизящно, но работает. Всем спасибо.
Подсчёт количества итераций на листе.
 
Цитата
vikttur написал:
если используете VBA, то какой смысл возиться с итеративными вычислениями?
Прямой. Описать это в ВБА было бы на порядки сложнее.
Цитата
БМВ написал:
Еще раз, если что-то непонятно
Я для Вас продублировал конкретный вопрос, он непонятен?
Цитата
БМВ написал:
Итераций будет столько, сколько будет указано
Их будет столько, сколько понадобится для достижения заданной точности, или же максимально указанное кол-во, если точность не достигается.
Упрощаю вопрос: как определить, достигнуто или нет при расчёте листа максимально заданное количество итераций?
Подсчёт количества итераций на листе.
 
Цитата
БМВ написал:
Зато не в России пишут всякий бред, не уточняя о чем вопрос...
А что Вам непонятно в вопросе:
Цитата
Ilya66 написал:
существует ли возможность вытащить сведения, сколько итераций затрачено на решение...
Что надо уточнить? Поскольку экселем кол.-во итераций на листе подсчитывается, я полагаю, что должен быть какой-то способ.
Подсчёт количества итераций на листе.
 
В России  вместо ответа на конкретно заданный вопрос (да, вот решение, или нет - это невозможно), пишут, что у тебя всё неправильно. :)
Цитата
vikttur написал:
Отдельная ячейка с подсчетом и проверка на превышение допустимой границы.
Хм...там циклических ссылок десятки и итерационные цепочки в десятки формул с разветвлениями. Не представляю, как это туда прикрутить.
Цитата
vikttur написал:
Где это?
В VBA, конечно. Application.Iteration....   .MaxIterations

Подсчёт количества итераций на листе.
 
Здравствуйте, знатоки Эксель!

Постараюсь кратко.
Есть лист с кучей формул и циклических ссылок. Всё это работает, но из-за довольно грубой дискретности используемых констант (их изменить нельзя), иногда вычисления оказываются некорректными. Внешне это никак не отображается. Единственное отличие – пересчёт в таких случаях идёт дольше, т.к. используется максимальное заданное в экселе кол.-во итераций, а заданная точность не достигается. Но проверка по времени расчёта не годится, предполагается использование на совсем разных машинах.

Вопрос: существует ли возможность вытащить сведения, сколько итераций затрачено на решение (они ведь худо-бедно, но отображаются в строке состояния)? Чтобы в итоге сделать так: достигнут максимум итераций = неверные вычисления. Крутил Iteration(s)....не получается, третий день мучаю поисковики и ломаю мозг...
Страницы: 1
Наверх