Содержание
- Предупреждение о циклической ссылке
- Как найти циклическую ссылку
- Параметры вычислений
- Руководство по проверке данных Excel
- Контроль достоверности данных
- Важное ограничение
- Определение правил проверки данных
- Параметры проверки данных
- Простое выпадающее меню
- Проверка данных с помощью пользовательской формулы
- Формулы устранения неполадок
- Примеры формул проверки данных
- Как автоматически выделять диапазоны для выборки ячеек из таблицы?
- Динамическое определение границ выборки ячеек
- Заполнение диапазона
- Перемещение диапазона
- Копировать/вставить диапазон
- Примеры использования функции АГРЕГАТ в Excel
- Панель формул
- Ручной ввод функции
- Расчет среднего значения
- Использование арифметического выражения
- Использование функции СРЗНАЧ
- Присвоение диапазона ячеек переменной
- Адресация ячеек в диапазоне
- Заключение
Предупреждение о циклической ссылке
Появление циклических ссылок очень легко определить. При их возникновении или наличии в уже созданной книге excel сразу же появляется предупреждение о циклической ссылке, которое по большому счету и описывает суть явления.
При нажатии на кнопку ОК, сообщение будет закрыто, а в ячейке содержащей циклическую ссылку в большинстве случаев появиться 0.
Предупреждение, как правило, появляется при первоначальном создании циклической ссылки, или открытии книги содержащей циклические ссылки. Если предупреждение принято, то при дальнейшем возникновении циклических ссылок оно может не появляться.
Как найти циклическую ссылку
Циклические ссылки в excel могут создаваться преднамеренно, для решения тех или иных задач финансового моделирования, а могут возникать случайно, в виде технических ошибок и ошибок в логике построения модели.
В первом случае мы знаем об их наличии, так как сами их предварительно создали, и знаем, зачем они нам нужны.
Во втором случае, мы можем вообще не знать где они находятся, например, при открытии чужого файла и появлении сообщения о наличии циклических ссылок.
Найти циклическую ссылку можно несколькими способами. Например, чисто визуально формулы и ячейки участвующие в образовании циклических ссылок в excel отмечаются синими стрелками, как показано на первом рисунке.
Если циклическая ссылка одна на листе, то в строке состояния будет выведено сообщение о наличии циклических ссылок с адресом ячейки.
Если циклические ссылки есть еще на других листах кроме активного, то будет выведено сообщение без указания ячейки.
Если или на активном листе их более одной, то будет выведено сообщение с указанием ячейки, где циклическая ссылка появляется в первый раз, после ее удаления – ячейка, содержащая следующую циклическую ссылку и т.д.
Найти циклическую ссылку можно также при помощи инструмента поиска ошибок.
На вкладке Формулы в группе Зависимости формул выберите элемент Поиск ошибок и в раскрывающемся списке пункт Циклические ссылки.
Вы увидите адрес ячейки с первой встречающейся циклической ссылкой. После ее корректировки или удаления – со второй и т.д.
Теперь, после того как мы выяснили как найти и убрать циклическую ссылку, рассмотрим ситуации, когда делать этого не нужно. То есть когда циклическая ссылка в excel приносит нам определенную пользу.
Параметры вычислений
Следующий список поясняет опции, которые доступны в разделе Calculation options (Параметры вычислений):
- Automatic (Автоматически) – пересчитывает все зависимые формулы и обновляет все открытые или внедрённые диаграммы при любом изменении значения, формулы или имени. Данная настройка установлена по умолчанию для каждого нового рабочего листа Excel.
- Automatic except for data tables (Автоматически, кроме таблиц данных) – пересчитывает все зависимые формулы и обновляет все открытые или внедрённые диаграммы, за исключением таблиц данных. Для пересчета таблиц данных, когда данная опция выбрана, воспользуйтесь командой Calculate Now (Пересчет), расположенной на вкладке Formulas (Формулы) или клавишей F9.
- Manual (Вручную) – пересчитывает открытые рабочие листы и обновляет открытые или внедрённые диаграммы только при нажатии команды Calculate Now (Пересчет) или клавиши F9, а так же при использовании комбинации клавиши Ctrl+F9 (только для активного листа).
- Recalculate workbook before saving (Пересчитывать книгу перед сохранением) – пересчитывает открытые рабочие листы и обновляет открытые или внедрённые диаграммы при их сохранении даже при включенной опции Manual (Вручную). Если Вы не хотите, чтобы при каждом сохранении зависимые формулы и диаграммы пересчитывались, просто отключите данную опцию.
- Enable iterative calculation (Включить итеративные вычисления) – разрешает итеративные вычисления, т.е. позволяет задавать предельное количество итераций и относительную погрешность вычислений, когда формулы будут пересчитываться при подборе параметра или при использовании циклических ссылок. Более детальную информацию о подборе параметров и использовании циклических ссылок можно найти в справке Microsoft Excel.
- Maximum Iterations (Предельное число итераций) – определяет максимальное количество итераций (по умолчанию – 100).
- Maximum Change (Относительная погрешность) – устанавливает максимально допустимую разницу между результатами пересчета (по умолчанию – 0.001).
Вы также можете переключаться между тремя основными режимами вычислений, используя команду Calculation Options (Параметры вычислений) в разделе Calculation (Вычисление) на вкладке Formulas (Формулы). Однако, если необходимо настроить параметры вычислений, все же придется обратиться к вкладке Formulas (Формулы) диалогового окна Excel Options (Параметры Excel).
Проверка данных — это функция в Excel, используемая для контроля того, что пользователь может ввести в ячейку. Например, вы можете использовать проверку данных, чтобы убедиться, что:
- значение является числом от 1 до 6
- дата произойдет в следующие 30 дней
- текстовая запись содержит менее 25 символов
Проверка данных может просто отображать сообщение пользователю с информацией, что разрешено, как показано ниже:
Сообщение отображается автоматически при выборе ячейки
Проверка данных также может остановить неправильный ввод данных пользователем. Например, если код сотрудника не проходит проверку, вы можете увидеть следующее сообщение:
Пример сообщения об ошибке
Кроме того, проверка данных может использоваться для предоставления пользователю определенного выбора в раскрывающемся меню:
Пример раскрывающегося меню проверки данных
Это очень удобно, так как можно дать пользователю именно те значения, которые уже соответствуют требованиям.
Контроль достоверности данных
Проверка данных осуществляется с помощью правил, определенных в пользовательском интерфейсе Excel на вкладке «Данные» на ленте.
Элементы управления проверкой данных на вкладке ДАННЫЕ
Важное ограничение
Важно понимать, что проверку данных можно легко обойти. Если пользователь копирует данные из ячейки без проверки в ячейку с проверкой данных, проверка уничтожается (или заменяется). Проверка данных — это хороший способ помочь пользователям, сообщив им критерии ввода, но он не дает гарантированную защиту от ошибок.
Определение правил проверки данных
Проверка данных определяется в окне с 3 вкладками: Параметры, Сообщение для ввода и Сообщение об ошибке:
Окно проверки данных имеет три основные вкладки
На вкладке Параметры вы можете ввести критерии проверки. Существует ряд встроенных правил проверки с различными параметрами, также можно выбрать «Другой» и использовать собственную формулу для проверки ввода, как показано ниже:
Пример вкладки настроек проверки данных
Вкладка «Сообщение для ввода» определяет сообщение, отображаемое при выборе ячейки с правилами проверки. Оно не является обязательным.
Если сообщение не установлено, оно не отображается, когда пользователь выбирает ячейку с примененной проверкой данных.
Входное сообщение не влияет на то, что пользователь может ввести — оно просто отображает сообщение, чтобы сообщить пользователю, что разрешено или ожидается.
Вкладка настройки сообщения проверки данных
Вкладка «Сообщение об ошибке» определяет, как выполняется проверка. Например, когда вид установлен на «Останов», неверные данные вызывают окно с сообщением, и ввод не разрешен.
Вкладка предупреждения об ошибке проверки данных
Пользователь видит сообщение, подобное этому:
Пример сообщения об ошибке проверки данных
Когда в поле «Вид» установлено значение «Сообщение» или «Предупреждение», изменяется значок, отображаемый с пользовательским сообщением. Пользователь может игнорировать сообщение и вводить значения, которые не проходят проверку. Ниже обобщено поведение каждого вида предупреждения об ошибке.
Не позволяет пользователям вводить недопустимые данные в ячейку. Пользователи могут повторить попытку, но должны ввести значение, которое проходит проверку данных. В окне предупреждения «Останов» есть три опции: «Повторить», «Отмена» и «Справка».
Предупреждает пользователей о том, что данные неверны. Предупреждение ничего не делает, чтобы остановить ввод неверных данных. В окне «Предупреждение» есть три параметра: «Да» (для принятия недействительных данных), «Нет» (для редактирования недействительных данных), «Отмена» (для удаления недействительных данных) и «Справка».
Параметры проверки данных
При создании правила проверки данных доступно восемь параметров:
Любое значение — проверка не выполняется. Примечание: если проверка данных ранее применялась с установленным входным сообщением, сообщение все равно будет отображаться при выборе ячейки, даже если выбрано любое значение.
Целое число — разрешены только целые числа. Как только опция целого числа выбрана, другие опции становятся доступными для дальнейшего ограничения ввода. Например, вам может потребоваться целое число от 1 до 10.
Действительное — работает как опция целого числа, но допускает десятичные значения. Например, если для параметра «Действительное» задано значение от 0 до 3, допустимы все значения, такие как 0,5 и 2,5.
Список — разрешены только значения из предварительно определенного списка. Значения представляются пользователю как выпадающее меню. Допустимые значения могут быть жестко заданы непосредственно на вкладке «Параметры» или указаны в виде диапазона на рабочем листе.
Дата — разрешены только даты. Например, вам может потребоваться дата между 1 января 2018 года и 31 декабря 2021 года или дата после 1 июня 2018 года.
Время — разрешено только время. Например, вы можете указать время между 9:00 и 17:00 или разрешить время только после 12:00.
Длина текста — проверяет ввод на основе количества символов или цифр. Например, вам может потребоваться код из 5 цифр.
Другой — проверяет ввод с использованием пользовательской формулы. Другими словами, вы можете написать собственную формулу для проверки ввода. Пользовательские формулы значительно расширяют возможности проверки данных. Например, вы можете использовать формулу, чтобы обеспечить значение в верхнем регистре, или значение, которое содержит «АБВ».
На вкладке параметров также есть два флажка:
Игнорировать пустые ячейки — говорит Excel не проверять ячейки, которые не содержат значений. На практике этот параметр влияет только на команду «Обвести неверные данные». Когда эта опция включена, пустые ячейки не обведены, даже если они не прошли проверку.
Распространить изменения на другие ячейки с тем же условием — этот параметр обновит проверку, примененную к другим ячейкам, когда она будет соответствовать (оригинальной) проверке редактируемых ячеек.
Простое выпадающее меню
Вы можете предоставить пользователю раскрывающееся меню опций, жестко закодировав значения в поле настроек или выбрав диапазон на листе. Например, чтобы ограничить записи действиями «ПРИНЯТ», «В ОБРАБОТКЕ» или «ОТГРУЖЕН», вы можете ввести эти значения через точку с запятой:
Раскрывающееся меню проверки данных с жестко заданными значениями
При применении к ячейке на рабочем листе раскрывающееся меню работает следующим образом:
Читайте также: Как сделать строку в excel 2003 неподвижной?
Используются жестко заданные значения выпадающего меню проверки данных
Другой способ ввода значений в раскрывающееся меню — использование ссылки на рабочий лист. Например, с размерами (то есть маленький, средний и т.д.) в диапазоне F4:F6. Вы можете указать этот диапазон непосредственно в окне настроек проверки данных:
Значения выпадающего меню проверки данных со ссылкой на диапазон
Обратите внимание, что диапазон вводится как абсолютный адрес, чтобы предотвратить его изменение, поскольку проверка данных применяется к другим ячейкам.
Подсказка. Щелкните значок маленькой стрелки в дальнем правом углу поля «Источник», чтобы сделать выбор непосредственно на рабочем листе, чтобы вам не приходилось вводить диапазон вручную.
Вы также можете использовать именованные диапазоны для указания значений. Например, с именованным диапазоном под названием «размер» для F4:F6, вы можете ввести имя непосредственно в окне, начиная со знака равенства:
Значения выпадающего меню проверки данных с именованным диапазоном
Именованные диапазоны автоматически являются абсолютными, поэтому они не изменятся.
Вы также можете создавать зависимые выпадающие списки с пользовательской формулой.Совет.
Если вы используете таблицу для раскрывающихся значений, Excel будет автоматически расширять или сокращать таблицу при добавлении или удалении значений.
Другими словами, Excel будет автоматически синхронизировать раскрывающийся список со значениями в таблице при изменении, добавлении или удалении значений.
Проверка данных с помощью пользовательской формулы
Формулы проверки данных должны быть логическими формулами, которые возвращают ИСТИНА, если ввод действителен, и ЛОЖЬ, если ввод недействителен. Например, чтобы разрешить ввод любого числа в ячейку A1, вы можете использовать функцию ЕЧИСЛО (ISNUMBER) в формуле, подобной этой:
= ЕЧИСЛО (А1)
Если пользователь вводит значение 10 в A1, ЕЧИСЛО (ISNUMBER) возвращает ИСТИНА, и проверка данных завершается успешно. Если вводится значение типа «яблоко» в A1, ЕЧИСЛО (ISNUMBER) возвращает ЛОЖЬ, и проверка данных завершается неудачно.
Чтобы включить проверку данных с помощью формулы, выберите «Другой» на вкладке «Параметры», затем введите формулу, начиная со знака равенства (=), как обычно.
Формулы устранения неполадок
Excel игнорирует формулы проверки данных, которые возвращают ошибки.
Если формула не работает, и вы не можете понять, почему, настройте фиктивные формулы, чтобы убедиться, что формула работает так, как вы ожидаете.
Фиктивные формулы — это просто формулы проверки данных, введенные непосредственно на листе, чтобы вы могли легко увидеть, что они возвращают. На приведенном ниже экране показан пример:
Проверка достоверности данныхс помощью фиктивных формул
После того, как фиктивная формула заработает так, как вы хотите, просто скопируйте и вставьте ее в область формулы проверки данных.
Примеры формул проверки данных
Возможности для проверки данных пользовательских формул практически не ограничены. Вот несколько примеров для вдохновения:
Чтобы разрешить только 5 символьных значений, начинающихся с «z», вы можете использовать:
= И (ЛЕВСИМВ (А1) = «z»; ДЛСТР (A1) = 5)
Эта формула возвращает ИСТИНА только тогда, когда код длиной 5 цифр и начинается с «z». Два значения в примере выше возвращают ЛОЖЬ с этой формулой.
Чтобы разрешить ввод даты в течение 30 дней с сегодняшнего дня:
= И (А1> СЕГОДНЯ (), А1
Как автоматически выделять диапазоны для выборки ячеек из таблицы?
Задание является следующим. В одном из столбцов в разных ячейках находятся какие-то значения (в данном случае текстовые строки “граница”). Они определяют начало и конец секторов (диапазонов). Эти значения вставлены автоматически и могут появляться в разных ячейках. Их размеры и количество в них ячеек также может быть разным. Например, на рисунке ниже выбран сектор данных (диапазон) номер 2.
Все, что следует сейчас сделать – это создать возможность легкого и быстрого выбора диапазона, который нас интересует (вписывая номер диапазона в одну из ячеек для выбора).
Динамическое определение границ выборки ячеек
Для наглядности приведем решение этой задачи с использованием вспомогательного столбца. В первую ячейку в вспомогательном столбце (A7) вводим формулу:
и копируем ее вниз в оставшиеся ячейки. Везде, где в ячейках соседнего столбца находится значение “граница”, функция возвращает номер строки. В противном случае возвращает пустую строку.
Следующим шагом будет динамическое определение адреса для выборки диапазона данных из исходного списка в соответствии с критерием отбора.
Изменяемое значение критерия для управления выборкой данных из таблицы будет указано в ячейке C1. Там мы указываем порядковый номер диапазона, данные которого нас интересуют в конкретный момент.
Заполнение диапазона
Чтобы заполнить диапазон, следуйте инструкции ниже:
- Введите значение 2 в ячейку B2.
- Выделите ячейку В2, зажмите её нижний правый угол и протяните вниз до ячейки В8.
Результат:
Эта техника протаскивания очень важна, вы будете часто использовать её в Excel. Вот еще один пример:
- Введите значение 2 в ячейку В2 и значение 4 в ячейку B3.
- Выделите ячейки B2 и B3, зажмите нижний правый угол этого диапазона и протяните его вниз.
Excel автоматически заполняет диапазон, основываясь на шаблоне из первых двух значений. Классно, не правда ли? Вот еще один пример:
- Введите дату 13/6/2013 в ячейку В2 и дату 16/6/2013 в ячейку B3 (на рисунке приведены американские аналоги дат).
- Выделите ячейки B2 и B3, зажмите нижний правый угол этого диапазона и протяните его вниз.
Перемещение диапазона
Чтобы переместить диапазон, выполните следующие действия:
- Выделите диапазон и зажмите его границу.
- Перетащите диапазон на новое место.
Копировать/вставить диапазон
Чтобы скопировать и вставить диапазон, сделайте следующее:
- Выделите диапазон, кликните по нему правой кнопкой мыши и нажмите Copy (Копировать) или сочетание клавиш Ctrl+C.
- Выделите ячейку, где вы хотите разместить первую ячейку скопированного диапазона, кликните правой кнопкой мыши и выберите команду Paste (Вставить) в разделе Paste Options (Параметры вставки) или нажмите сочетание клавиш Ctrl+V.
Примеры использования функции АГРЕГАТ в Excel
Пример 1. В классе провели контрольную по математике. Необходимо определить среднюю оценку для учеников, которые присутствовали на контрольной. Напротив некоторых фамилий оценка не указана по причине неn допуска к написанию или отсутствия.
Вид таблицы с данными:
Для расчета используем следующую формулу:
=АГРЕГАТ(1;3;B3:B13)
Описание параметров:
- 1 – число, соответствующее функции СРЗНАЧ;
- 3 – число, указывающее на способ расчета (не учитывать скрытые строки и коды ошибок);
- B3:B13 – диапазон ячеек с данными для определения среднего значения.
Полученный результат:
В результате формула вернула правильное число среднего значения в обход значениям с ошибками #Н/Д.
Панель формул
Существует ещё третий способ запустить функцию «СРЗНАЧ». Для этого, переходим во вкладку «Формулы». Выделяем ячейку, в которой будет выводиться результат. После этого, в группе инструментов «Библиотека функций» на ленте жмем на кнопку «Другие функции». Появляется список, в котором нужно последовательно перейти по пунктам «Статистические» и «СРЗНАЧ».
Затем, запускается точно такое же окно аргументов функции, как и при использовании Мастера функций, работу в котором мы подробно описали выше.
Дальнейшие действия точно такие же.
Ручной ввод функции
Но, не забывайте, что всегда при желании можно ввести функцию «СРЗНАЧ» вручную. Она будет иметь следующий шаблон: «=СРЗНАЧ(адрес_диапазона_ячеек(число); адрес_диапазона_ячеек(число)).
Конечно, этот способ не такой удобный, как предыдущие, и требует держать в голове пользователя определенные формулы, но он более гибкий.
Расчет среднего значения
Когда среднее значение нужно не только определить, но и зафиксировать в отдельной выбранной для этого ячейке, можно использовать несколько методов. Ниже мы подробно рассмотрим каждый из них.
Использование арифметического выражения
Как мы знаем, среднее значение равняется сумме чисел, разделенных на их количество. Данную формулу можно использовать и в Экселе.
- Встаем в нужную ячейку, ставим знак “равно” и пишем арифметическое выражение по следующем принципу:
=(Число1+Число2+Число3...)/Количество_слагаемых
.
Примечание: в качестве числа может быть указано как конкретное числовое значение, так и ссылка на ячейку. В нашем случае, давайте попробуем посчитать среднее значение чисел в ячейках B2,C2,D2 и E2.
Конечный вид формулы следующий:=(B2+E2+D2+E2)/4
. - Когда все готово, жмем Enter, чтобы получить результат.
Данный метод, безусловно хорош, но удобство его использования существенно ограничено объемом обрабатываемых данных, ведь на перечисление всех чисел или координат ячеек в большом массиве уйдет немало времени, к тому же, в этом случае не исключена вероятность допущения ошибки.
Использование функции СРЗНАЧ
С данной функцией мы уже успели познакомиться, когда перешли в ячейку с результатом расчета среднего значения. Теперь давайте научимся полноценно ею пользоваться.
- Встаем в ячейку, куда планируем выводить результат. Кликаем по значку “Вставить функци” (fx) слева от строки формул.
- В открывшемся окне Мастера функций выбираем категорию “Статистические”, в предлагаемом перечне кликаем по строке “СРЗНАЧ”, после чего нажимаем OK.
- На экране отобразится окно с аргументами функции (их максимальное количество – 255). Указываем в качестве значения аргумента “Число1” координаты нужного диапазона. Сделать это можно вручную, напечатав с клавиатуры адреса ячеек. Либо можно сначала кликнуть внутри поля для ввода информации и затем с помощью зажатой левой кнопки мыши выделить требуемый диапазон в таблице. При необходимости (если нужно отметить ячейки и диапазоны ячеек в другом месте таблицы) переходим к заполнению аргумента “Число2” и т.д. По готовности щелкаем OK.
- Получаем результат в выбранной ячейке.
- Среднее значение не всегда может быть “красивым” за счет большого количества знаков после запятой. Если нам такая детализация не нужна, ее всегда можно настроить. Для этого правой кнопкой мыши щелкаем по результирующей ячейке. В открывшемся контекстном меню выбираем пункт “Формат ячеек”.
- Находясь во вкладке “Число” выбираем формат “Числовой” и с правой стороны окна указываем количество десятичных знаков после запятой. В большинстве случаев, двух цифр более, чем достаточно. Также при работе с большими числами можно поставить галочку “Разделитель групп разрядов”. После внесение изменений жмем кнопку OK.
- Все готово. Теперь результат выглядит намного привлекательнее.
Присвоение диапазона ячеек переменной
Чтобы переменной присвоить диапазон ячеек, она должна быть объявлена как Variant, Object или Range:
Dim myRange1 As Variant Dim myRange2 As Object Dim myRange3 As Range |
Чтобы было понятнее, для чего переменная создана, объявляйте ее как Range.
Присваивается переменной диапазон ячеек с помощью оператора Set:
Set myRange1 = Range(“B5:E16”) Set myRange2 = Range(Cells(3, 4), Cells(26, 18)) Set myRange3 = Selection |
В выражении Range(Cells(3, 4), Cells(26, 18)) вместо чисел можно использовать переменные.
Для присвоения диапазона ячеек переменной можно использовать встроенное диалоговое окно Application.InputBox, которое позволяет выбрать диапазон на рабочем листе для дальнейшей работы с ним.
Адресация ячеек в диапазоне
К ячейкам присвоенного диапазона можно обращаться по их индексам, а также по индексам строк и столбцов, на пересечении которых они находятся.
Индексация ячеек в присвоенном диапазоне осуществляется слева направо и сверху вниз, например, для диапазона размерностью 5х5:
1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 |
Индексация строк и столбцов начинается с левой верхней ячейки. В диапазоне этого примера содержится 5 строк и 5 столбцов. На пересечении 2 строки и 4 столбца находится ячейка с индексом 9. Обратиться к ней можно так:
‘обращение по индексам строки и столбца myRange.Cells(2, 4) ‘обращение по индексу ячейки myRange.Cells(9) |
Обращаться в переменной диапазона можно не только к отдельным ячейкам, но и к части диапазона (поддиапазону), присвоенного переменной, например,
обращение к первой строке присвоенного диапазона размерностью 5х5:
myRange.Range(“A1:E1”) ‘или myRange.Range(Cells(1, 1), Cells(1, 5)) |
и обращение к первому столбцу присвоенного диапазона размерностью 5х5:
myRange.Range(“A1:A5”) ‘или myRange.Range(Cells(1, 1), Cells(5, 1)) |
Заключение
Таким образом, в Экселе существует немало способов для нахождения среднего значения как по отдельным строкам и столбцам, так и по целым диапазонам ячеек, которые, к тому же, могут быть разбросаны по таблице. А использование того или иного метода определяется удобством и целесообразностью его использования в каждом конкретном случае.
Источники
- http://excel-training.ru/tsiklicheskie-ssyilki-v-excel/
- https://office-guru.ru/excel/kak-upravljat-rezhimami-avtomaticheskih-i-mnogopotochnyh-vychislenii-v-excel-2013-57.html
- https://iiorao.ru/excel/kak-sdelat-proverku-dannyh-v-excel.html
- https://exceltable.com/formuly/dinamicheskoe-vydelenie-diapazona
- https://office-guru.ru/excel/diapazon-v-excel-370.html
- https://exceltable.com/funkcii-excel/funkciya-agregat-propusk-oshibok
- https://lumpics.ru/how-calculate-average-value-in-excel/
- https://MicroExcel.ru/srednee-znachenie/
- https://vremya-ne-zhdet.ru/vba-excel/peremennaya-diapazona-as-range/
Нельзя внутри функции пытаться вычислять значение ячейки на основе её же самой.
Почитайте на досуге:
Что такое функция пользователя(UDF)?
Добавьте параметр в функцию и сделайте её по правилам — функция на то и функция, чтобы возвращать значение. А у Вас она пытается в активную ячейку записать значение. Да и в таких случаях лучше файл с функцией выкладывать, а не тупо код. У Вас слишком много других ячеек используется — тестировать не на чем.
Что-то вроде этого. Не пытался особо оптимизировать и вникать(тестировать все равно не на чем) — просто чуть изменил под «рабочий» вариант и убрал GoTo(они у Вас явно излишни были). Да и Вам так будет удобнее понять.
Код |
---|
Function Tonnaj() Dim rMeCell As Range Set rMeCell = Application.Caller 'назначаем переменной ячейку с функцией If rMeCell.Offset(0, -4) = "-" Then Tonnaj = "-" Exit Function End If a5 = Mid(rMeCell.Offset(0, -5), 9, Len(rMeCell.Offset(0, -5))) b5 = rMeCell.Offset(0, -3) c5 = rMeCell.Offset(0, -2) Set b6 = Sheets(3).Columns("A:A").Find(What:=a5) If b6 Is Nothing Then e5 = "" Else c6 = b6.Address End If For j5 = 1 To 200 d5 = Sheets(3).Range(c6).Offset(0, 2) If b5 < d5 Then Tonnaj = Sheets(3).Range(c6).Offset(0, 3) Exit Function End If If Sheets(3).Range(c6).Offset(1, 0) = Sheets(3).Range(c6) Then f5 = Range(c6).Row f6 = Range(c6).Column c6 = Cells(f5 + 1, f6).Address Else: Tonnaj = "-" Exit Function End If Next j5 End Function |
Как удалить или разрешить циклическую ссылку
Смотрите такжеRun-time error ’28’: Ты про отключение ячейками. Буду пока задачу. числу либо к не делал просто« самой ячейки (в удобнее проверить формулу, в одной ячейки область на листе?
Итеративное вычисление может иметь сами задать предельное любой открытой книге.или ячейке B1, котораяВы ввели формулу, ноOut of stack событий? пробовать так. Но,Есть три столбца: тексту, но для открыл файл приВычислить формулу» которой пишем формулу) когда визуально видны от другой.Чтобы узнать, в каком
три исход: число итераций иПользователь удаляет все циклическиеЗависимые ячейки снова ссылается на она не работает. space
_Boroda_ если вдруг есть Сумма, скидка и
-
того чтобы показать, закритии сочет сохранить- считает по – получится циклическая все ячейки, указанныеНужно отметить, что второй именно диапазоне находитсяРешение сходится, что означает относительную погрешность. ссылки во всехна вкладке ячейку А1. Если Вместо этого появляетсяИ при нажатии
: Ага какие варианты попроще сумма со скидкой. нужен файл в файл… формуле, но выдает ссылка. в формуле. способ более визуально такая формула, прежде получение надежного конечногоЕсли вы работаете в
-
открытых книгах, послеФормулы это сбивает с сообщение о «циклической на кнопку «Debug»Попробуй в А2 — буду оченьСумма со скидкой формате Exsel, ани где не
-
результат, постепенно считаяЦиклическая ссылка в ExcelКнопка нагляден, но в всего, жмем на результата. Это самый Excel 2010 или более чего создает новую
-
. толку вас, представьте, ссылке». Миллионы людей попадаю на страницу что-то ввести. Поставь признателен. равняется Сумма минус
не картинка. Нужно могу найти ответа
-
каждое действие, каждый– это, когда« то же время кнопку в виде желательный исход. поздней версии, последовательно
циклическую ссылку.Когда Excel впервые находит что происходит с сталкиваются с этой с кодом, где только стопор на
-
Спасибо. Скидка. видеть реальный формат спасибо_) этап вычисления. в формуле указанВлияющие ячейки» не всегда даёт белого крестика вРешение расходится, т. е. выберите элементыПользователь закрывает все книги, циклическую ссылку, отображается Excel. проблемой. Это происходит, часть кода желтым
Предупреждение о циклической ссылке
первой строке иglingСкидка равняется Сумма данных и тогдаglingУ нас такая адрес ячейки, в
- показывает стрелками, четкую картину цикличности, красном квадрате в при каждой последующейФайл создает новую и предупреждающее сообщение. НажмитеЕсли найти ошибку не когда формула пытается выделена. через F8 погоняй.: Здравствуйте. Но проще минус Сумма со определить к чему: Ответ в файле. формула. которой записана эта из каких ячеек в отличие от диалоговом окне предупреждения, итерации разность между > вводит в нее кнопку
удается, на вкладке посчитать собственную ячейкуЭто я что-тоAlexM некуда. Имхо. скидкой.
-
приводить удобнее к Вкладка Формулы—Проверка наличияМы её проверяем.
формула, т.е. ячейка цифры считаются формулой первого варианта, особенно тем самым закрывая текущим и предыдущимПараметры формулу с циклическойОКФормулы при отключенной функции не та сделал???
-
: Тут без отключенияkontrabasssИ т.д.
-
тексту или к ошибок—Источник ошибки. Должна Выделяем ячейку с ссылается сама на в выделенной ячейки.
-
в сложных формулах. его. результатами увеличивается. > ссылкой.
-
или закройте окнощелкните стрелку рядом
-
итеративных вычислений. ВотRAN не зацикливается. Почему???: Ну, проще дляПолучились цикличесские ссылки
Итеративные вычисления
числу. Но это быть прописана ячейка этой формулой, нажимаем себя.Здесь, в ячейке Е52Как видим, отыскать циклическуюПереходим во вкладкуРешение колеблется между двумяФормулыПользователь открывает книгу, содержащую сообщения. с кнопкой как это выглядит:: Как вариант -
RAN тех, кто хорошо — поставил галочку в новой теме, с циклической ссылкой. кнопку «Вычислить формулу».Так делать нельзя, стоит формула. Стрелками ссылку в Эксель«Формулы» значениями, например, после. Если вы работаете циклическую ссылку.Если вы закроете сообщение,Проверка ошибокФормула =D1+D2+D3 не работает, плохо читаете.: Я, конечно, видел, знает Excel. Я напротив Включить интеративные так как этот Исправьте ошибку, чтобы Появилось такое диалоговое это ошибка, п.ч. показаны ячейки, которые довольно просто, особенно. На ленте в первой итерации получается в Excel для
-
При отсутствии других открытых то Excel отобразит, выберите пункт поскольку она расположенаkontrabasss что уйдет, но вот только на вычисления. вопрос не имеет формула не зацикливалась, окно. при вычислении по посчитались, чтобы получился если знать алгоритм блоке инструментов значение 1, после Mac, откройте меню книг пользователь открывает
в ячейке либоЦиклические ссылки в ячейке D3 : RAN, спасибо. Помогло. скачал и запустил. уровне пользователя. МожетНапример если я отношения к циклической
-
т.е. в расчетеВ нем подчеркнут адрес такой формуле будут результат в ячейке поиска. Можно воспользоваться«Зависимости формул» второй — значение 10,Excel
-
книгу и создает нулевое значение, либои щелкните первую и ссылается на Пойду учиться читать(останов не ставил). подскажете, как создается ввожу данные, то ссылке.
-
формулы не должна первой ячейки, указанной происходить бесконечные вычисления. Е52. одним из двухимеется кнопка после третьей — снова, выберите пункт в ней циклическую последнее вычисленное значение. ячейку в подменю. саму себя. Чтобы
хорошо.Не ушло. Не
-
такой алгоритм??? все считается. Но,Сегодня впервые столкнулся с участвовать результирующая ячейка.
-
в формуле. Нажимаем Тогда выходит окноКнопка «Зависимые ячейки» способов нахождения подобных«Проверка наличия ошибок»
-
1 и т. д.Настройки ссылку. В некоторых случаяхПроверьте формулу в ячейке. устранить проблему, выAlexM
успело. Excel вылетел.
support.office.com
Поиск циклической ссылки в Excel
AlexM при этом стираются такой проблемой как Сохранение файла может кнопку «Вычислить». с предупреждением о- показывает стрелками, зависимостей. Несколько сложнее. Кликаем на пиктограммуК началу страницыи щелкните элементИногда вам могут потребоваться формула может успешно Если вам не можете переместить формулу: Тогда такAlexM: формулы при вводе циклические ссылки. Документ требоваться если вВместо адреса ячейки D52 циклической ссылке. в каких ячейках определить, нужна ли в виде перевернутого
Циклические ссылки представляют собойВычисление
Выявление циклических связей
циклические ссылки, потому работать до тех удается определить, является в другую ячейку200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub Worksheet_Calculate(): А на моем200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub Worksheet_Change(ByVal Target данных. Т.е. если Excel открывается без формулах файла есть (были подчеркнуты) теперьНам нужно найти эту
Способ 1: кнопка на ленте
- (в каких формулах) данная формула в треугольника рядом с формулу, в которой. что они заставляют пор, пока она ли эта ячейка (в строке формулApplication.EnableEvents = False
- старом ПК зацикливание As Range) я захочу что-то проблем, но в изменяющиеся данные, например стоит цифра из формулу, где есть используется цифра из действительно или это этой кнопкой. В одна ячейка черезЕсли у вас Excel функции выполнять итерации, не попытается вычислить причиной циклической ссылки, нажмите сочетание клавишRange(«C2») = Range(«A2») было таким незаметным.If Target.Address(0, 0) после изменить, то одной из книг функция ТДАТА() или этой ячейки. Теперь циклическая ссылка, и
- этой ячейки. просто ошибка, а появившемся меню выбираем последовательность связей с
- 2007, нажмите т. е. повторять себя. Например, формула, выберите в подменюCTRL+X — Range(«B2″)200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub Worksheet_Change(ByVal Target = «A2» Then
Способ 2: стрелка трассировки
уже не получится. существует циклическая ссылка. СЕГОДНЯ(). При открытии
- подчеркнут адрес ячейки исправить её.Здесь, в примере, ячейка также исправить ошибочную пункт другими ячейками, в
- кнопку Microsoft Office вычисления до тех использующая функцию «ЕСЛИ»Циклические ссылки
, чтобы вырезать формулу,Application.EnableEvents = True As Range) Range(«C2») = Target.ValueКак сделать такую Лист серого цвета, файла эти значения Е52. Нажимаем кнопкуКак найти циклическую ссылку
D49 установлена только ссылку.«Циклические ссылки» конечном итоге ссылается, щелкните пор, пока не может работать доследующую ячейку. выберите другую ячейкуEnd SubApplication.EnableEvents = False — Range(«B2») формулу, чтобы расчет без ячеек. Кто
меняются и формулы
lumpics.ru
Как проверить формулы в Excel.
«Вычислить». Получилось так. в Excel. в одной формуле,Автор: Максим Тютюшев. После перехода по сама на себя.Параметры Excel будет выполнено заданное тех пор, покаПродолжайте находить и исправлять и нажмите сочетаниеPrivate Sub Worksheet_Change(ByValIf Target.Address(0, 0)If Target.Address(0, 0) мог производиться из сталкивался — тот
пересчитываются, от сюдаЕсли нажмем ещё разНажимаем в диалоговом расположенной в ячейкеРассмотрим,
этой надписи в В некоторых случаяхи выберите категорию числовое условие. Это
пользователь не введет циклические ссылки в клавиш Target As Range) = «A2» Then = «B2» Then полученных любых двух знает что это возникает и вопрос кнопку «Вычислить», то окне «Предупреждение о
D52.как проверить формулу в виде меню показываются пользователи осознано применяютФормулы может привести к аргумент (данные, необходимые книге, повторяя действияCTRL+VApplication.EnableEvents = False Range(«C2») = Target.Value Range(«C2») = Range(«A2») значений и потом
такое, остальным объяснять о сохранении. Для первые две цифры циклической ссылке» кнопкуА здесь, от цифры Excel, как найти
все координаты ссылок подобный инструмент для. снижению производительности компьютера, для нормальной работы 1–3, пока из).If Target.Address(0, 0) — Range(«B2») — Target.Value эти значения можно без толку.
того чтобы понять, сосчитаются по формуле. «Отмена». Нажимаем на в ячейке D52
циклическую ссылку циклического характера в вычислений. Например, такойВ разделе поэтому по умолчанию формулы), который заставит строки состояния неДругая распространенная ошибка связана
= «B2» Then
If Target.Address(0, 0)If Target.Address(0, 0) было бы потомПопробовал поступить, как что происходит у У нас, в
стрелку, расположенную рядом зависит результат двух, т. д. Когда данной книге. При подход может помочьПараметры вычислений итеративные вычисления в формулу попытаться вычислить
исчезнет сообщение «Циклические с использованием функций, Range(«C2») = Range(«A2») = «B2» Then = «C2» Then корректировать. говорится в Помощи, Вас в файле
примере, 6-2=4. Получилось с кнопкой «Проверка ячеек. В двух формулы большие, трудно клике на координаты при моделировании. Но,установите флажок Excel выключены. саму себя. Если ссылки». которые включают ссылки — Target.Value
Range(«C2») = Range(«A2») Range(«B2») = Range(«A2»)
Заранее всем спасибо!!! но ничего не нудно увидеть этот так. наличия ошибок» (на формулах, в ячейках понять, на каком конкретной ячейки, она в большинстве случаев,Включить итеративные вычисленияЕсли вы не знакомы это произойдет, ExcelСоветы на самих себя,
If Target.Address(0, 0) — Target.Value — Target.Value
AlexM добился. Знающие люди, файл, а неИ так до конца рисунке обведена зеленым D53 и Е52, этапе вычисления сделали становится активной на данная ситуация –. На компьютере Mac с итеративными вычислениями, оставит в ячейке
например ячейка F3
= «C2» ThenIf Target.Address(0, 0)End Sub: Знаю как с помогите пожалуйста. картинку которую Вы формулы. цветом), наводим мышку указана ячейка D52. ошибку. Но в листе. это просто ошибка щелкните вероятно, вы не последнее успешно вычисленноеВ строке состояния в может содержать формулу Range(«B2») = Range(«A2») = «C2» ThenWorksheet_Change макросомBrownie прикрепили.О других, часто на слова «ЦиклическиеКнопка Excel есть функция,
Путем изучения результата устанавливаем в формуле, которуюИспользовать итеративное вычисление захотите оставлять активных значение. левом нижнем углу =СУММ(A3:F3). Пример: — Target.Value Range(«B2») = Range(«A2»)
это событие (изменениеkontrabasss: Привет! Просто какой-тоart22 встречающихся ошибках в ссылки» и рядом«
которая поможет это зависимость и устраняем юзер допустил по. циклических ссылок. ЕслиЕсли есть подозрение, что
excel-office.ru
Предупреждение о циклической ссылке как убрать? (Формулы/Formulas)
отображается сообщениеВы также можете попробоватьApplication.EnableEvents = True — Target.Value на листе), при: AlexM, спасибо. ячейке в формуле
: Спасибо огромное!) Оказывается формулах, что они появляется адрес ячейки,Убрать стрелки» сделать. «Как написать причину цикличности, если невнимательности или по
В поле же они вам циклическая ссылка содержится
Циклические ссылки один из описанныхEnd SubApplication.EnableEvents = True котором автоматически запускаетсяВсе верно и ссылка на саму на 2 -3 означают и как где находится этаубирает стрелки. формулу в Excel» она вызвана ошибкой. другим причинами. ВПредельное число итераций нужны, необходимо решить, в ячейке, котораяи адрес ячейки ниже способов.kontrabasssEnd Sub макрос. все работает. себя. Открой Вид страницах я сохранял их справить, читайте циклическая ссылка.Чтобы смотрите, какими способами
После выполнения необходимых действий связи с этим,введите количество итераций сколько раз может не возвращает значение с одной из
Если вы только что: AlexM, спасибо. ОпятьkontrabasssTarget.Address(0, 0)Осталось только узнать — Панели инструментов какие то цифры… в статье «ОшибкиВ нашем случае, ввместо чисел, в ячейках и какие формулы снова переходим по
чтобы удалить ошибку, для выполнения при повторяться вычисление формулы. 0, попробуйте такое них. ввели формулу, сначала научным тыком, почти: Большое всем спасибо.это адрес ячейки что же это — Зависимости. Включай/выключай из-за них было… в формулах Excel». ячейке Е43 стоит Excel были написаны можно написать. кнопке проверки ошибок следует сразу найти обработке формул. Чем Если включить итеративные решение:
excelworld.ru
Excel. Циклические ссылки.
При наличии циклических ссылок проверьте ячейку, в не осознавая, что Методом научного тыка где событие произошло такое — Макросы… кнопки Влияющие ячейки,Еще через программуВ Excel можно такая формула. формулыЕсли формула составлена циклических ссылок. На
саму циклическую ссылку. больше предельное число вычисления, не изменивЩелкните формулу в строке на других листах,
которой она расположена. я делаю воткнул я, вроде, разобрался,Target.ValueAlexM Зависящие ячейки и сохраняет цифры в проводить подсчет, анализЯчейка ссылается сама на, нажимаем с ошибкой, то этот раз соответствующий Посмотрим, как это
итераций, тем больше предельное число итераций формулы и нажмите кроме активного, в Проверьте, не ссылается это в свою
Циклические ссылки и нестирающиеся формулы (Формулы/Formulas)
как это сделать.это измененное значение.: Кликните по ярлычку походи по ячейкам ексел, и выхрдят
данных, составляя формулы себя. Нашли ошибкукнопку «Показать формулы»
в ячейке с пункт меню должен делается.
времени потребуется для и относительную погрешность, клавишу ВВОД.
строке состояния выводится
ли формула на таблицу. Но! Возникла следующаяДалее делаем проверку
листа правой кнопкой. таблицы. Стрелки помогут такие предупреждения… в с определенными условиями. – в ячейке(на рисунке обведена формулой будет стоять быть вообще неСкачать последнюю версию
пересчета листа. приложение Excel прекратитВнимание! сообщение «Циклические ссылки» собственную ячейку. Например,Мне это нужно проблема. Если я (if) адреса ячейки,
В контекстном меню
найти циклическую ссылку. настройках я отключал Смотрите статью «Функция
Е43 стоит ссылка красным цветом).
зеленый треугольник. активен.
ExcelВ поле вычисление после 100
Во многих случаях без адресов ячеек. ячейка A3 может для расчета сторон, в ячейке A2
которую изменили. По выбрать «Исходный текст» Удачи.
их но все «СЧЁТЕСЛИ» в Excel». на ячейку Е43Получилось так.Есть несколько способовСуществует и другой способЕсли в книге присутствуетОтносительная погрешность итераций либо после при создании дополнительныхВы можете перемещаться по содержать формулу =(A1+A2)/A3. высот, углов геометрических
вбиваю все руками,
результату проверки выбираемОткроется редактор VBA.Не нажимать
равно эти ошибкиart22 (саму на себя).Чтобыпроверить поэтапный расчет формул определения подобных нежелательных циклическая ссылка, товведите наименьшее значение,
того, как изменение формул с циклическими ячейкам в циклической Такие формулы, как
всех значений в ссылками предупреждающее сообщение ссылке с помощью =A1+1 (в ячейкеТам много используется
фигур. ))) то все просчитывается действие, что из В модуле листа
: Создай новую книгу, существуют можно как: когда открываю файл Исправили ошибку так
убрать формулы и показать в Excel зависимостей. уже при запуске
до достижения которого
нормально. Но если чего вычитаем и увидите макрос.
скопируй туда свои то сделать так
с данными пишет – изменили ссылку результат в ячейках.В диалоговом окне, сообщающем файла программа в следует продолжать итерации.
циклической ссылке с в приложении Excel двойных щелчков по A1) также приводят
тригонометрических формул Excel. ячейка А2 рассчитывается куда заносим.kontrabasss
данные, циклическую ссылку чтобы было все
«Предупреждение о циклической в формуле с ExcelИтак, заходим на о наличии циклических
диалоговом окне предупредит Это наименьшее приращение каждой итерацией составит
больше не отображается. стрелке трассировки, которая к ошибкам циклическойНапример можно построить автоматически, то остальные
_Boroda_: Круто. Я не
— не копируй, равно число или ссылке»… как его ячейки Е43 на, снова нажимаем на закладку «Формулы» в
ссылок, жмем на
об этом факте. в любом вычисляемом меньше 0,001 (в Ниже перечислены некоторые,
указывает на ячейки, ссылки. треугольник по трем столбцы не меняются...
: Алексей, так ты очень силен в все должно получиться... текст в ячейке...
убрать?? надоел уже
ячейку D43. Получилось
кнопку «Показать формулы». раздел «Зависимости формул». кнопку Так что с значении. Чем меньше зависимости от того, но не все, влияющие на значениеПроверьте наличие непрямых ссылок. сторонам, а можноkontrabasss в бесконечный цикл этом, но получилосьkontrabasss
gling каждый раз выходит! так.Если пишем много
Сначала выделяем ячейку,
«OK» определением самого наличия
число, тем точнее какое из этих ситуации, в которых в текущей ячейке. Они возникают, когда по двум и
: А еще стало провалишься
просто скопировать и: Здравствуйте. Все никак: Можно при расчете
И при закритиВсе исправили, все считает разных формул, то затем нажимаем кнопку
. такой формулы проблем результат и тем
условий будет выполнено
предупреждение появится. Чтобы отобразить стрелку
формула, расположенная в
углу между ними.
вылетать окно сAlexM
вставить в другом
не могу решить, формулы приводить значение документа пишет сохранить правильно.
можем ошибочно в соответствующей функции. ПриПоявляется стрелка трассировки, которая не возникнет. Как
больше времени потребуется
раньше). Тем не
Пользователь создает первый экземпляр трассировки, нажмите кнопку ячейке А1, используетМожет подскажете, какая надписью:: Не получается провалиться. листе с другими
казалось бы, простую ячейки либо к файл? я ничегоКнопка
формулу поставить адрес работе с формулами,
указывает зависимости данных же найти проблемную Excel для вычислений. менее, вы можете циклической ссылки в
Влияющие ячейки другую формулу в
excelworld.ru
функция у Range?
У меня есть таблица следующим образом. Это указывает на связи (или ребра) между значениями в столбце Name
.
+-------+-------------------+
| Name | from |
+-------+-------------------+
| G | X; Y; HG; WP |
| X | U |
| Y | |
| U | V |
| V | |
| K | M; N |
| M | |
| N | |
| G1 | G |
| G2 | G1 |
| G3 | G2 |
| G4a | G3 |
| J | G4a |
| G4b | G3 |
| G5b | G4b |
| H | G5b |
| R | H; J |
| R1 | R |
| R2 | R1 |
| O | R2 |
| O1 | O |
| O2 | O1 |
| O3 | O2 |
| F | H; K; TR |
| P | G; Z |
| Z | |
| HG | VB; NH |
| WP | |
| TR | Z |
| VB | ICH; OL; NZ; LO |
| NH | |
| ICH | NZ |
| NZ | |
| LO | |
| OL | TZ; HG |
| TZ | |
| BN | WD; PO |
| WD | RZ; UX |
| PO | QA; IU; BV; MM; BN|
| RZ | |
| UX | |
| IU | |
| QA | |
| BV | |
| MM | |
+-------+-------------------+
Я хочу посмотреть, существуют ли значения в столбце Name
как предшественники, если мы последовательно ищем значения в столбце from
. Другими словами, я хочу увидеть, есть ли какие-либо циклические ссылки.
Как это сделать с VBA
кодом в Excel?
В этом примере HG, VB, OL, BN, PO
имеют циклические ссылки. Я хочу выделить только те ячейки в столбце «Имя».
Один из способов — найти все предшественники для каждой строки в отдельном столбце следующим образом.
+-------+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+
| GName | from | predecessors |
+-------+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+
| G | X; Y; HG; WP | X; U; V; Y; HG; VB; NH; ICH; NZ; LO; OL; TZ; WP |
| X | U | U; V |
| Y | | |
| U | V | V |
| V | | |
| K | M; N | M; N |
| M | | |
| N | | |
| G1 | G | G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ |
| G2 | G1 | G1; G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ |
| G3 | G2 | G2; G1; G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ |
| G4a | G3 | G3; G2; G1; G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ |
| J | G4a | G4a; G3; G2; G1; G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ |
| G4b | G3 | G3; G2; G1; G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ |
| G5b | G4b | G4b; G3; G2; G1; G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ |
| H | G5b | G5b; G4b; G3; G2; G1; G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ |
| R | H; J | J; G4a; G3; G2; G1; G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ; H; G5b; G4b; G3; G2; G1; G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ |
| R1 | R | R; J; H; G4a; G5b; G3; G4b; G2; G1; G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ |
| R2 | R1 | R1; R; J; H; G4a; G5b; G3; G4b; G2; G1; G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ |
| O | R2 | R2; R1; R; J; H; G4a; G5b; G3; G4b; G2; G1; G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ |
| O1 | O | O; R2; R1; R; J; H; G4a; G5b; G3; G4b; G2; G1; G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ |
| O2 | O1 | O1; O; R2; R1; R; J; H; G4a; G5b; G3; G4b; G2; G1; G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ |
| O3 | O2 | O2; O1; O; R2; R1; R; J; H; G4a; G5b; G3; G4b; G2; G1; G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ |
| F | H; KTR | K; M; N; H; G5b; G4b; G3; G2; G1; G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ; TR; Z |
| P | G; Z | G; X; Y; HG; WP; U; VB; NH; V; ICH; NZ; LO; OL; TZ; Z |
| Z | | |
| HG | VB; NH | VB; ICH; NZ; LO; OL; HG; TZ; NH; NH |
| WP | | |
| TR | Z | Z |
| VB | ICH; OL; NZ; LO | ICH; NZ; NZ; LO; OL; HG; TZ; VB; NH; ICH; NZ; LO |
| NH | | |
| ICH | NZ | NZ |
| NZ | | |
| LO | | |
| OL | TZ; HG | HG; VB; NH; ICH; NZ; LO; OL; TZ; TZ |
| TZ | | |
| BN | WD; PO | WD; RZ; UX; PO; BN; IU; QA; BV; MM; WD; RZ; UX |
| WD | RZ; UX | RZ; UX |
| PO | QA; IU; BV; MM; BN | BN; WD; PO; RZ; UX; IU; QA; BV; MM; IU; QA; BV; MM |
| RZ | | |
| UX | | |
| IU | | |
| QA | | |
| BV | | |
| MM | | |
+-------+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+
Теперь поиск значений в столбце Name
в соответствующей ячейке в столбце predecessors
даст желаемый результат.
Как этого добиться, используя VBA
код в Excel?
РЕДАКТИРОВАТЬ . Как я понимаю, это проблема сети. Вот схема сети для большей наглядности.
EDIT2 . Вот моя попытка (здесь VBA noob) в направлении, предложенном @GSerg . Застрял в выборочных местах предшественников. Ошибка Argument not optional
.
Public Function NetworkCyclicityCheck(node As String, col As Range) As String
Dim dicP As Object: Set dicP = CreateObject("Scripting.Dictionary")
If Trim(node) <> "" Then
For Each x In Split(cl.Value2, ";")
Key = Trim(x)
With Range
pcell = .Find(What:=Key, LookAt:=xlWhole, MatchCase:=False)
dicP(pcell) = dicP(pcell) & "," & cl.Address(0, 0)
Next x
End If
Set NetworkCyclicityCheck = dicP
Set dicP = Nothing
End Function
2 ответа
Лучший ответ
Некоторым это может показаться странным, но этот вопрос действительно заинтриговал меня, учитывая, что я никогда не сталкивался с ситуацией, когда мне нужно было писать рекурсивный код раньше.
Не уверен, насколько он эффективен, но в моем ограниченном тестировании он работает мгновенно. Вставьте это в новый модуль, и он должен работать просто отлично.
Option Explicit
Private DestinationByLocation As Object
Sub Test()
HighlightTheCycles Sheets("Sheet1").Range("A2:B46"), , True, True
End Sub
Public Sub HighlightTheCycles(ByVal TableRange As Range, Optional ClearExistingFill As Boolean = True, Optional OutputTheLoopPath As Boolean = False, Optional AlertIfNoCycles As Boolean = False)
Dim InputData As Variant, OutputRange As Range
Dim x As Long, y As Long, Temp As Variant
Dim LoopLocations As Object
Set DestinationByLocation = CreateObject("Scripting.Dictionary")
Set LoopLocations = CreateObject("Scripting.Dictionary")
DestinationByLocation.CompareMode = 1
LoopLocations.CompareMode = 1
'Set fill to 'no-fill'
If ClearExistingFill Then
If OutputTheLoopPath Then
TableRange.Resize(TableRange.Rows.Count, 3).Interior.Pattern = xlNone
Else
TableRange.Interior.Pattern = xlNone
End If
End If
'Establish all possible destinations
InputData = TableRange.Value
For x = 1 To UBound(InputData, 1)
If Len(InputData(x, 2)) > 0 Then
Temp = Split(InputData(x, 2), ";")
For y = 0 To UBound(Temp, 1)
Temp(y) = Trim(Temp(y))
If DestinationByLocation.Exists(Temp(y)) Then
DestinationByLocation(Temp(y)) = DestinationByLocation(Temp(y)) & ";" & InputData(x, 1)
Else
DestinationByLocation.Add Temp(y), InputData(x, 1)
End If
Next y
End If
Next x
'Look for loops
Dim TempPath As Variant
Temp = DestinationByLocation.Keys
For x = 1 To UBound(Temp, 1)
TempPath = TakeATrip(Temp(x))
If Right(TempPath, 3) = ";;;" Then
TempPath = Split(Left(TempPath, Len(TempPath) - 3), ";")
If TempPath(UBound(TempPath, 1)) = Temp(x) Then
LoopLocations.Add Temp(x), TempPath
End If
End If
Next x
'Mark the cells that result in a loop
If LoopLocations.Count > 0 Then
If OutputTheLoopPath Then
'Output the loop path found in a third column
ReDim Temp(1 To UBound(InputData, 1), 1 To 1)
For x = 1 To UBound(InputData, 1)
If LoopLocations.Exists(InputData(x, 1)) Then
If OutputRange Is Nothing Then
Set OutputRange = TableRange.Cells(x, 1).Resize(1, 3)
Else
Set OutputRange = Union(OutputRange, TableRange.Cells(x, 1).Resize(1, 3))
End If
Temp(x, 1) = Join(LoopLocations(InputData(x, 1)), ";")
Temp(x, 1) = Replace(Right(Temp(x, 1), Len(Temp(x, 1)) - 1), ";", " ;")
End If
Next x
TableRange.Cells(1, 1).Offset(0, 2).Resize(UBound(Temp, 1), 1).Value = Temp
Else
'Do not output a third column
For x = 1 To UBound(InputData, 1)
If LoopLocations.Exists(InputData(x, 1)) Then
If OutputRange Is Nothing Then
Set OutputRange = TableRange.Cells(x, 1).Resize(1, 2)
Else
Set OutputRange = Union(OutputRange, TableRange.Cells(x, 1).Resize(1, 2))
End If
End If
Next x
End If
OutputRange.Interior.Color = RGB(255, 0, 0)
ElseIf AlertIfNoCycles Then
MsgBox _
"No cycles found in " & TableRange.Address(0, 0, , True), _
vbInformation
End If
End Sub
Private Function TakeATrip(ByVal MyLocation As Variant, Optional ExistingPath As Variant = "") As Variant
Dim MyJourneys As Variant, x As Long
Dim MyPaths As Variant
'If no new destinations, record the trip
If DestinationByLocation.Exists(MyLocation) Then
If DestinationByLocation(MyLocation) = "" Then
TakeATrip = ExistingPath & ";" & MyLocation
Exit Function
End If
Else
TakeATrip = ExistingPath & ";" & MyLocation
Exit Function
End If
'Prepare for multiple routes
MyJourneys = Split(DestinationByLocation(MyLocation), ";")
ReDim MyPaths(0 To UBound(MyJourneys))
For x = 0 To UBound(MyJourneys)
If Len(MyJourneys(x)) > 0 Then
If ExistingPath & ";" & MyLocation Like "*;" & MyJourneys(x) & ";*" Then
TakeATrip = ExistingPath & ";" & MyLocation & ";" & MyJourneys(x) & ";;;"
Exit Function 'a loop is found, we're done
End If
'explore new found path
MyPaths(x) = TakeATrip(MyJourneys(x), ExistingPath & ";" & MyLocation)
End If
If Right(MyPaths(x), 3) = ";;;" Then
TakeATrip = MyPaths(x)
Exit Function
End If
Next x
TakeATrip = Join(MyPaths, "|")
End Function
ОБРАТИТЕ ВНИМАНИЕ . В словарях по умолчанию учитывается регистр. Если вам нужен этот код, чтобы игнорировать регистр, добавьте к своим объявлениям вверху:
option compare text
И измените это
Set DestinationByLocation = CreateObject("Scripting.Dictionary")
Set LoopLocations = CreateObject("Scripting.Dictionary")
К этому
Set DestinationByLocation = CreateObject("Scripting.Dictionary")
Set LoopLocations = CreateObject("Scripting.Dictionary")
DestinationByLocation.CompareMode = 1
LoopLocations.CompareMode = 1
Спасибо Crops за выявление ошибки, когда петли не найдены; Я исправил код, добавив проверку отсутствия циклов и дополнительный вывод сообщения.
1
Judge
19 Ноя 2019 в 13:09
Расширение моего комментария,
Option Explicit
Public Sub GenerateFormulas()
Dim NodeNames As Range
Set NodeNames = Range("A2:A56")
' Assumed that the "from" column is immediately to the right,
' and that the column after it is the one where the formulas will appear
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
Dim c As Range
For Each c In NodeNames.Cells
dict(c.value) = c.Offset(0, 2).Address(False, False, xlA1)
Next
For Each c In NodeNames.Cells
c.Offset(0, 2).Formula = ListToFormula(dict, c.Offset(0, 1).value)
Next
End Sub
Private Function ListToFormula(ByVal dict As Object, ByVal list As String) As String
Dim nodes() As String
nodes = Split(list, ";")
ListToFormula = "="""""
Dim i As Long
For i = LBound(nodes) To UBound(nodes)
ListToFormula = ListToFormula & " & " & dict(Trim$(nodes(i)))
Next
End Function
Теперь вы можете посмотреть на Worksheet.CircularReference
, и он тоже будет хорошо отображаться на листе:
1
GSerg
13 Ноя 2019 в 11:35
Содержание
- VBA Excel
- Предупреждение о циклической ссылке
- Как найти циклическую ссылку
- Параметры вычислений
- Руководство по проверке данных Excel
- Контроль достоверности данных
- Важное ограничение
- Определение правил проверки данных
- Параметры проверки данных
- Простое выпадающее меню
- Проверка данных с помощью пользовательской формулы
- Формулы устранения неполадок
- Примеры формул проверки данных
- Как автоматически выделять диапазоны для выборки ячеек из таблицы?
- Динамическое определение границ выборки ячеек
- Заполнение диапазона
- Перемещение диапазона
- Копировать/вставить диапазон
- Примеры использования функции АГРЕГАТ в Excel
- Панель формул
- Ручной ввод функции
- Расчет среднего значения
- Использование арифметического выражения
- Использование функции СРЗНАЧ
- Присвоение диапазона ячеек переменной
VBA Excel
Предупреждение о циклической ссылке
Появление циклических ссылок очень легко определить. При их возникновении или наличии в уже созданной книге excel сразу же появляется предупреждение о циклической ссылке, которое по большому счету и описывает суть явления.
При нажатии на кнопку ОК, сообщение будет закрыто, а в ячейке содержащей циклическую ссылку в большинстве случаев появиться 0.
Предупреждение, как правило, появляется при первоначальном создании циклической ссылки, или открытии книги содержащей циклические ссылки. Если предупреждение принято, то при дальнейшем возникновении циклических ссылок оно может не появляться.
Как найти циклическую ссылку
Циклические ссылки в excel могут создаваться преднамеренно, для решения тех или иных задач финансового моделирования, а могут возникать случайно, в виде технических ошибок и ошибок в логике построения модели.
В первом случае мы знаем об их наличии, так как сами их предварительно создали, и знаем, зачем они нам нужны.
Во втором случае, мы можем вообще не знать где они находятся, например, при открытии чужого файла и появлении сообщения о наличии циклических ссылок.
Найти циклическую ссылку можно несколькими способами. Например, чисто визуально формулы и ячейки участвующие в образовании циклических ссылок в excel отмечаются синими стрелками, как показано на первом рисунке.
Если циклическая ссылка одна на листе, то в строке состояния будет выведено сообщение о наличии циклических ссылок с адресом ячейки.
Если циклические ссылки есть еще на других листах кроме активного, то будет выведено сообщение без указания ячейки.
Если или на активном листе их более одной, то будет выведено сообщение с указанием ячейки, где циклическая ссылка появляется в первый раз, после ее удаления – ячейка, содержащая следующую циклическую ссылку и т.д.
Найти циклическую ссылку можно также при помощи инструмента поиска ошибок.
На вкладке Формулы в группе Зависимости формул выберите элемент Поиск ошибок и в раскрывающемся списке пункт Циклические ссылки.
Вы увидите адрес ячейки с первой встречающейся циклической ссылкой. После ее корректировки или удаления – со второй и т.д.
Теперь, после того как мы выяснили как найти и убрать циклическую ссылку, рассмотрим ситуации, когда делать этого не нужно. То есть когда циклическая ссылка в excel приносит нам определенную пользу.
Параметры вычислений
Следующий список поясняет опции, которые доступны в разделе Calculation options (Параметры вычислений):
- Automatic (Автоматически) – пересчитывает все зависимые формулы и обновляет все открытые или внедрённые диаграммы при любом изменении значения, формулы или имени. Данная настройка установлена по умолчанию для каждого нового рабочего листа Excel.
- Automatic except for data tables (Автоматически, кроме таблиц данных) – пересчитывает все зависимые формулы и обновляет все открытые или внедрённые диаграммы, за исключением таблиц данных. Для пересчета таблиц данных, когда данная опция выбрана, воспользуйтесь командой Calculate Now (Пересчет), расположенной на вкладке Formulas (Формулы) или клавишей F9.
- Manual (Вручную) – пересчитывает открытые рабочие листы и обновляет открытые или внедрённые диаграммы только при нажатии команды Calculate Now (Пересчет) или клавиши F9, а так же при использовании комбинации клавиши Ctrl+F9 (только для активного листа).
- Recalculate workbook before saving (Пересчитывать книгу перед сохранением) – пересчитывает открытые рабочие листы и обновляет открытые или внедрённые диаграммы при их сохранении даже при включенной опции Manual (Вручную). Если Вы не хотите, чтобы при каждом сохранении зависимые формулы и диаграммы пересчитывались, просто отключите данную опцию.
- Enable iterative calculation (Включить итеративные вычисления) – разрешает итеративные вычисления, т.е. позволяет задавать предельное количество итераций и относительную погрешность вычислений, когда формулы будут пересчитываться при подборе параметра или при использовании циклических ссылок. Более детальную информацию о подборе параметров и использовании циклических ссылок можно найти в справке Microsoft Excel.
- Maximum Iterations (Предельное число итераций) – определяет максимальное количество итераций (по умолчанию – 100).
- Maximum Change (Относительная погрешность) – устанавливает максимально допустимую разницу между результатами пересчета (по умолчанию – 0.001).
Вы также можете переключаться между тремя основными режимами вычислений, используя команду Calculation Options (Параметры вычислений) в разделе Calculation (Вычисление) на вкладке Formulas (Формулы). Однако, если необходимо настроить параметры вычислений, все же придется обратиться к вкладке Formulas (Формулы) диалогового окна Excel Options (Параметры Excel).
Руководство по проверке данных Excel
Проверка данных — это функция в Excel, используемая для контроля того, что пользователь может ввести в ячейку. Например, вы можете использовать проверку данных, чтобы убедиться, что:
- значение является числом от 1 до 6
- дата произойдет в следующие 30 дней
- текстовая запись содержит менее 25 символов
Проверка данных может просто отображать сообщение пользователю с информацией, что разрешено, как показано ниже:
Сообщение отображается автоматически при выборе ячейки
Проверка данных также может остановить неправильный ввод данных пользователем. Например, если код сотрудника не проходит проверку, вы можете увидеть следующее сообщение:
Пример сообщения об ошибке
Кроме того, проверка данных может использоваться для предоставления пользователю определенного выбора в раскрывающемся меню:
Пример раскрывающегося меню проверки данных
Это очень удобно, так как можно дать пользователю именно те значения, которые уже соответствуют требованиям.
Контроль достоверности данных
Проверка данных осуществляется с помощью правил, определенных в пользовательском интерфейсе Excel на вкладке «Данные» на ленте.
Элементы управления проверкой данных на вкладке ДАННЫЕ
Важное ограничение
Важно понимать, что проверку данных можно легко обойти. Если пользователь копирует данные из ячейки без проверки в ячейку с проверкой данных, проверка уничтожается (или заменяется). Проверка данных — это хороший способ помочь пользователям, сообщив им критерии ввода, но он не дает гарантированную защиту от ошибок.
Определение правил проверки данных
Проверка данных определяется в окне с 3 вкладками: Параметры, Сообщение для ввода и Сообщение об ошибке:
Окно проверки данных имеет три основные вкладки
На вкладке Параметры вы можете ввести критерии проверки. Существует ряд встроенных правил проверки с различными параметрами, также можно выбрать «Другой» и использовать собственную формулу для проверки ввода, как показано ниже:
Пример вкладки настроек проверки данных
Вкладка «Сообщение для ввода» определяет сообщение, отображаемое при выборе ячейки с правилами проверки. Оно не является обязательным.
Если сообщение не установлено, оно не отображается, когда пользователь выбирает ячейку с примененной проверкой данных.
Входное сообщение не влияет на то, что пользователь может ввести — оно просто отображает сообщение, чтобы сообщить пользователю, что разрешено или ожидается.
Вкладка настройки сообщения проверки данных
Вкладка «Сообщение об ошибке» определяет, как выполняется проверка. Например, когда вид установлен на «Останов», неверные данные вызывают окно с сообщением, и ввод не разрешен.
Вкладка предупреждения об ошибке проверки данных
Пользователь видит сообщение, подобное этому:
Пример сообщения об ошибке проверки данных
Когда в поле «Вид» установлено значение «Сообщение» или «Предупреждение», изменяется значок, отображаемый с пользовательским сообщением. Пользователь может игнорировать сообщение и вводить значения, которые не проходят проверку. Ниже обобщено поведение каждого вида предупреждения об ошибке.
Не позволяет пользователям вводить недопустимые данные в ячейку. Пользователи могут повторить попытку, но должны ввести значение, которое проходит проверку данных. В окне предупреждения «Останов» есть три опции: «Повторить», «Отмена» и «Справка».
Предупреждает пользователей о том, что данные неверны. Предупреждение ничего не делает, чтобы остановить ввод неверных данных. В окне «Предупреждение» есть три параметра: «Да» (для принятия недействительных данных), «Нет» (для редактирования недействительных данных), «Отмена» (для удаления недействительных данных) и «Справка».
Параметры проверки данных
При создании правила проверки данных доступно восемь параметров:
Любое значение — проверка не выполняется. Примечание: если проверка данных ранее применялась с установленным входным сообщением, сообщение все равно будет отображаться при выборе ячейки, даже если выбрано любое значение.
Целое число — разрешены только целые числа. Как только опция целого числа выбрана, другие опции становятся доступными для дальнейшего ограничения ввода. Например, вам может потребоваться целое число от 1 до 10.
Действительное — работает как опция целого числа, но допускает десятичные значения. Например, если для параметра «Действительное» задано значение от 0 до 3, допустимы все значения, такие как 0,5 и 2,5.
Список — разрешены только значения из предварительно определенного списка. Значения представляются пользователю как выпадающее меню. Допустимые значения могут быть жестко заданы непосредственно на вкладке «Параметры» или указаны в виде диапазона на рабочем листе.
Дата — разрешены только даты. Например, вам может потребоваться дата между 1 января 2018 года и 31 декабря 2021 года или дата после 1 июня 2018 года.
Время — разрешено только время. Например, вы можете указать время между 9:00 и 17:00 или разрешить время только после 12:00.
Длина текста — проверяет ввод на основе количества символов или цифр. Например, вам может потребоваться код из 5 цифр.
Другой — проверяет ввод с использованием пользовательской формулы. Другими словами, вы можете написать собственную формулу для проверки ввода. Пользовательские формулы значительно расширяют возможности проверки данных. Например, вы можете использовать формулу, чтобы обеспечить значение в верхнем регистре, или значение, которое содержит «АБВ».
На вкладке параметров также есть два флажка:
Игнорировать пустые ячейки — говорит Excel не проверять ячейки, которые не содержат значений. На практике этот параметр влияет только на команду «Обвести неверные данные». Когда эта опция включена, пустые ячейки не обведены, даже если они не прошли проверку.
Распространить изменения на другие ячейки с тем же условием — этот параметр обновит проверку, примененную к другим ячейкам, когда она будет соответствовать (оригинальной) проверке редактируемых ячеек.
Простое выпадающее меню
Вы можете предоставить пользователю раскрывающееся меню опций, жестко закодировав значения в поле настроек или выбрав диапазон на листе. Например, чтобы ограничить записи действиями «ПРИНЯТ», «В ОБРАБОТКЕ» или «ОТГРУЖЕН», вы можете ввести эти значения через точку с запятой:
Раскрывающееся меню проверки данных с жестко заданными значениями
При применении к ячейке на рабочем листе раскрывающееся меню работает следующим образом:
Используются жестко заданные значения выпадающего меню проверки данных
Другой способ ввода значений в раскрывающееся меню — использование ссылки на рабочий лист. Например, с размерами (то есть маленький, средний и т.д.) в диапазоне F4:F6. Вы можете указать этот диапазон непосредственно в окне настроек проверки данных:
Значения выпадающего меню проверки данных со ссылкой на диапазон
Обратите внимание, что диапазон вводится как абсолютный адрес, чтобы предотвратить его изменение, поскольку проверка данных применяется к другим ячейкам.
Подсказка. Щелкните значок маленькой стрелки в дальнем правом углу поля «Источник», чтобы сделать выбор непосредственно на рабочем листе, чтобы вам не приходилось вводить диапазон вручную.
Вы также можете использовать именованные диапазоны для указания значений. Например, с именованным диапазоном под названием «размер» для F4:F6, вы можете ввести имя непосредственно в окне, начиная со знака равенства:
Значения выпадающего меню проверки данных с именованным диапазоном
Именованные диапазоны автоматически являются абсолютными, поэтому они не изменятся.
Вы также можете создавать зависимые выпадающие списки с пользовательской формулой.Совет.
Если вы используете таблицу для раскрывающихся значений, Excel будет автоматически расширять или сокращать таблицу при добавлении или удалении значений.
Другими словами, Excel будет автоматически синхронизировать раскрывающийся список со значениями в таблице при изменении, добавлении или удалении значений.
Проверка данных с помощью пользовательской формулы
Формулы проверки данных должны быть логическими формулами, которые возвращают ИСТИНА, если ввод действителен, и ЛОЖЬ, если ввод недействителен. Например, чтобы разрешить ввод любого числа в ячейку A1, вы можете использовать функцию ЕЧИСЛО (ISNUMBER) в формуле, подобной этой:
Если пользователь вводит значение 10 в A1, ЕЧИСЛО (ISNUMBER) возвращает ИСТИНА, и проверка данных завершается успешно. Если вводится значение типа «яблоко» в A1, ЕЧИСЛО (ISNUMBER) возвращает ЛОЖЬ, и проверка данных завершается неудачно.
Чтобы включить проверку данных с помощью формулы, выберите «Другой» на вкладке «Параметры», затем введите формулу, начиная со знака равенства (=), как обычно.
Формулы устранения неполадок
Excel игнорирует формулы проверки данных, которые возвращают ошибки.
Если формула не работает, и вы не можете понять, почему, настройте фиктивные формулы, чтобы убедиться, что формула работает так, как вы ожидаете.
Фиктивные формулы — это просто формулы проверки данных, введенные непосредственно на листе, чтобы вы могли легко увидеть, что они возвращают. На приведенном ниже экране показан пример:
Проверка достоверности данныхс помощью фиктивных формул
После того, как фиктивная формула заработает так, как вы хотите, просто скопируйте и вставьте ее в область формулы проверки данных.
Примеры формул проверки данных
Возможности для проверки данных пользовательских формул практически не ограничены. Вот несколько примеров для вдохновения:
Чтобы разрешить только 5 символьных значений, начинающихся с «z», вы можете использовать:
= И (ЛЕВСИМВ (А1) = «z»; ДЛСТР (A1) = 5)
Эта формула возвращает ИСТИНА только тогда, когда код длиной 5 цифр и начинается с «z». Два значения в примере выше возвращают ЛОЖЬ с этой формулой.
Чтобы разрешить ввод даты в течение 30 дней с сегодняшнего дня:
= И (А1> СЕГОДНЯ (), А1
Как автоматически выделять диапазоны для выборки ячеек из таблицы?
Задание является следующим. В одном из столбцов в разных ячейках находятся какие-то значения (в данном случае текстовые строки “граница”). Они определяют начало и конец секторов (диапазонов). Эти значения вставлены автоматически и могут появляться в разных ячейках. Их размеры и количество в них ячеек также может быть разным. Например, на рисунке ниже выбран сектор данных (диапазон) номер 2.
Все, что следует сейчас сделать – это создать возможность легкого и быстрого выбора диапазона, который нас интересует (вписывая номер диапазона в одну из ячеек для выбора).
Динамическое определение границ выборки ячеек
Для наглядности приведем решение этой задачи с использованием вспомогательного столбца. В первую ячейку в вспомогательном столбце (A7) вводим формулу:
и копируем ее вниз в оставшиеся ячейки. Везде, где в ячейках соседнего столбца находится значение “граница”, функция возвращает номер строки. В противном случае возвращает пустую строку.
Следующим шагом будет динамическое определение адреса для выборки диапазона данных из исходного списка в соответствии с критерием отбора.
Изменяемое значение критерия для управления выборкой данных из таблицы будет указано в ячейке C1. Там мы указываем порядковый номер диапазона, данные которого нас интересуют в конкретный момент.
Заполнение диапазона
Чтобы заполнить диапазон, следуйте инструкции ниже:
- Введите значение 2 в ячейку B2.
- Выделите ячейку В2, зажмите её нижний правый угол и протяните вниз до ячейки В8.
Эта техника протаскивания очень важна, вы будете часто использовать её в Excel. Вот еще один пример:
Excel автоматически заполняет диапазон, основываясь на шаблоне из первых двух значений. Классно, не правда ли? Вот еще один пример:
Перемещение диапазона
Чтобы переместить диапазон, выполните следующие действия:
- Выделите диапазон и зажмите его границу.
- Перетащите диапазон на новое место.
Копировать/вставить диапазон
Чтобы скопировать и вставить диапазон, сделайте следующее:
- Выделите диапазон, кликните по нему правой кнопкой мыши и нажмите Copy (Копировать) или сочетание клавиш Ctrl+C.
- Выделите ячейку, где вы хотите разместить первую ячейку скопированного диапазона, кликните правой кнопкой мыши и выберите команду Paste (Вставить) в разделе Paste Options (Параметры вставки) или нажмите сочетание клавиш Ctrl+V.
Примеры использования функции АГРЕГАТ в Excel
Пример 1. В классе провели контрольную по математике. Необходимо определить среднюю оценку для учеников, которые присутствовали на контрольной. Напротив некоторых фамилий оценка не указана по причине неn допуска к написанию или отсутствия.
Вид таблицы с данными:
Для расчета используем следующую формулу:
- 1 – число, соответствующее функции СРЗНАЧ;
- 3 – число, указывающее на способ расчета (не учитывать скрытые строки и коды ошибок);
- B3:B13 – диапазон ячеек с данными для определения среднего значения.
В результате формула вернула правильное число среднего значения в обход значениям с ошибками #Н/Д.
Панель формул
Существует ещё третий способ запустить функцию «СРЗНАЧ». Для этого, переходим во вкладку «Формулы». Выделяем ячейку, в которой будет выводиться результат. После этого, в группе инструментов «Библиотека функций» на ленте жмем на кнопку «Другие функции». Появляется список, в котором нужно последовательно перейти по пунктам «Статистические» и «СРЗНАЧ».
Затем, запускается точно такое же окно аргументов функции, как и при использовании Мастера функций, работу в котором мы подробно описали выше.
Дальнейшие действия точно такие же.
Ручной ввод функции
Но, не забывайте, что всегда при желании можно ввести функцию «СРЗНАЧ» вручную. Она будет иметь следующий шаблон: «=СРЗНАЧ(адрес_диапазона_ячеек(число); адрес_диапазона_ячеек(число)).
Конечно, этот способ не такой удобный, как предыдущие, и требует держать в голове пользователя определенные формулы, но он более гибкий.
Расчет среднего значения
Когда среднее значение нужно не только определить, но и зафиксировать в отдельной выбранной для этого ячейке, можно использовать несколько методов. Ниже мы подробно рассмотрим каждый из них.
Использование арифметического выражения
Как мы знаем, среднее значение равняется сумме чисел, разделенных на их количество. Данную формулу можно использовать и в Экселе.
- Встаем в нужную ячейку, ставим знак “равно” и пишем арифметическое выражение по следующем принципу:
=(Число1+Число2+Число3. )/Количество_слагаемых .
Примечание: в качестве числа может быть указано как конкретное числовое значение, так и ссылка на ячейку. В нашем случае, давайте попробуем посчитать среднее значение чисел в ячейках B2,C2,D2 и E2.
Конечный вид формулы следующий: =(B2+E2+D2+E2)/4 . - Когда все готово, жмем Enter, чтобы получить результат.
Данный метод, безусловно хорош, но удобство его использования существенно ограничено объемом обрабатываемых данных, ведь на перечисление всех чисел или координат ячеек в большом массиве уйдет немало времени, к тому же, в этом случае не исключена вероятность допущения ошибки.
Использование функции СРЗНАЧ
С данной функцией мы уже успели познакомиться, когда перешли в ячейку с результатом расчета среднего значения. Теперь давайте научимся полноценно ею пользоваться.
- Встаем в ячейку, куда планируем выводить результат. Кликаем по значку “Вставить функци” (fx) слева от строки формул.
- В открывшемся окне Мастера функций выбираем категорию “Статистические”, в предлагаемом перечне кликаем по строке “СРЗНАЧ”, после чего нажимаем OK.
- На экране отобразится окно с аргументами функции (их максимальное количество – 255). Указываем в качестве значения аргумента “Число1” координаты нужного диапазона. Сделать это можно вручную, напечатав с клавиатуры адреса ячеек. Либо можно сначала кликнуть внутри поля для ввода информации и затем с помощью зажатой левой кнопки мыши выделить требуемый диапазон в таблице. При необходимости (если нужно отметить ячейки и диапазоны ячеек в другом месте таблицы) переходим к заполнению аргумента “Число2” и т.д. По готовности щелкаем OK.
- Получаем результат в выбранной ячейке.
- Среднее значение не всегда может быть “красивым” за счет большого количества знаков после запятой. Если нам такая детализация не нужна, ее всегда можно настроить. Для этого правой кнопкой мыши щелкаем по результирующей ячейке. В открывшемся контекстном меню выбираем пункт “Формат ячеек”.
- Находясь во вкладке “Число” выбираем формат “Числовой” и с правой стороны окна указываем количество десятичных знаков после запятой. В большинстве случаев, двух цифр более, чем достаточно. Также при работе с большими числами можно поставить галочку “Разделитель групп разрядов”. После внесение изменений жмем кнопку OK.
- Все готово. Теперь результат выглядит намного привлекательнее.
Присвоение диапазона ячеек переменной
Чтобы переменной присвоить диапазон ячеек, она должна быть объявлена как Variant, Object или Range:
Источник