Программирование MS Excel
Программирование MS Excel / FAQs/
Вопросы по работе в Excel


Основано на FAQs by Михаил Землянуха

Дополнено, частично изменено by Acidigital

Содержание

Функции вывода сумм прописью

Один из часто встречающихся вопросов - как вывести число прописью. Например в одной ячейке Excel размещается число (например 567000.00), а другой надо вывести текст "пятьсот шестьдесят семь тысяч рублей 00 копеек". Вот несколько решений:

Самая короткаясумма прописью в виде текста на VBA

В виде готового XLS-файлакоторый можно просто бросить в директорию EXCEL\XLSTART. Также содержит функцию на VBA

В виде стандартного дополнения Excel

И еще один вариант Дмитрия Феофанова



"Моя книга содержит связи". Как избавится от этого сообщения ?

Внешние связи могут быть в:

  1. в формулах:
    • Найдите имя связанного файла в меню [Редактирование / Связи]
    • Ищите это имя в формулах ячеек на всех листах
  2. в именах:
    • Просмотрите список имен в меню [Вставить / Имя / Определить]
  3. в кнопках:
    • Просмотрите какие макросы назначены на кнопки.
Это я почерпнул из FAQ конференции comp.apps.spreadsheets . Вообще-то насколько я знаю в диаграммах также могут содержаться ссылки на диапазоны данных по которым они строятся. Теоритически там также могут быть внешние ссылки.
"Повышение" точности вычислений формул

Вследствии того что Excel отображает цифры в ячейках с меньшей точностью чем их хранит (например 12.343 может отображатся как 12.34), возможны визуальные эффекты "неточности" расчетов Excel'a в формулах. Пример:

Пусть мы имеем в ячейке A1 число 12.343, отображаемое с точностью до 2 знаков (формат 0.00, или "денежный") в виде 12.34. Пусть в ячейке A2 также расположено число 12.343 отображаемое как 12.34. Если мы запишем в A3 формулу =A1+A2 то получим результат 24.686, отображаемый из-за округления к 2 разрядам как 24.69. Таким образом мы визуально мы получаем казуз - "неточность" расчета Excel'a формул. На самом же деле это проблема связана исключительно с округлением чисел при их отображении с меньшей точностью.

Бороться с этим можно 2-мя способами:

  • Повысить в формате точность отображения чисел (хотя бы исходных данных в ячейках A1, A2). Процесс округления при этом становится "очевидным" для пользователя.
  • Воспользоваться специальной фичей Excel - установить опцию в меню Сервис/ Параметры/ Вычисления/ Точность как на экране. При этом Excel будет хранить данные в ячейках с той точностью с которой они отображаются. То есть после выполнения данной операции число 12.343 в ячейке A1 будет преобразовано в 12.34 навсегда .
Первый способ математически более правильный. Второй проще, и надежней.
Функции СУММ() и ЕСЛИ() могут оперировать с массивами

Использование массивов в функциях СУММ() и ЕСЛИ() позволяет рассчитать сумму ячеек с критерием заданным диапазоном значений, например имея столбец с датами и соотвествующий ему столбец значений можно одной формулой найти сумму всех чисел в заданном диапазоне дат. Еще один пример. Кстати также можно использовать функции типа БДСУМ(), но это не всегда удобно. Еще пример задачи для использования массивов. Можно даже использовать функции поиска подстроки в ячейках (например для подсчета в ячейках с поиском по шаблону)!


Как определить минимум/максимум на диапазоне содержащем #Н/Д (или фильтрация данных массива)

Все также - при помощи формулы-массива с ЕСЛИ .


Перевод строки в ячейке таблицы

Для размещения текста на наскольких строках в одной ячейке таблицы используйте Alt-Enter .


Как задать локальное имя (и использоватьодно и тоже имя на разных листах)

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


Почему нельзя ввести имя листа с буквой "Ж"

При использовании юникодного шрифта будет OK .


Отображение чисел с лидирующими нулями

Для этого необходимо установить формат отображения числа в ячейке с необходимым количеством нулей. Это делается через меню Формат / Ячейки / Пользовательский . Замечание - можно ввести число как текст ( например '001 ), но это не одно и тоже. Нельзя будет суммировать и пр.


Использование специальных символов в формате

Неоторые символы в строке формата являются специальными. Для того чтобы их вывести можно использовать символ слэш '\'. Вот два примера:


При удалении ячеек рабочего листа "портятся" ссылки на удаленные ячейки

Если Вы удаляете данные в листе (строки, столбцы), то все формулы содержащие ссылки на удаленные данные будут скоректированы Excel'om как #ссылка# . Этого можно избежать если не использовать операции удаления - только "очистить", "скопировать" и "вставить" .


Как избавится от кракозябликов при масштабе < 100%

Можно попробовать выполнить подстановку шрифтов в файле win.ini .


Не могу ввести текст начинающийся с 2-ух букв в верхнем регистре. Почему ?

Отключите опцию в меню Сервис/Автозамена "Исправлять две прописные буквы в начале слова".


Я защитил лист, а пароль забыл. Что делать ?

Попробуйте перекопировать содержимое на другой лист, может это Вас устроит. Скорее всего это не то что Вам хочется (снятие пароля). Ищите в Интернет, кто ищет - тот всегда найдет. Вот один из URL .


Как определить пустые ячейки на листе

Функция рабочего листа IsEmpty() (ЕПусто() в русском эквиваленте) позволяет определить "пустоту" ячейки. Естественно ее можно использовать и для подсчета числа пустых ячеек и пр.


Как пересчитать только выделенные ячейки на листе

Я не знаю как это сделать стандартным способом. Могу только предложить использовать макро , который пересчитывает ячейки из текущего выделения. Скопируйте его в лист макро и назначьте на клавишу (меню сервис-макрос-параметры). При работе макрос показывает ячейку которую он пересчитывает. Если Вы не знаете - пересчет всей книги запускается кливишей F9, пересчет текущего листа Shift-F9.


Оптимизация формул на рабочем листе для сокращения времени вычислений

Далее приводится мой вольный перевод письма Stephen Bullenиз конференции comp.apps.spreadsheets :

Вопрос:

Мне кажется вычисления действительно зависят от физического расположения ячеек а не только от логической зависимости.

Ответ:

Действительно. Однажды я взял у клиента лист который выглядел просто ужасно. Это был результат беспорядочного связывания ячеек по всему листу. Там было две запутанные циклические зависимости, одно внутри другой и это вычислялось 2 минуты. Я физически реорганизовал его так что каждая ячейка зависела только от ячеек сверху-слева, за исключение двух ячеек содержащих циклические ссылки. Одно это уменьшило время вычисление до 20 секунд. После этого было просто выявить вычисления которые были внутри циклических ссылок, но которые реально там не требовались. Вынос их наружу сделал возможным полное исключение внутренних циклических ссылок (заменой их набором непосредственных вычислений. Результатом был намного меньший объем вычислений который занимал 3 секунды (в среднем включал 4 итерации).

После этого мы могли переделать отчет, который уже мог не содержать всех вычислений - мы могли просто выполнять вычисления по частям в отдельных связанных листах.


Как убрать заголовки строк и столбцов

Эта опция может быть отключена через меню 'Сервис/Параметры/Вид/Заголовки строк и столбцов'. При программировании на VBA учтите что это свойство window а не рабочего листа.


Как сделать размер листа A столбцов на Б строк

Попробуйте скрыть все остальные строки и столбцы.


Как к дате добавлять месяцы

В Excel'e можно добавлять к дате дни. Если Вам необходимо добавлять определенное количество месяцев (например получить последовательность 5 янв, 5 фев, 5 мар и тп) учитывая число дней в месяце, надо использовать функцию ДАТА(...) . Excel сам будет отслеживать число дней в месяце.


DOOM встроенный в Excel

Это не шутка. В Excel'e действительно есть подобие игры DOOM. в котором Вы можете прочитать фамилии людей принимавших участие в разработке Excel, а также увидеть фотографии разработчиков. Попробуйте!

Говорят что в Excel 8 встроен Flight Simulator . Я не проверял.


Кто такие MVP's

Микрософт награждает титулом MVP (Most Valuable Professional) особо выдающихся пользователей, ведущих активный образ жизни и помогающих другим менее продвинутым пользователям осваивать продукты MS.


Как задать размер листа больше чем A4 ?

Нужно установить принтер поддерживающий формат листа A3 .


Вставка ссылки на другой лист. Все изменения в оригинале будут автоматически отображаться

Предположим Вы имеете N листов со стандартной шапкой. Вы можете оформить ее только один раз и ссылаться на нее из всех листов. При этом правки шапки будут автоматически отображаться на листах. Как это сделать ? Смотри здесь .


Что делать при сообщении "Не хватает памяти"

Сушить сухари :) Я не знаю гарантированного решения этой проблемы, но попробуйте это - вдруг поможет.


Как избавиться от ошибки #ДЕЛ0 (деление на 0)

Решение - не делить на 0. В формуле необходимо анализировать на что вы собираетесь делить.


Мой файл испорчен! Что делать?

Можете попробовать сослаться на значения ячеек испорченного файла из другой книги. Фича заключается в том что для обновления связей Excel'y необязательно открывать книгу. Если Ваш файл плохо :) запорчен может помочь. Но это извлекает только значения, но не форматирование и т.п, что согласитесь не есть хорошо. Насколько мне известно Office97 имеет какие-то средства для восстановления запорченных файлов (к сожалению мне это точно неизвестно). Кроме этого в Интернете есть фирмы способные провести восстановление файла Excel (и не только Excel, и не только запорченного, а например стертого :). Естественно это стоит денег. Штатных средств я не знаю.



© Acidigital , 2001

Hosted by uCoz