Темы статей
Выбрать темы

Секретное оружие: массивы Excel

Редакция БК
Ответы на вопросы

Секретное оружие: массивы Excel

 

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

В. Ивахненко, г. Харьков

Отвечает Николай КАРПЕНКО, канд. техн. наук, доцент кафедры прикладной математики и информационных технологий Харьковской национальной академии городского хозяйства

 

Есть несколько способов решения этой проблемы. Но вначале объясню подробнее нашим читателям, о чем идет речь.

Обратимся к таблице на рис. 1. Такие формы отчетов сплошь и рядом встречаются в практике любого бухгалтера. На первый взгляд перед нами

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

img 1

 

img 2

Excel все сделал правильно. В итоговое значение по приходу за «

01/09/09» в размере 600 шт он включил данные только для места хранения «Осн. склад» из второй строки рабочего листа. Для остальных записей за «01/09/09» в поле «Дата» стоят пустые значения. Эти приходы Excel перенес в итоговую строку с названием «(пусто)».

Решение очевидно:

нужно заполнить все значения дат, продублировав соответствующие ячейки в колонке «А». Иными словами, перед обработкой данных нужно построить таблицу, как на рис. 3.

img 3

Конечно, для нашего примера в 17 строк на решение задачи уйдет не больше одной минуты. Но бухгалтер работает с

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

Ускорить процесс можно, по крайней мере, тремя способами: при помощи формул, массивов и с использованием макросов. На мой взгляд, самый удобный из них — это работа с

массивами. С него и начнем.

 

Заполнение ячеек через функцию массива

Чтобы воспользоваться этим приемом, делаем так:

1) открываем документ. У нас это таблица, как на рис. 1;

2) выделяем колонку «

A» (поле «Дата»);

3) вызываем меню «

Правка Перейти…» или нажимаем «Ctrl+G». Появится окно, изображенное на рис. 4;

img 4

4) в окне щелкаем на кнопке «

Выделить». Появится окно «Выделение группы ячеек», как на рис. 5;

img 5

5) в этом окне устанавливаем переключатель «

Пустые ячейки» и нажимаем «ОК». Excel выделит пустые ячейки в колонке «A»;

6)

не снимая выделения, вводим в первую ячейку знак «=» (равно) и щелкаем по предыдущей ячейке. То есть в «A3» (рис. 1) создаем ссылку на предыдущую ячейку («A2»);

7) нажимаем на «

Ctrl+Enter». Excel заполнит формулой все выделенные ячейки. Таблица примет вид, как на рис. 3.

Важно!

При вводе формулы нажимать нужно именно «Ctrl+Enter». Это и есть команда создания формулы-массива. Если нажать просто «Enter», ничего не получится.

На мой взгляд,

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

 

Заполнение ячеек

при помощи формул

Второй способ решения проблемы основан на обычных формулах. Делаем так:

1) в ячейку «

E1» пишем заголовок новой колонки. Я назвал ее «Дата_»;

2) в «

E2» вводим формулу «=ЕСЛИ(A2=″″;E1;A2)»;

3) копируем формулу на всю высоту таблицы. Получаем результат, как на рис. 6.

img 6

Теперь при формировании сводного отчета вместо поля «

Дата» можно использовать «Дата_».

Если рабочую колонку оставлять не хочется, перенесите значения из поля «

Дата_» в колонку «Дата». Только не забудьте, что копировать нужно значения. Для этого делаем так:

1) выделяем блок данных в колонке «

Дата_» (в нашем примере это «E2:E17»);

2) копируем их в буфер обмена («

Ctrl+C»);

3) делаем активной ячейку «

A2»;

4) вызываем «

Правка Специальная вставка…», в окне настройки параметров (рис. 7) ставим переключатель «Значения» и нажимаем «ОК»;

img 7

5) колонку «

Дата_» удаляем.

Задача решена, способ работает. Правда, у него есть

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

 

Используем макрос

Для желающих поработать с VBA могу посоветовать такой способ:

1) открываем исходную таблицу (рис. 1);

2) щелкаем правой кнопкой на ярлычке рабочего листа с базой данных. Откроется окно редактора Visual Basic;

3) вводим текст программы:

 

Sub CellNotEmpty()

For Each cel In Selection

If cel.Offset(1, 0) = ″″ Then cel.Offset(1, 0) = cel

Next

End Sub

 

4) закрываем окно Visual Basic и сохраняем файл.

Чтобы выполнить макрос, делаем так:

1) открываем документ (рис. 1);

2) выделяем блок ячеек для заполнения («

A2:A17»);

3) заходим в меню «

Сервис Макрос Макросы…». Появится окно со списком доступных макросов;

4) находим в списке «

CellNotEmpty» и нажимаем кнопку «Выполнить».

Таблица примет форму, как на рис. 3.

Важно!

Макрос «Sub CellNotEmpty» заполнит одну лишнюю ячейку в конце выделенного диапазона. Это следствие максимального упрощения текста программы. Лишнее значение нужно удалить, а лучше изначально выделить блок на одну ячейку меньше. То есть вместо «A2:A17» указываем «A2:A16».

Основной недостаток работы с макросом

  после его выполнения нельзя воспользоваться функцией «Откат».

И последний момент.

Проблема заполнения пустых ячеек часто возникает при работе с меню «Итоги». А это — один из основных инструментов бухгалтера. Поясню на конкретном примере.

Берем базу на рис. 1. Я хочу увидеть приходы по каждому месту хранения

и (!) за каждую дату. Для этого делаем так:

1) ставим указатель активной ячейки в область базы данных. Вызываем «

Данные Сортировка…»;

2) в поле «

Сортировать по» выбираем «Дата», в поле «Затем по» ставим «Место хранения»;

3) нажимаем «

ОК». Теперь исходная таблица отсортирована по датам, а внутри дат — по местам хранения;

4) вызываем «

Данные Итоги…» и заполняем окно, как показано на рис. 8. Ключевым полем у нас будет «Место хранения». В качестве обработки мы выбрали операцию суммирования по полю «Кол.». В результате Excel после каждого изменения в поле «Место хранения» вставит строку итогов, в которой посчитает сумму по полю «Кол.». Результат обработки показан на рис. 9;

img 8

 

img 9

5) уменьшим детализацию, оставив на экране только итоговые значения. Для этого щелкаем на кнопке группировки с надписью «

2» (рис. 9). Получим таблицу, как на рис. 10. В ней мы видим информацию о местах хранения. Но в колонке «Дата» все ячейки оказались пустыми: при работе с итогами Excel заполнил только суммы и столбец с ключевым полем. Ликвидируем этот пробел;

img 10

6) щелкаем на кнопке группировки с надписью «

3», чтоб вернуться к таблице на рис. 9;

7) выделяем колонку «

A» (поле «Дата»);

8) вызываем меню «

Правка Перейти…» или нажимаем «Ctrl+G». Появится окно «Переход»;

9) щелкаем на кнопке «

Выделить». Появится окно «Выделение группы ячеек» (рис. 5);

10) в окне устанавливаем переключатель «

Пустые ячейки» и нажимаем «ОК». Excel выделит все пустые ячейки в колонке «А». Первая из них будет «A4»;

11) не снимая выделения, вводим в «

A4» формулу «=A3»;

12) нажимаем «

Ctrl+Enter». Excel заполнит все пустые ячейки в колонке «Дата»;

13) щелкаем на кнопке группировки с надписью «

2», чтобы свернуть таблицу до второго уровня детализации. Результат показан на рис. 11. Теперь в таблице видны и даты прихода, и места хранения ТМЦ.

img 11

 

Жду ваших вопросов, замечаний и предложений на

bk@id.factor.ua, nictomkar@rambler.ru или на форуме редакции www.bk.factor.ua/forum . Удачной работы!
App
Скачайте наше мобильное приложение Factor

© Factor.Media, 1995 -
Все права защищены

Использование материалов без согласования с редакцией запрещено

Ознакомиться с договором-офертой

Присоединяйтесь
Адрес
г. Харьков, 61002, ул. Сумская, 106а
Мы принимаем
ic-privat ic-visa ic-visa

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

Спасибо, что читаете нас Войдите и читайте дальше