Одна маленькая хитрость
Одна маленькая хитрость
Как я уже говорил, компьютер на самом деле достаточно глуп и наивен. Его единственное достоинство заключается в способности быстро и не рассуждая выполнять заданный набор команд сколь угодно много раз. Впрочем, все на свете имеет свою цену. Так, высокая работоспособность вычислительной техники оплачивается ее полной безрассудностью, что возлагает на разработчика повышенную ответственность за написанную программу. Только не говорите мне, что вы никогда в жизни не программировали, ибо это неправда. Простая математическая операция сложения или вычитания в том же Microsoft Excel - это уже программа, пусть и маленькая. Собственно, в категорию программ попадает практически все, что состоит из набора инструкций, подлежащих автоматическому выполнению.
Другое дело, что профессионал отличается от любителя ("терпеть ненавижу" всякие новомодные словечки типа "ламер" или "чайник") лишь тем, что в состоянии быстро разобраться в алгоритме работы конкретной программы (поверьте, это вовсе не просто) и определить все существующие в программе связи.
Вы спросите, к чему это я? А к тому, что любая автоматизированная таблица Microsoft Excel по сути та же программа. Стало быть качество результата ее работы зависит от количества допущенных в ней ошибок. Не на ту ячейку сослались и... оказалось, что, вместо прибыли, при тех же вводных, предприятие сидит в долгах, как в шелках. Все, естественно, рады, ибо налоги можно не платить. Особую радость всякие там ошибки в расчетах, по известным причинам, вызывают у налоговой инспекции...
Только без паники. Не одни мы такие начинающие. Стало быть есть основания полагать, что такой универсальный прикладной пакет, как Microsoft Excel, наверняка имеет какое-нибудь средство для не слишком внимательных. И основания вовсе не беспочвенные. Если заглянуть в меню "СЕРВИС", то среди всего прочего там обнаружится пункт "ЗАВИСИМОСТИ", которым мы в этот раз и займемся.
Независимо от того, сами вы разрабатываете таблицу или получили ее в пользование со стороны, всегда возникает одна и та же задача - определить, какая ячейка участвует в какой-нибудь цепочке связей, и в какой именно. Это тем более актуально, если таблица подлежит кардинальной модернизации. Вообще-то, правила хорошего тона в программировании рекомендуют (относительно таблиц) широко использовать уникальные личные имена значащих ячеек, но если их более полутора десятков на каждом рабочем листе, то и это не спасает. Поди скажи с гарантией, что конкретно учитывается в ячейках столбца под названием "Итог". По этой причине в Microsoft Excel и был предусмотрен набор специализированных инструментов для оказания быстрой и действенной помощи пользователям.
Возьмем простой пример автоматизированной таблицы, вычисляющей три базовых финансовых показателя за шесть месяцев хозяйственной деятельности гипотетического предприятия. Тут нужно внести некоторую ясность. Данная контора продает два вида товаров: изготавливаемых самостоятельно и получаемых по консигнации (столбцы "В" и "С", соответственно). Естественно, себестоимость продукции также разнится (столбцы "D" и "E", соответственно). Только себестоимость собственной продукции для каждого месяца уникальна, а консигнация "приносит" стандартный "процент" (в примере использована ставка в десять процентов). Поэтому значения столбца "Е" вычисляются как девяносто процентов от объема продаж чужого товара в конкретном месяце. Прибыль, естественно, вычисляется как сумма разниц между реализацией и себестоимостью каждой группы товаров. Графа " Итого", само собой разумеется, складывает числа по столбцам. А в левом верхнем углу таблицы расположены итоговые результаты всей таблицы в целом, также получаемые посредством ссылок и вычислений. Естественно, любой бухгалтер за голову схватится при виде такой математики, да не в этом суть. Суть в том, что пример прекрасно иллюстрирует сложную таблицу с массой взаимозависимых ячеек и ссылок.
Теперь представим себе простую ситуацию: вам представлена такая вот таблица, и ее разработчик, счастливый от получения 1 797 761 рублей вожделенной прибыли, метнулся в ближайший магазин за пивом, а вам кажется, что что-то в расчетах не стыкуется. Можно, конечно, все самому пересчитать заново, но куда проще и быстрее проверить верность связей и формул в уже имеющейся таблице. В ручном режиме это может занять до сорока минут на ползание по ячейкам и выяснение смысла хранящихся в них символов. Но если воспользоваться встроенными мастерами анализа связей, то и разработчика можно не ждать, Microsoft Excel сам все расскажет и покажет.
Вот, к примеру, первый логичный вопрос: откуда берется значение ячейки "В1" ( Реализация)? Всего-то, что нужно для получения ответа, это выделить указанную ячейку, открыть режим "ЗАВИСИМОСТИ" в меню "СЕРВИС" и вы брать там команду "ВЛИЯЮЩИЕ ЯЧЕЙКИ". Мастер анализа связей "пробежится" по таблице и выявит те ячейки, значение которых непосредственно влияет на результат в области выделения. По окончанию работы (то есть практически сразу) мастер выделит тонкой синей рамкой те ячейки, содержимое которых имеет непосредственное влияние на выделенную ячейку, а чтобы вы ничего не перепутали, он еще и стрелкой покажет, что и куда попадает. Источник отмечается жирной точкой, а получатель - стрелкой. Только не подумайте, что все это я сам рисовал, делать больше нечего, когда компьютер и сам неплохо справляется. Кстати, чтобы убрать с экрана все эти художества (а с самими данными ничего не происходит, это к сведению), достаточно опять обратиться в "СЕРВИС/ЗАВИСИМОСТИ" и выбрать там "УБРАТЬ ВСЕ ЗАВИСИМОСТИ".
Теперь возьмем второй вопрос, тоже весьма и весьма уместный: где, например, учитывается объем реализации собственной продукции за апрель (ячейка "В9")? Вместо того чтобы искать вручную, вполне уместно "напрячь" мастер. Выделите соответствующие продажи за апрель и в "СЕРВИС/ЗАВИСИМОСТИ" выберите режим "ЗАВИСИМЫЕ ЯЧЕЙКИ". В результате мастер выделит жирной черной рамкой исходную ячейку, а стрелками укажет те места, где ее содержимое участвует в каком-либо действии.
Хочу обратить ваше внимание, что мастер зависимостей показывает только наличие и направление связей, но не их характер. Так, в последнем примере мастер показал, что объем апрельских продаж собственной продукции участвует в формировании результата двух ячеек, в графах " Итого" и " Прибыль", но что там с ним делается - остается за кадром. Правда, теперь совсем несложно выделить любую из зависящих ячеек и посмотреть, что там делается с данными.
Теперь приступим к самому интересному и даже в чем-то немножко магическому. Предположим, что где-то в недрах огромной таблицы притаилась ошибка. Для примера я принудительно вбил, вместо продаж консигнационного товара за месяц март, чисто текстовую абра-кадабру. Так как операция суммирования оперирует исключительно цифрами и числами, то, наткнувшись на нечто малопонятное, она тут же выдает сообщение "#ЗНАЧ!" (ошибка значения), которое появляется везде, где используется результат работы этой функции. В том числе и во всех зависимых ячейках. Конечно, использованную мною "вчпятку" несложно выловить и одним лишь взглядом, она проста и очевидна. Но если ошибка происходит по вине какого-нибудь подключенного макроса, модуля Visual Basic или по причине "особых взглядов" одной из многочисленных "умных" встроенных функций, то ее можно искать сутками. Поэтому куда удобнее заставить заняться поиском причины ошибки сам компьютер.
В уже знакомом мастере "ЗАВИСИМОСТИ" меню "СЕРВИС" есть любопытная команда "ИСТОЧНИК ОШИБОК". Это просто гениальное изобретение, скажу я вам. Выделите, например, ячейку "В3" ( Прибыль) и скажите "ИСТОЧНИК ОШИБОК". Мастер пройдется "назад" по цепочке связей, покажет ее саму и точно укажет, с какого места в формулах начинается сбой. Синими стрелками показан поток данных, обработка которых приводит к ошибке. Красными - весь дальнейший путь передачи ошибки по цепочке зависимых ячеек, что позволяет быстро найти то место, откуда "что-то пошло не так". Просто, быстро и, что самое главное, наглядно.
Таким образом, буквально "не отходя от кассы", автоматизированная таблица "разбирается" на составляющие, что тот автомат Калашникова. При этом мастер аккуратными цветными стрелками покажет КАК взаимосвязаны представленные данные. Удобнее не бывает!
И последнее, это уже чисто практический совет, если у вас возникла всего пара вопросов к таблице, то можно вызывать мастер через панель меню, как я это описывал выше. Но если вы собрались подойти к вопросу "плотно" и серьезно, то каждый раз лазить мышью по выпадающим спискам уж больно накладно. Кликните мышью (не важно зачем) раз эдак пятьсот, пусть даже в течение нескольких часов, сразу поймете о чем это я. Так вот, для экономии собственного здоровья и сил (про тоннельный синдром, полагаю, все слышали), когда потребуется частенько пользоваться различными режимами работы мастера анализа зависимостей, имеет смысл вывести на экран всю инструментальную панель этого мастера. Делается сие командой "ПАНЕЛЬ ЗАВИСИМОСТЕЙ", расположенной в окне уже известного вам мастера.
На этой панели расположены и некоторые другие полезные инструменты. Из системного меню, к примеру, нельзя избирательно отменить какие-то конкретные стрелки. Либо все сразу, либо ничего. А с инструментальной панели можно убрать отдельно стрелки зависимых ячеек, не затронув другие обозначения. Потом с панели можно присоединить к любой ячейке текстовый, графический и даже звуковой комментарий. Это удобно, когда анализируемая таблица отличается необъятностью размеров и особой запутанностью всяких связей и нужно где-то записывать какие-то свои наблюдения или пожелания.
На этом, пожалуй, про анализ зависимостей можно и закончить. Однако я настоятельно рекомендую вам самостоятельно поэкспериментировать, это не менее увлекательно, чем "Санта-Барбара" и "Сансет-Бич" вместе взятые.
Александр Запольскис E-mail: leshy@nestor.minsk.by - титульная страница
Как я уже говорил, компьютер на самом деле достаточно глуп и наивен. Его единственное достоинство заключается в способности быстро и не рассуждая выполнять заданный набор команд сколь угодно много раз. Впрочем, все на свете имеет свою цену. Так, высокая работоспособность вычислительной техники оплачивается ее полной безрассудностью, что возлагает на разработчика повышенную ответственность за написанную программу. Только не говорите мне, что вы никогда в жизни не программировали, ибо это неправда. Простая математическая операция сложения или вычитания в том же Microsoft Excel - это уже программа, пусть и маленькая. Собственно, в категорию программ попадает практически все, что состоит из набора инструкций, подлежащих автоматическому выполнению.
Другое дело, что профессионал отличается от любителя ("терпеть ненавижу" всякие новомодные словечки типа "ламер" или "чайник") лишь тем, что в состоянии быстро разобраться в алгоритме работы конкретной программы (поверьте, это вовсе не просто) и определить все существующие в программе связи.
Вы спросите, к чему это я? А к тому, что любая автоматизированная таблица Microsoft Excel по сути та же программа. Стало быть качество результата ее работы зависит от количества допущенных в ней ошибок. Не на ту ячейку сослались и... оказалось, что, вместо прибыли, при тех же вводных, предприятие сидит в долгах, как в шелках. Все, естественно, рады, ибо налоги можно не платить. Особую радость всякие там ошибки в расчетах, по известным причинам, вызывают у налоговой инспекции...
Только без паники. Не одни мы такие начинающие. Стало быть есть основания полагать, что такой универсальный прикладной пакет, как Microsoft Excel, наверняка имеет какое-нибудь средство для не слишком внимательных. И основания вовсе не беспочвенные. Если заглянуть в меню "СЕРВИС", то среди всего прочего там обнаружится пункт "ЗАВИСИМОСТИ", которым мы в этот раз и займемся.
Независимо от того, сами вы разрабатываете таблицу или получили ее в пользование со стороны, всегда возникает одна и та же задача - определить, какая ячейка участвует в какой-нибудь цепочке связей, и в какой именно. Это тем более актуально, если таблица подлежит кардинальной модернизации. Вообще-то, правила хорошего тона в программировании рекомендуют (относительно таблиц) широко использовать уникальные личные имена значащих ячеек, но если их более полутора десятков на каждом рабочем листе, то и это не спасает. Поди скажи с гарантией, что конкретно учитывается в ячейках столбца под названием "Итог". По этой причине в Microsoft Excel и был предусмотрен набор специализированных инструментов для оказания быстрой и действенной помощи пользователям.
Возьмем простой пример автоматизированной таблицы, вычисляющей три базовых финансовых показателя за шесть месяцев хозяйственной деятельности гипотетического предприятия. Тут нужно внести некоторую ясность. Данная контора продает два вида товаров: изготавливаемых самостоятельно и получаемых по консигнации (столбцы "В" и "С", соответственно). Естественно, себестоимость продукции также разнится (столбцы "D" и "E", соответственно). Только себестоимость собственной продукции для каждого месяца уникальна, а консигнация "приносит" стандартный "процент" (в примере использована ставка в десять процентов). Поэтому значения столбца "Е" вычисляются как девяносто процентов от объема продаж чужого товара в конкретном месяце. Прибыль, естественно, вычисляется как сумма разниц между реализацией и себестоимостью каждой группы товаров. Графа " Итого", само собой разумеется, складывает числа по столбцам. А в левом верхнем углу таблицы расположены итоговые результаты всей таблицы в целом, также получаемые посредством ссылок и вычислений. Естественно, любой бухгалтер за голову схватится при виде такой математики, да не в этом суть. Суть в том, что пример прекрасно иллюстрирует сложную таблицу с массой взаимозависимых ячеек и ссылок.
Теперь представим себе простую ситуацию: вам представлена такая вот таблица, и ее разработчик, счастливый от получения 1 797 761 рублей вожделенной прибыли, метнулся в ближайший магазин за пивом, а вам кажется, что что-то в расчетах не стыкуется. Можно, конечно, все самому пересчитать заново, но куда проще и быстрее проверить верность связей и формул в уже имеющейся таблице. В ручном режиме это может занять до сорока минут на ползание по ячейкам и выяснение смысла хранящихся в них символов. Но если воспользоваться встроенными мастерами анализа связей, то и разработчика можно не ждать, Microsoft Excel сам все расскажет и покажет.
Вот, к примеру, первый логичный вопрос: откуда берется значение ячейки "В1" ( Реализация)? Всего-то, что нужно для получения ответа, это выделить указанную ячейку, открыть режим "ЗАВИСИМОСТИ" в меню "СЕРВИС" и вы брать там команду "ВЛИЯЮЩИЕ ЯЧЕЙКИ". Мастер анализа связей "пробежится" по таблице и выявит те ячейки, значение которых непосредственно влияет на результат в области выделения. По окончанию работы (то есть практически сразу) мастер выделит тонкой синей рамкой те ячейки, содержимое которых имеет непосредственное влияние на выделенную ячейку, а чтобы вы ничего не перепутали, он еще и стрелкой покажет, что и куда попадает. Источник отмечается жирной точкой, а получатель - стрелкой. Только не подумайте, что все это я сам рисовал, делать больше нечего, когда компьютер и сам неплохо справляется. Кстати, чтобы убрать с экрана все эти художества (а с самими данными ничего не происходит, это к сведению), достаточно опять обратиться в "СЕРВИС/ЗАВИСИМОСТИ" и выбрать там "УБРАТЬ ВСЕ ЗАВИСИМОСТИ".
Теперь возьмем второй вопрос, тоже весьма и весьма уместный: где, например, учитывается объем реализации собственной продукции за апрель (ячейка "В9")? Вместо того чтобы искать вручную, вполне уместно "напрячь" мастер. Выделите соответствующие продажи за апрель и в "СЕРВИС/ЗАВИСИМОСТИ" выберите режим "ЗАВИСИМЫЕ ЯЧЕЙКИ". В результате мастер выделит жирной черной рамкой исходную ячейку, а стрелками укажет те места, где ее содержимое участвует в каком-либо действии.
Хочу обратить ваше внимание, что мастер зависимостей показывает только наличие и направление связей, но не их характер. Так, в последнем примере мастер показал, что объем апрельских продаж собственной продукции участвует в формировании результата двух ячеек, в графах " Итого" и " Прибыль", но что там с ним делается - остается за кадром. Правда, теперь совсем несложно выделить любую из зависящих ячеек и посмотреть, что там делается с данными.
Теперь приступим к самому интересному и даже в чем-то немножко магическому. Предположим, что где-то в недрах огромной таблицы притаилась ошибка. Для примера я принудительно вбил, вместо продаж консигнационного товара за месяц март, чисто текстовую абра-кадабру. Так как операция суммирования оперирует исключительно цифрами и числами, то, наткнувшись на нечто малопонятное, она тут же выдает сообщение "#ЗНАЧ!" (ошибка значения), которое появляется везде, где используется результат работы этой функции. В том числе и во всех зависимых ячейках. Конечно, использованную мною "вчпятку" несложно выловить и одним лишь взглядом, она проста и очевидна. Но если ошибка происходит по вине какого-нибудь подключенного макроса, модуля Visual Basic или по причине "особых взглядов" одной из многочисленных "умных" встроенных функций, то ее можно искать сутками. Поэтому куда удобнее заставить заняться поиском причины ошибки сам компьютер.
В уже знакомом мастере "ЗАВИСИМОСТИ" меню "СЕРВИС" есть любопытная команда "ИСТОЧНИК ОШИБОК". Это просто гениальное изобретение, скажу я вам. Выделите, например, ячейку "В3" ( Прибыль) и скажите "ИСТОЧНИК ОШИБОК". Мастер пройдется "назад" по цепочке связей, покажет ее саму и точно укажет, с какого места в формулах начинается сбой. Синими стрелками показан поток данных, обработка которых приводит к ошибке. Красными - весь дальнейший путь передачи ошибки по цепочке зависимых ячеек, что позволяет быстро найти то место, откуда "что-то пошло не так". Просто, быстро и, что самое главное, наглядно.
Таким образом, буквально "не отходя от кассы", автоматизированная таблица "разбирается" на составляющие, что тот автомат Калашникова. При этом мастер аккуратными цветными стрелками покажет КАК взаимосвязаны представленные данные. Удобнее не бывает!
И последнее, это уже чисто практический совет, если у вас возникла всего пара вопросов к таблице, то можно вызывать мастер через панель меню, как я это описывал выше. Но если вы собрались подойти к вопросу "плотно" и серьезно, то каждый раз лазить мышью по выпадающим спискам уж больно накладно. Кликните мышью (не важно зачем) раз эдак пятьсот, пусть даже в течение нескольких часов, сразу поймете о чем это я. Так вот, для экономии собственного здоровья и сил (про тоннельный синдром, полагаю, все слышали), когда потребуется частенько пользоваться различными режимами работы мастера анализа зависимостей, имеет смысл вывести на экран всю инструментальную панель этого мастера. Делается сие командой "ПАНЕЛЬ ЗАВИСИМОСТЕЙ", расположенной в окне уже известного вам мастера.
На этой панели расположены и некоторые другие полезные инструменты. Из системного меню, к примеру, нельзя избирательно отменить какие-то конкретные стрелки. Либо все сразу, либо ничего. А с инструментальной панели можно убрать отдельно стрелки зависимых ячеек, не затронув другие обозначения. Потом с панели можно присоединить к любой ячейке текстовый, графический и даже звуковой комментарий. Это удобно, когда анализируемая таблица отличается необъятностью размеров и особой запутанностью всяких связей и нужно где-то записывать какие-то свои наблюдения или пожелания.
На этом, пожалуй, про анализ зависимостей можно и закончить. Однако я настоятельно рекомендую вам самостоятельно поэкспериментировать, это не менее увлекательно, чем "Санта-Барбара" и "Сансет-Бич" вместе взятые.
Александр Запольскис E-mail: leshy@nestor.minsk.by - титульная страница
Компьютерная газета. Статья была опубликована в номере 29 за 1998 год в рубрике soft :: субд