Друзья всем привет! Точнее не работает функция СТРОКА() из примера. Уже пару часов потратил. А ещё и обновление списка тем не работает на странице Вопросы по Microsoft Excel.
Изменено: SerjPruz - 12.03.2025 13:08:24(Добавил информацию про сбой в работе сайта)
Как всё запущено! Если бы я делал постановку задачи, то в формулах на листе использовал бы только имя ярлыка, а если в VBA, то только внутреннее кодовое имя. Остаётся ещё вопрос контроля изменения этого внутреннего имени в зависимости от его использования.
1. В книге регистрации формулы типа =ЕСЛИ(FT;5;6). В январе заменены на 5, в феврале ещё формула. 2. В книге с отчётом установлен интервал месяц. Ещё есть таблица коэффициентов в зависимости от значения типа от 1 до 5 значение коэффициента 50%, от 5 до 10 100%, больше 10 150%.
3. В книге с отчётом заполняется таблица в ячейках которой обращение к функции. 4. Функция считает сумму за день и в зависимости от параметра коэффициента умножает сумму. Например передаётся в функцию (300; 3) - в макросе 300*50% возвращается 150. 5. Вот если установлен интервал январь и изменить 50% на 70%, то формулы не пересчитываются, а если февраль, то пересчитываются. Если меняем месяц, то тоже пересчитывается.
Ещё раз извините за нарушение правил, но увы. Готов ответить на уточняющие вопросы. Конечно на самом деле формулы и функции "посложнее".
написал: Может, просто в отчете ручной пересчет установлен?
1. Нет, стоит "автоматически" 2. В интервале за февраль, где формулы, всё пересчитывается автоматически, а если интервал январь (закрытый, формулы заменены на значения) не пересчитывается.
написал: Вообще если исходные данные не изменяются
Спасибо. Данные меняются. Меняется параметр коэффициент при вызове функции которая пересчитывает данные с книги регистрации. А вот в книге регистрации данные в двух видах: формулы или конкретные значения. Изменение коэффициента никакого влияния на эти формулы не имеет, не используется.
Постараюсь сделать более конкретное описание пример.
Всем привет. Есть две книги: в одной регистрация данных, в другой отчёт по этим данным. В книге с регистрацией данных после окончания месяца часть данных формулы заменяются расчётными значениями. А в отчёте расчёт делается с использованием пользовательских функций. В качестве параметров передаётся дата и коэффициент. Так вот эти функции не пересчитываются на интервалах закрытого периода (со значениями в книге регистрации), а на текущем периоде (с формулами в книге регистрации) пересчитываются.
По Ctrl + Alt + F9 конечно пересчитывается. Но не могу понять почему не пересчитывается автоматически. Заранее извиняюсь за нарушение правил - выложить оригиналы файлов не могу ибо закрытая информация, а подготовить пример с фиктивными данными как-то нетривиально.
По форуму поискал, но вопрос "почему" как-то быстро сворачивается на применение F9, а хотелось бы разобраться чтобы настроить.
Вот этот абзац кажется мне очень интересным, но сказываются недостатки в базовых знаниях :-(
Цитата
Разумный выход - перенести соответствующие тексты в ячейки листов надстройки (скрытых листов книги) или в пользовательские свойства надстройки (книги). На такую модификацию в больших приложениях потребуется определенное время. Полезно иметь макрос, который будет отлавливать "нехорошие" литералы. Литералы, содержащие имена (внешние) листов книги, можно вообще исключить, применяя внутренние имена листов (см. п. 2.1.) в соответствующих конструкциях.
1. Если я имя файла с русскими буквами занесу в некую ячейку, то всё равно остаётся проблема адресации к данному файлу из других файлов. Или в каждом файле делать страничку с ячейками содержащими все неправильные имена? 2. Про ловящий макрос не совсем понятно. В какой момент этот макрос нужно будет запускать?
3. В VBA_Project - Лист4(Rap_M). Лист4 это внутреннее имя, а Rap_M внешнее? Но ведь Лист4 тоже на русском?
написал: Т.к. это функция, то ошибок может и не выдавать, когда вызывается с листа, а просто завершаться.
Да, на это уже наткнулся и пока не придумалк как с этим "бороться". Делаю отладочную печать MsgBox. Но у меня эта функция вызывается с листа больше тысячи раз и так как прервать невозможно (или я не знаю как :-(), то иногда снимаю задачу. Или делаю отладочный файл только с одним вызовом этой функции.
Set wBS = Workbooks("Отчёты отладка").Sheets("ОтчМесПрбезОкл")
На 3-х ПК стоит 16-я версия Excel. На двух работает, а на одном функция прекращает работу на этой строке. Никаких ошибок не выдаёт. Функция в модуле файла "Отчёты отладка". Уже пару часов бьюсь и никак не пойму что не так.
1. Сначала лечим данные в колонке. При помощи фильтров ищем и исправляем явные косяки. 2. Убираем все фильтры. 3. Выделяем всю колонку, копируем и вставляем её за границами Умной таблицы. 4. Копируем ячейку с правильной формулой. Выделяем ВСЮ колонку и вставляем. 5. Добавляем одну строку после последней строки умной таблицы. Проверяем что автозаполнилась правильная формула. 6. Удаляем тестовую последнюю строку. 7. Выделяем данные скопированные в п.3. и копируем. 8. Выделяем ВСЮ колонку и вставляем данные. 9. Удаляем временные данные п.3. 10. Проверяем добавление новой строки с автозаполнением.
Порезал как смог. При загрузке отказаться от Debug. Смотреть колонку расценки - новая формула в последней строке. При добавлении новой строки - подставляется старая формула.
Извиняюсь, но чтобы это работало нужно несколько файлов с перекрёстными ссылками. Подготовить их для публикации сложно. :-( Может можно как-то обойтись без файлов? По сути вопрос остался прежним- откуда Excel берёт формулу и как там её обновить?
В этой таблице данные накапливаются в течении года. По окончании месяца рассчитанные значения в этой колонке превращаются в значения. Т.е. верхняя часть таблицы в этой колонке это значения, а данные за последний-текущий месяц считаются этой формулой.
Но при добавлении новой строки вставляет старую формулу. Везде искал на листе этой старой формулы нет. Откуда она её берёт и что сделать чтобы работало как нужно?
Спасибо. Файл большой и связанный с другими, чтобы выкладывать нужно готовить. :-( Если не получится обойтись советами, то конечно подготовлю и выложу.
В таблице есть несколько поименованных областей переменных определяющих верхние и нижние границы диапазона. Например ВГ1 - верхняя граница 1, ВГ2 - верхняя граница 2. Заполнены числами например
А1 - 1000 Это ВГ1 А2 - 2000 Это ВГ2
Потом идёт таблица с расчётами. Захотел формулу спрятать в пользовательскую функцию. А при прямом использовании в коде имена не видны. Подскажите где и как определить видимость, передавать как параметры не хочется.