972 0

«Умное» копирование формул в MS Excel

21.01.13
Копирование данных — едва ли не самая востребованная операция при работе с MS Excel. Как, впрочем, и с любым другим приложением Windows. Но Excel в этом плане имеет одну особенность. Операция копирования в этой программе не просто дублирует данные, — она попутно изменяет ссылки в формулах, выстраивает правильную систему адресов. И это очень важный момент при разработке электронных таблиц. В подавляющем большинстве случаев проблем в данном вопросе не возникает. Тем не менее, недавно мне попался документ, когда стандартные инструменты копирования формул оказались малоэффективны. В результате, провозившись с отчетом около получаса, я пришел к выводу, что мне нужен другой, более быстрый способ решения проблемы. В чем он состоит и где может быть полезен практикующему бухгалтеру, я расскажу в этой статье.


 

Традиционно начнем с задачи. То есть выясним: что нужно получить и в чем заключается проблема. Итак, нужно построить сравнительную таблицу показателей для оценки хозяйственной деятельности группы предприятий. В документе они называются «участники инвестиционной деятельности». Форма этого документа показана на рис. 1. В первой колонке таблицы (она расположена на листе с именем «СрТбл») перечислены наименования показателей. Справа находятся их значения. Эти значения сгруппированы по предприятиям. Причем для каждого предприятия показатели отражены в динамике за период 2008 — 2012 гг.

Формулы для расчета показателей известны. Этими формулами мы и собираемся заполнить итоговую таблицу.

Теперь относительно данных для расчета. Они берутся из стандартных документов финансовой отчетности — «Форма 1», «Форма 2», «Форма 3». Данные в документах показаны реальные. Единственное, что я изменил, — это убрал названия предприятий, заменил их на ничего не значащую аббревиатуру. Причина такого действия, думаю, понятна.

Каждый из документов оформлен в виде отдельного листа MS Excel. То есть для каждого предприятия есть свой лист с документом «Форма 1», отдельный лист с документом «Форма 2» и т. д. Эти листы собраны в одной рабочей книге вместе с итоговым документом. И (что очень важно!) все листы имеют одинаковую структуру. То есть если показатель «Залишкова вартість» в документе «Форма 1» для предприятия «СНЭМ» находится на листе «СНЭМф1» в ячейке «C4», то для остальных предприятий он расположен точно в такой же ячейке, только на других листах. Фрагменты документов «Форма 2» и «Форма 3» показаны на рис. 2 и 3.

 

Наша задача — заполнить лист «СрТбл» расчетными формулами для одного предприятия и попытаться скопировать эти формулы на всю таблицу. Приступим.

 


Вводим формулы в итоговый отчет

Разумеется, вводить все формулы в итоговый документ мы не будем. Практического смысла в этом нет никакого. Зато есть риск потерять главную нить этой статьи. Чтобы понять суть проблемы, нам достаточно ограничиться буквально парой значений, и не более того. Что же касается подробного отчета со всеми показателями, вы можете скачать его на сайте редакции по адресу www.bk.factor.ua. Начнем с пятой строки таблицы на рис. 1. Чтобы заполнить ее формулами, делаем так.

1. Открываем документ, переходим на лист «СрТбл» с итоговым отчетом.

2. Становимся на ячейку «B5».

3. Вводим в нее формулу «=СНЭМф2!C55». Для этого щелкаем мышью на ярлычке листа «СНЭМф2» (документ «Форма 2» предприятия «СНЭМ»). Затем щелкаем на ячейке «C55» и нажимаем «Enter».

4. Возвращаемся на лист «СрТбл».

5. Оставаясь на ячейке «B5», копируем формулу в буфер обмена (комбинация «Ctrl+C»).

6. Выделяем блок ячеек «C5:F5».

7. Вставляем содержимое из буфера обмена (комбинация «Ctrl+V»). Пока все верно. В ячейках «С5:А5» мы получили правильные ссылки на ячейки листа «СНЭМф2» (рис. 3).

8. Переходим на ячейку «B6». Здесь должна быть формула «=СНЭМф2!C38/СНЭМф1!C63» со ссылками на два листа с документами «Форма 1» и «Форма 2». Разумеется, такую формулу тоже удобно вводить, щелкая мышью на ячейках рабочих листов.

9. Далее копируем формулу в ячейки «C6:F6». И таким же способом заполняем расчетную часть, двигаясь вниз до конца итогового отчета.

До этого момента все идет нормально. В результате наших действий мы заполнили таблицу формулами для одного предприятия. Изначально каждая формула рассчитывала определенный показатель на 2008 год. Но мы воспользовались тем фактом, что в документах «Форма 1» и «Форма 2» расположение исходных значений в динамике в точности совпадает с итоговым документом. Скопировав формулы на четыре ячейки вправо, мы получили показатели для одного предприятия по всем периодам начиная с 2009 по 2012 год. Настало время скопировать эти результаты для остальных предприятий итоговой таблицы. Казалось бы, все просто. Но не тут-то было.

 


В чем заключается проблема

При заполнении формулами отчета, изображенного на рис. 1, возникает как минимум два вопроса.

 

1. Как изменить названия листов?

Сейчас в итоговой таблице у нас есть готовые формулы для определения показателей по одному конкретному предприятию. Эти формулы мы должны скопировать вправо так, чтобы получить показатели для оставшихся участников инвестиционной деятельности. Исходные данные для этих расчетов находятся на других листах рабочей книги. Разумеется, что в новых формулах должны фигурировать именно эти, обновленные названия листов. Например, в ячейке «B5» стоит формула «=СНЭМф2!C55». Она определяет значение показателя «Чистая прибыль (убыток) на одну простую акцию» для предприятия «СНЭМ». В ячейке «G5» должна появиться формула для определения такого же показателя по предприятию «КВСЗ». Выглядит эта формула так: «=КВСЗф2!C55» (отличия в этих выражениях выделены полужирным начертанием). Заново вводить каждую формулу, указывая новые ссылки на рабочие листы, долго и непродуктивно. Нужно придумать другой способ решения задачи.

Кстати, обратите внимание, что в указанных формулах отличаются только названия листов. Адреса ячеек в них полностью совпадают. И отсюда возникает второй вопрос.

 

2. Что делать с адресацией ячеек?

В наших формулах все ссылки используют обычную адресацию ячеек. Когда мы копировали эти формулы в пределах одного предприятия, все было хорошо. Такой способ адресации был нам очень кстати. Например, формула «=СНЭМф2!C55» из ячейки «B5», будучи скопированной в блок «C5:F5», породила результаты «=СНЭМф2!D55», «=СНЭМф2!E55», «=СНЭМф2!G55». И это правильно.

Но теперь мы должны заполнить формулами блок «G5:K5». Эти формулы будут ссылаться на лист «КВСЗ», но адреса колонок в них должны оставаться неизменными! Например, в ячейке «G5» должно получиться «=КВСЗф2!C55», в ячейке «H5» — «=КВСЗф2!D55» и т. д. То есть в новых формулах адреса ячеек остаются, меняются только названия листов. Поэтому обычное копирование формул из блока «C5:F5» в «G5:K5» нам не подходит, так как в результате поменяются адреса колонок, после чего корректировать их придется вручную. А это потребует времени и усилий, причем немалых. Но не все так плохо. Посмотрим, что можно сделать в создавшейся ситуации.

 


Пути ее решения

Для быстрого копирования формул в итоговой таблице (лист «СрТбл») можно использовать два подхода: копировать формулы как текст или задействовать вспомогательный рабочий лист. Каждый способ имеет свои преимущества и недостатки. Мы рассмотрим оба варианта, а там решим, какой из них лучше и почему.

 

Копирование формул в режиме текста

Этот прием позволяет в определенной степени справиться с проблемой номер «2», т. е. уйти от неоправданной корректировки адресов при копировании формул. Делаем так:

1. Открываем документ, переходим на рабочий лист «СрТбл».

2. Становимся на ячейку «B5» этого листа.

3. Нажимаем клавишу «F2». Станет доступным для редактирования содержимое ячейки.

4. Выделяем текст формулы и копируем его в буфер обмена (комбинация «Ctrl+C»).

5. Нажимаем клавишу «Esc» (возвращаемся на рабочий лист).

6. Становимся на ячейку «G5» и вставляем в нее содержимое буфера обмена (комбинация «Ctrl+V»). Теперь в ячейке «G5» находится точная копия формулы из ячейки «B5», — «=СНЭМф2!C55». Заметьте, что адреса колонок Excel не изменил, так как мы скопировали не фрагмент рабочего листа в виде ячейки, а ее содержимое, т. е. текст.

7. Копируем формулу из «G5» в ячейки «H5:K5» обычным способом. В данном случае Excel исправит номера колонок, и это как раз то, что нам нужно!

8. Повторяем аналогичные действия для оставшихся строк итоговой таблицы.

С адресацией колонок мы справились. Остается откорректировать названия листов. Разумеется, что вручную мы этого делать не будем. Сейчас самое время вспомнить, что формулы — это обычный текст. А это значит, что работать с ними можно инструментом поиска и замены. Делаем так:

1. Открываем документ, переходим на лист «СрТбл».

2. Становимся на ячейку «G5».

3. Нажимаем клавишу «F2» (входим в режим редактирования ячейки).

4. В тексте формулы выделяем название листа. Это будет часть текста, которая выделена полужирным начертанием: «=СНЭМф2!C55».

5. Копируем этот текст в буфер обмена (комбинация «Ctrl+C»).

6. Нажимаем клавишу «Esc», чтобы вернуться на рабочий лист.

7. Выделяем блок колонок «G:K».

8. Вызываем инструмент «Поиск и замена». Удобнее всего это сделать по комбинации «Ctrl+H». Откроется окно «Найти и заменить», изображенное на рис. 4.

9. В этом окне становимся на поле «Найти:» и вставляем содержимое из буфера (комбинация «Ctrl+V»). В результате в этом поле должен появиться текст «СНЭМф2».

10. Переходим на поле «Заменить на:» и вводим новое название листа. В нашем примере — это «КВСЗф2».

11. Нажимаем кнопку «Заменить все» (рис. 4). Через пару секунд появится сообщение о том, что мы откорректировали в документе 245 формул (рис. 5).

12. Таким же способом заменяем названия остальных листов, которые встречаются в формулах.

13. Повторяем аналогичные действия для заполнения оставшейся части итоговой таблицы по всем предприятиям.

Думаю, идея понятна. В данный момент мы сформировали на листе расчет показателей для двух предприятий. Чтобы расширить таблицу дальше и сформировать расчеты для остальных участников инвестиционной деятельности, мы должны повторить всю процедуру с самого начала: вначале скопировать формулы в текстовом режиме, затем контекстной заменой откорректировать номера листов. Окончательный вариант таблицы показан на рис. 6. В принципе такой подход имеет право на жизнь. Но я предлагаю посмотреть еще один, не мене быстрый способ решения задачи.

 

Копирование формул через вспомогательный рабочий лист

Если внимательно присмотреться, то в предыдущем примере больше всего времени мы потратили на копирование текстов формул из колонки «В» в колонку «G». Для небольших документов это незаметно. Но в нашем случае ситуация другая: в таблице на рис. 1 собрано 56 показателей. Исходя из этого, придется 56 раз скопировать формулу в текстовом режиме, после чего повторить эту процедуру для каждого предприятия. А таких предприятий в таблице 15… Нетрудно посчитать, что в итоге процесс копирования формул придется повторить 840 раз! Разумеется, что делать это, мягко говоря, не хотелось бы. Тем более, что есть простой способ решения этой проблемы. Принцип наших действий будет такой.

За основу мы возьмем рабочий лист «СрТбл», в котором есть готовые формулы для одного предприятия. Напомню, что на рис. 1 — это колонки «B:F». Затем мы создадим точную копию этого листа. При такой операции все ссылки, имена листов и адреса ячеек сохранятся. Формулы в блоке «B:F» на новом листе будут работать правильно. Теперь самое время вспомнить об операции «Вырезать» программы MS Excel. Дело в том, что при перемещении данных в пределах листа (или между листами) Excel не корректирует адреса ячеек. И в этом смысле такая операция похожа на копирование формул в текстовом режиме. Таким образом мы можем переместить блок с формулами с рабочего листа на лист «СрТбл» и тем самым решить проблему. Посмотрим, как это выглядит практически. Делаем так:

1. Открываем документ, ставим указатель мыши на ярлычок листа «СрТбл».

2. Удерживая клавишу «Ctrl», перетаскиваем его в сторону в пределах области ярлыков MS Excel (вправо или влево — без разницы).

3. Отпускаем клавишу «Ctrl». В книге появится новый лист с именем «СрТбл (2)». Переходим на этот лист. Смотрим на формулы — они здесь точно такие же, как и на листе «СрТбл».

4. Выделяем блок колонок «B:F» на листе «СрТбл (2)».

5. Вырезаем этот блок в буфер обмена (можно воспользоваться комбинацией «Ctrl+X»).

6. Возвращаемся на лист «СрТбл».

7. Становимся на ячейку «G1», — с колонки «G» мы собираемся вставить новые формулы.

8. Нажимаем «Ctrl+V» — вставляем содержимое из буфера обмена. В колонках «G:K» появятся те же значения, что и в блоке «B:F».

Здесь я предлагаю сделать паузу и посмотреть на формулы в ячейках блока «G:K». Благодаря тому, что мы переместили данные при помощи функции «Вырезать», Excel не изменил адреса ячеек и все формулы в блоке «G:K» в точности повторяют соответствующие выражения блока «B:F». Похожий результат мы уже получали, копируя тексты формул. Но теперь нам удалось заполнить всю таблицу за один прием.

Важно! Переносить данные с листа «СрТбл (2)» на лист «СрТбл» нужно только при помощи операции «Вырезать». И это — принципиальный момент данного приема. Копировать данные с листа на лист в данном случае нельзя, (так как Excel откорректирует ссылки, а наши усилия потеряют всякий смысл.

А дальше остается действовать по известной схеме — изменить названия листов. Делаем так.

1. Выделяем блок колонок «G:K».

2. Нажимаем «Ctrl+H». Откроется окно «Найти и заменить», как на рис. 3.

3. В этом окне становимся в поле «Найти:», вводим название листа «СНЭМф2».

4. В поле «Заменить на:» вводим «КВСЗф2».

5. Нажимаем кнопку «Заменить все».

6. Аналогичным образом заменяем названия всех листов, которые фигурируют в формулах блока «G:K».

7. Повторяем копирование формул для остальных предприятий итогового отчета.

Все, мы достигли желаемого результата, таблица готова. И в завершение пару слов относительно эффективности и применимости описанных приемов. Я прекрасно понимаю, что сравнительную таблицу показателей участников инвестиционной деятельности формирует не каждый бухгалтер. Но это не меняет дело. Отчеты и формы приходят и уходят, а приемы и принципы работы остаются… И когда в вашей практике встретится таблица, где копирование формул не позволяет быстро справиться с задачей, советую освежить в памяти материал этой статьи. И вот почему. Обратимся к цифрам. В отчете на рис. 3 изначально было 56 показателей и 20 предприятий. Я не поленился и заполнил его три раза. В первом случае я пользовался обычными приемами работы в MS Excel: набрал формулы для одного предприятия, скопировал их, заменил относительные адреса абсолютными ссылками и т. д. Такая работа заняла у меня около 43 минут. Копирование формул в режиме текста сократила это время почти вдвое, я справился с задачей за 23 минуты. Способ копирования данных через вспомогательный лист побил все рекорды: на подготовку отчета у меня ушло около четырех минут — почти в 10 раз быстрее первого способа! Вот такая арифметика.

 

На сегодня все. До новых встреч! Жду ваши вопросы, замечания и предложения на bk@id.factor.ua, nictomkar@rambler.ru или на форуме редакции www.bk.factor.ua/forum.



Помітили помилку? Виділіть її та натисніть Ctrl+Enter, щоб повідомити нас про це
загрузка...
Коментарі (0)