The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

Формулы в Microsoft Excel 2010 ( PDFDrive )

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by sergiu.sulima, 2022-05-22 12:49:43

Формулы в Microsoft Excel 2010 ( PDFDrive )

Формулы в Microsoft Excel 2010 ( PDFDrive )

Глава 14. Знакомство с массивами 361

Элементы массива констант

Массивыконстант могут состоятьизчисел, текста, логическихзначений(например,
ИСТИНА, ЛОЖЬ) идажезначенийошибки(такихкак#Н/Д). Числавмассивемогутбыть
целыми, сдесятичной точкой или вэкспоненциальномформате. Текст вмассиве кон­
стантзаключаетсявдвойныекавычки(например, "В то р н и к " ). Массивконстантможет
состоятьизэлементовразноготипа, какпоказановследующемпримере:
{ 1 ; 2 ; 3 ; ИСТИНА; ЛОЖЬ; ИСТИНА; " В а с я " ; " П е т я "}

Массивыконстантнемогутвключатьвсебяформулы, функцииилидругиемассивы.
Числовыезначения недолжнысодержать символыдоллара, точки с запятой, круглые
скобкиилисимволпроцента. Например, нижеприведенневерныймассивконстант.
{КОРЕНЬ( 3 2 ) ; $ 5 6 , 3 2 / 1 2 , 5 % }

Концепция размерности массива

Как уже отмечалось, массивыExcel могут быть одномерными или двухмерными.
Ориентацияодномерногомассиваможетбытьгоризонтальнойиливертикальной.

Одномерные горизонтальные массивы

Элементыв одномерномгоризонтальном массиве разделяются точкой с запятой1.
Нижеприведенпримеродномерногогоризонтальногомассиваконстант.
{1; 2 ; 3 ; 4 ; 5 }

Дляотображенияэтогомассивавдиапазонепотребуетсяпятьпоследовательныхяче­
еквстроке. Чтобыввестиэтот массиввдиапазон, выделитедиапазонячеек, состоящий
изоднойстроки ипяти столбцов. Затемвведите формулу ={1;2;3;4;5} инажмите
<Ctrl+Shift+Enter>.

Если ввестиэтот массив вгоризонтальныйдиапазон, состоящий болеечемиз пяти
ячеек, толишниеячейкибудут содержать#Н/Д(чтоуказываетнанедопустимыезначе­
ния). Есливвестиэтотмассивввертикальныйдиапазонячеек, товкаждойячейкедиапа­
зонапоявитсяпервыйэлемент(1) массива.

Ниже приведен пример еще одного горизонтального массива. Он состоит из семи
элементовисоздаеттекстовуюпоследовательность.
{"Понедельник"; "Вторник"; "Среда"; "Четверг"; "Пятница";
"Суббота"; "Воскресенье"}

Длявводаэтогомассивавыделитесемьячееквстрокеивведитеследующуюформулу:
={"Понедельник"; "Вторник"; "Среда"; "Четверг"; "Пятница";
"Суббота"; "Воскресенье"}

Нажмите<Ctrl+Shift+Enter>.

1Символы разделителей определяются региональными настройками операционной систе­
мы. — Примеч. ред.

362 Часть IV. Формулы массивов

Одномерные вертикальные массивы

Элементыводномерномвертикальноммассиве разделяются двоеточием(точкой с
запятойванглийскойверсиипрограммы). Нижеприведенпримервертикальногомасси­
ваконстант, состоящегоизшестиэлементов.
{10:20:30:40:50:60}

Дляотображенияэтогомассивавдиапазонепотребуетсяшестьячееквстолбце. Что­
быввестиэтотмассиввдиапазон, выделитедиапазонячеек, состоящийизшестистроки
одногостолбца. Затемвведитеприведеннуюнижезаписьинажмите<Ctrl+Shift+Enter>.
={10:20:30:40:50:60}

Ниже приведен пример ещеодного вертикального массива, состоящего из четырех
элементов.
{ "Иванов": "Петров": "Сидоров": "Итого"}

Двухмерные массивы

Вдвухмерныхмассивахиспользуетсяточкасзапятой(запятаяванглийской версии
программы) для разделения горизонтальных элементов и двоеточие (точка с запятой
ванглийскойверсиипрограммы) дляразделениявертикальныхэлементов. Нижеприве­
денпримермассиваконстантразмерностью3x4.
{1;2;3;4:5;6;7;8:9;10;11;12 }

Для отображенияэтогомассивавдиапазонетребуетсядвенадцатьячеек. Чтобывве­
стиегонарабочемлисте, выделитедиапазонячеек, состоящийизтрехстрокичетырех
столбцов. Затемвведитеследующуюформулу, послечегонажмите<Ctrl+Shift+Enter>:
={1;2;3;4:5;6;7;8:9;10;11;12 }

Рис. 14.2демонстрирует, какбудетвыглядетьэтотмассив, еслиеговвестивдиапазон
ячеек(вданномслучаевдиапазонВЗ : Е5).

Рис. 14.2. Массив 3x4, введенный в диапазон ячеек

Если ввести массиввдиапазон, состоящий из большего количестваячеек, чемсам
массив, Excel отобразит #Н/Двлишнихячейках. Нарис. 14.3показано, чтополучится,
есливвестимассив3x4вдиапазонячеек10x5.

Каждая строкадвухмерногомассивадолжнасодержать одинаковоеколичествоэле­
ментов. Например, представленный ниже массив не может существовать, так как его
третьястрокасостоиттолькоизтрехэлементов.
{1;2;3;4:5;6;7;8:9;10;11}

Excel не позволит ввести формулу, в которой присутствует недопустимый формат
массива.

Глава 14. Знакомство с массивами 363

Значение #Н/Д можно использовать в качестве заполнителя отсутствующего элемен­
та массива. Например, следующий массив синтаксически правильный.

={1; 2 ; 3 ; 4 : 5 ; 6 ; 7 ; 8 : #Н/Д;10;11;12}

Присвоение имен массивам констант

Можно создать массив констант, присвоить ему имя и затем использовать это имя
в формулах. Присвоение имени массиву сводится к присвоению имени формуле.

Перекрестная ссылка

В главе 3 объясняется понятие имени и описывается методика присвоения
имени формуле.

На рис. 14.4 показано, как присвоить имя массиву, используя диалоговое окно При­
своение имени. Чтобы открыть его, выберите команду Формулы^Определенные
именам Присвоить имя^ Присвоить имя.

Рис. 14.3. Массив 3x4, введенный в диапазон Рис. 14.4. Присвоение имени мас­
ячеек 10x5 сиву констант

Приведенному ниже массиву констант присвоено имя ДниНедели.

{ "Понедельник"; "Вторник"; "Среда"; "Четверг"; "Пятница";
"Суббота"; "Воскресенье"}

Отметим, что в диалоговом окне Создание имени для задания массива необходимо
использовать знак равенства (=). В противном случае массив будет воспринят как тек­
стовая строка. Также необходимо самостоятельно заключить элементы массива в фигур­
ные скобки. Excel в данном случае не вводит скобки автоматически.

После присвоения имени массиву это имя можно использовать в формулах. На рис. 14.5
представлен рабочий лист, в котором находится формула, вводящая массив в диапазон
А1:G1. Она имеет следующий вид.

{=ДниНедели}

Рис. 14.5. Использование имени массива в формуле массива

364 Часть IV. Формулы массивов

Таккакэлементымассиваразделяетточкасзапятой, ориентациямассивабудетгори­
зонтальной. Длясозданиявертикальныхмассивовиспользуетсядвоеточие. Такжеможно
воспользоваться функцией ТРАНСП ивставить горизонтальныймассивввертикальный
диапазонячеек(операциятранспонированиярассматриваетсядалее). Для этоговведите
вдиапазонизсемивертикальныхячеекследующуюформулумассива:
{=ТРАНСП(ДниНедели)}

ПрииспользованиифункцииИНДЕКС можнополучитьдоступкотдельномуэлементу
массива. Например, приведенная нижеформулавозвращает значение“Четверг”— чет­
вертыйэлементмассиваД н и Н е д е л и .
=ИНДЕКС(Д н и Н е д е л и ; 4 )

Работа с формулами массива

В этомразделе рассматриваются вопросывыделения ячеек, содержащих массивы,
атакжеобсуждаютсяпроблемывводаиредактированияформулмассива. Этипроцедуры
имеют определенные отличия от методов управления обычными диапазонами ячеек
иформулами.

Ввод формулы массива

Длятогочтобыпрограммазнала, какаявводитсяформула(массиваилиобычная), не­
обходимо при вводе формулымассивавдиапазонячеек придерживаться определенных
правил. Обычнаяформулавводитсявячейкупутемнажатия<Enter>, аформуламасси­
ва— путемнажатия<Ctrl+Shift+Enter>.

Формулумассиванесложноузнать: встрокеформулоназаключенавфигурныескоб­
ки. Например, следующаяформулаявляетсяформулоймассива:
{=СУММ(ДЛСТР(А1:А5)) }

Невводитефигурныескобкиприсозданииформулымассива. Excel вставит ихавто­
матическипринажатии<Ctrl+Shift+Enter>. Еслирезультат вычисленияформулымасси­
васостоит изнесколькихзначений, необходимовначалевыделить весьдиапазонячеек,
вкоторыйпомещаетсярезультат, итолькозатемприступатьквводуформулы. Еслиэто­
гонесделать, будетотображентолькопервыйэлементвозвращаемыхзначений.

Выделение диапазона формулы массива

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

• Активизируйтелюбуюячейку вдиапазонеформулымассива. Выберите команду
Главная^Редактирование^Найти и выделить^Выделение группы ячеек
илинажмитеклавишу<F5>. Установитепереключательтекущий массив. Щелк­
нитенакнопкеОКдлязакрытиядиалоговогоокна.

• Активизируйтелюбуюячейкувдиапазонеформулымассиваинажмите<Ctrl+/>
длявыделениявсегомассива. Есливключенарусскаяраскладкаклавиатуры, вко­
торойкосаячертаприведенавверхнемрегистре, нажмите<Ctrl+Shift+/>.

Глава 14. Знакомство с массивами 365

Редактирование формулы массива

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

Существует ряд правил, которых следует придержи­
ватьсяприработесформулоймассива, расположеннойв
ячейках. Если невыполнить хотя быодно из них, Excel
сразудастзнатьобэтом.

• Нельзя изменять содержимое отдельной ячейки,

входящейвформулумассива. Рис. 14.6. Excel напоминает о

невозможности редактирова-

• Нельзяперемещатьячейки, которыевходят вфор- ния только одной ячейки фор­

мулумассива(номожнопереместитьвсюформулу МУЛЫ массива

массива).

• Нельзя удалять ячейки, которые входят в формулу массива (но можно удалить
весьмассив).

• Нельзявставлятьновыеэлементывдиапазонмассива. Этоправилораспространя­
етсяинавставкустрокилистолбцов, которыедобавят новыеячейкивдиапазон
массива.

• Нельзяиспользоватьмногоячеечныеформулымассивавтаблице(имеетсяввиду
таблица, созданнаяспомощьюкомандыВставка^Таблицы^Таблица). Анало­
гично, еслидиапазонсодержит многоячеечнуюформулумассива, егонельзяпре­
образоватьвтаблицу.

Чтобыотредактировать формулымассива, выделите всеячейки егодиапазона. Пе­
рейдитевстрокуформул, щелкнуввнейилинажавклавишу<F2>. Excel удалит фигур­
ныескобкивокругформулы. Отредактируйтеформулуинажмите<Ctrl+Shift+Enter>для
сохранения внесенных изменений. Внесенные изменения будут отображены во всех
ячейкахмассива.

Предупреждение

Если после редактирования формулы массива по ошибке нажать <Ctrl+Enter>
(вместо <Ctrl+Shift+Enter>), формула будет введена в каждую выделенную
ячейку, но она уже не будет формулой массива. Соответственно, она, скорее
всего, вернет неправильный результат. Чтобы исправить ошибку, выделите
ячейки и нажмите сначала <F2>, а затем <Ctrl+Shift+Enter>.

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

Расширение или сокращение формулы массива

Часто возникает необходимость увеличить или уменьшить количество ячееквфор­
мулемассива. Дляэтогопотребуетсявыполнитьследующиедействия.

1. Выделитевесьдиапазон, содержащийформулу массива. Это можносделатьспо­
мощьюклавиш<Ctrl+/>(есливключенарусскаяраскладкаклавиатуры, вкоторой
символкосойчертырасположенвверхнемрегистре, нужнонажать<Ctrl+Shift+/>).

366 Часть IV. Формулы массивов

2. Нажмите<F2>дляпереходаврежимредактирования.

3. Нажмите<Ctrl+Enter>. Этодействиевводит одну иту жеформулу (неформулу
массива) вкаждуювыделеннуюячейку.

4. Изменитедиапазонвыделения, добавивилиисключивячейки.
5. Нажмите<F2>, чтобывновьвключитьрежимредактирования.

6. Нажмите<Ctrl+Shift+Enter>.

' Недостатки формул массива

Если проанализировать изложенный выше материал, можно прийти к выводу о ве­
сомых преимуществах формул массива. Конечно, главным преимуществом использо­
вания формул массива является возможность выполнения ранее недоступных методов
вычислений. Преимущества применения массивов очевидны, однако есть и сущ ест­
венные недостатки.

Ф ормулы массива являются одной из самых сложных возможностей Excel. Е стест­
венно, желательно избегать применения формул массива, если предполагается совме­
стное редактирование рабочей книги. М ногие пользователи Excel, сталкиваясь с ф ор­
мулами массива, чувствуют себя совершенно беспомощными.

Не забывайте нажимать <Ctrl+Shift+Enter> для ввода формулы массива. При редакти­
ровании существующего массива необходимо всякий раз использовать эту комбинацию
клавиш после завершения редактирования. Помимо логических ошибок, вышеуказанная
ошибка — наиболее распространенная среди пользователей. Если при редактировании
формулы массива по ошибке нажата клавиша <Enter>, необходимо нажать <F2>, т.е. вер­
нуться обратно в режим редактирования, и затем нажать <Ctrl+Shift+Enter>.

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

Использование многоячеечных формул массива

Этотразделсодержитпримеры, которыедемонстрируютдополнительныевозможно­
сти формул массива, возвращающих несколько значений (формулымассива, которые
вводятсявдиапазонячеек). Эти формулымассиваоткрывают новыевозможности: соз­
дание массивов из значений, использование операторов и функций, транспонирование
массивовигенерированиепоследовательныхчисел.

Создание массива на основе значений диапазона

Приведенная ниже формула создает массив значений вячейках. На рис. 14.7 пред­
ставленрабочийлист сданными, введеннымивдиапазонA I : С4. ДиапазонD 8 : F 1 1 со­
держитформулумассива.

{ =А1:С4}

Массив в диапазоне D 8 : F 1 1 связан с диапазономА 1 :С 4 . Внесение изменений в
диапазонAI:С4 приведетксоответствующимизменениямвячейкахD8 :F 11.

Глава 14. Знакомство с массивами 367

Рис. 14.7. Создание массива на основе диапазона

Создание массива констант на основе значений
диапазона

ВпредыдущемпримереформуламассивавD8 : F11 быласвязанасдиапазономячеек
AI:С4. Существует возможность разорвать эту связь и создать массив констант, со­
стоящийиззначенийвдиапазонеAI: С4.

Для этоговыделитеячейки, которыевключают формулу массива(диапазонD 8: F11 в
этомпримере). Нажмите<F2>длязапускарежимаредактирования, азатем<F9>— дляпре­
образованияссылокнаячейкивзначения. Воспользуйтеськлавишами<Ctrl+Shift+Entei>для
фиксацииформулымассиваконстант. Массивконстантбудетиметьследующийвид:
{ 1 ; "собака"; 3 : 4 ; 5 ; "кошка": "обезьяна";1 1 ;1 2 }

Нарис. 14.8показано, каквыглядитпослеописанныхпреобразованийстрокаформул.

Рис. 14.8. После нажатия клавиши <F9> строка формул ото­
бражает массив констант

Выполнение операций над массивом

Донастоящеговременибольшинствопримеровэтойглавыбылопосвященопросто­
мувводу массивов вдиапазон. Представленная ниже формуламассивасоздает прямо­
угольный массив, каждый элемент которого вычисляется путемумножения исходного
массивана2.
{= {1 ; 2 ; 3 ; 4 :5 ; 6 ; 7 ; 8 :9 ; 10; 11; 12}*2 }

Нарис. 14.9показанрезультатвводаэтойформулывдиапазон.

368 Часть IV. Формулы массивов

Рис. 14.9. Выполнение математических операций в
массиве

Следующая формула массива умножает каждый элемент массива на этот же элемент.
{={1 ;2 ;3 ;4 :5 ;6 ;7 ;8 :9 ;1 0 ;1 1 ;1 2 }*{1 ;2 ;3 ;4 :5 ;6 ;7 ;8 :9 ;1 0 ;1 1 ;1 2 }}

Приведенная ниже формула массива приводит к тому же результату, но более про­
стым способом (рис. 14.10).
{ ={ 1 ; 2 ; 3 ; 4 : 5 ; 6 ; 7 ; 8 : 9 ; 10; 11; 12}А2 }

Рис. 14.10. Умножение каждого элемента массива на
самого себя

Если массив хранится в диапазоне ячеек (в данном случае А 1 : С4), для возведения в
квадрат каждого элемента этого массива можно воспользоваться следующей формулой
массива.

{= А 1 :С 4 а 2 }

Совет

В некоторых примерах фигурные скобки, использованные в формулах, вво­
дятся программой автоматически после нажатия <Ctrl+Shift+Enter>, другие же
нужно вводить вручную. Чтобы не запутаться, запомните следующий принцип:
если открывающая фигурная скобка расположена до знака равенства, она
вставляется автоматически, если после — ее следует вводить вручную.

Использование функций в операциях с массивами

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

{=К О Р Е Н Ь ({1:2:3:4:5:6:7:8:9:10})}

Если массив хранится в диапазоне (в данном случае А 1 :А 1 0 ) , можно вычислить
квадратный корень каждого элемента, входящего в массив, с помощью следующей фор­
мулы массива.

{= КОРЕНЬ(А1:А 1 0 )}

Глава 14. Знакомство с массивами 369

Транспонирование массива

При транспонировании массива происходит преобразование строк в столбцы и
столбцов в строки. Другими словами, таким образом можно преобразовать горизонталь­
ный массив в вертикальный или наоборот. Для транспонирования в Excel используется
специальная функция ТРАНСП.

Рассмотрим следующий одномерный горизонтальный массив:

{1; 2 ; 3 ; 4 ; 5 }

Можно ввести данный массив в вертикальный диапазон ячеек, используя функцию
ТРАНСП. Для этого выделите диапазон из пяти ячеек, который располагается в пяти
строках и одном столбце. Затем введите приведенную ниже формулу и нажмите
<Ctrl+Shift+Enter>.

{ =ТРАНСП( { 1 ; 2 ; 3 ; 4 ; 5 } ) }

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

Транспонирование двухмерных массивов происходит подобным образом. На рис. 14.11
показан двухмерный массив, введенный в диапазон ячеек без транспонирования, однако с
использованием функции ТРАНСП. В диапазоне А 1 : D3 находится формула массива.
{={1;2 ; 3 ;4 :5 ; 6 ; 7 ; 8 :9 ; 10; 11; 12} }

Рис. 14.11. Использование функции т р а н с п д л я
транспонирования двухмерного массива

Диапазон А6 : С9 содержит следующую формулу:
{=ТРАНСП( { 1 ; 2 ; 3 ; 4 : 5 ; б ; 7 ; 8 : 9 ; 1 0 ; 1 1 ; 1 2 } ) }

Как и раньше, функцию транспонирования можно применять и к массиву, храняще­
муся в диапазоне ячеек. Например, в приведенной ниже формуле используется массив,
хранящийся в диапазоне A I : С4 (четыре строки, три столбца). Формула массива вводит­
ся в диапазон из трех строк и четырех столбцов.
{=ТРАНСП(A I : С4) }

Обычные функции, возвращающие массив

Некоторые стандартные функции Excel используют массивы. Следует ввести фор­
мулу, в которой используется одна из этих функций, во множество ячеек, подобно тому,
как и формулу массива. К таким функциями относятся: пр е дс к а з , частота, рост,
ЛИНЕЙН, ЛГРФПРИБЛ, ТЕНДЕНЦИЯ И Т .Д .

370 Часть IV. Формулы массивов

Генерирование массива последовательных
целых чисел

Какбудет показановглаве 15, для решениямногихзадачнеобходимогенерировать
массивы, состоящиеизпоследовательныхцелыхчисел, азатемиспользовать ихвфор­
мулахмассива. Идеальныминструментомдля этогоявляетсяфункция СТРОКА, возвра­
щающаязначениеномерастроки. Представленнаяформулавведенаввертикальныйдиа­
пазониз12ячеек.
{ =СТРОКА( 1 : 1 2 ) }

Этаформулагенерируетмассивиз12элементов, содержащийцелыечислаот 1до12.
Выделите диапазон, состоящий из 12строк и 1столбца, и введите формулу массива.
Диапазонячеекбудетзаполненпоследовательнымицелымичислами(рис. 14.12).

Представленнаявышеформулаиспользуетсядлясозданияпоследовательностичисел,
ноонанеидеальна. Чтобыузнатьонедостаткахееиспользования, вставьтеновуюстро­
кунаддиапазоном. Excel внесетизменениявформулу. Теперьонабудет иметьследую­
щийвид:
{ =СТРОКА( 2 : 1 3 ) }

Формула, которая изначальновозвращалазначения целых чисел от 1до 12, теперь
генерируетзначенияот 2до 13.

Лучшимрешениемявляетсядругаяформула:
{=СТРОКА(ДВССЫЛ( " 1 : 1 2 " ) ) }

В этой формуле используется функция ДВССЫЛ, которая вкачествеаргументапри­
нимаеттекстовуюпоследовательность. Excel неизменяетссылку, содержащуюсяваргу­
менте функции ДВССЫЛ. Поэтому данная формула массива всегда возвращает целые
числаот 1до12.

Перекрестная ссылка

В главе 15 приведены интересные примеры генерирования последователь­
ных целых чисел.

Использование одноячеечных формул массива

Всепримерыпредыдущегоразделаиллюстрировалииспользованиеформул массива,
возвращающихнесколькозначений, приэтомвдиапазонячееквводиласьоднаформула.
Но почувствовать настоящие возможности формул массиваможно при использовании
формул массива, возвращающиходнозначение. Такиепримерырассматриваютсявна­
стоящемразделе.

Подсчет количества символов в диапазоне

Предположим, чтосуществуетдиапазонячеек, содержащихтекст(рис. 14.13).
При традиционномподсчете количествасимволов вячейках вначалесоздайте фор­
мулу, подобнуюприведеннойниже.
=ДЛСТР(А1)
Далеескопируйтееевниздлявычисленияколичествасимволоввкаждойячейке. За­
тем, используяформулуСУММ, вычислитесуммупромежуточныхзначений.

Глава 14. Знакомство с массивами 371

Рис. 14.12. Использование формулы Рис. 14.13. Подсчет количества символов в
массива для создания последова- ячейках, содержащих текст, с помощью фор-
тельности целых чисел мулы массива

Формула массива выполняет всюработу сразу, без использования промежуточных
формул.
{=СУММ(ДЛСТР(А1:А14)) }

Вэтой формуле функция ДЛСТР используется для создания массива (в памяти), кото­
рый содержит количество знаков в каждой ячейке диапазона. В нашем случае новый
массив имеет следующий вид:
{11; 12; 11 ; 8 ; 11 ; 1 6 ; 1 2 ; 10 ; 9 ; 10 ; 9 ; 1 4 ; 13 ; 11}

Формулумассиватеперьможнопредставитьпроще:
=СУММ( { 1 1 ; 12 ; 1 1; 8 ; 1 1; 16 ; 12 ; 10 ; 9 ; 10 ; 9 ; 14 ; 13 ; 11} )

Сложение трех наименьших элементов диапазона

Представленнаянижеформулавозвращает суммутрех наименьшихзначенийвдиа­
пазонесименемЧисла.

{=СУММ(НАИМЕНЬШИЙ(Числа;{ 1 ; 2 ; 3 } ) ) }

Вэтойформулеиспользуетсямассивконстантвкачествевторогоаргументафункции
НАИМЕНЬШИЙ. Функциягенерируетновыймассив, которыйсостоитизтрехнаименьших
значенийдиапазона. ЗатеммассивобрабатываетсяфункциейСУММ, котораявозвращает
суммузначениймассива.

На рис. 14.14 показан пример массива Числа, находящийся в диапазоне А1:А10.
ФункцияНАИМЕНЬШИЙ выполняетсятрираза, каждыйразсновымвторымаргументом.
Впервыйразэтот аргумент имеетзначение1, ифункциявозвращает -5. Вовторойраз
аргументомявляется2, ифункциявозвращаетнуль(второеповеличинезначениевдиа­
пазоне). Втретийразаргументомявляется3, ифункциявозвращаетдвойку.

ФункцияСУММполучаетследующиймассив:

{-5; 0;2}

Формулавозвращаетсуммуэлементовэтогомассива(-3).

372 Часть IV. Формулы массивов

Рис. 14.14. Формула массива возвращает сумму
трех наименьших значений массива

Подсчет количества текстовых ячеек в диапазоне

На первый взгляд, для решения этой задачи лучше всего подходит функция С Ч Ё Т Е С -
ЛИ, но это не так. Функция СЧЁТЕ СЛИ проверяет не тип значения, а условие вхождения
в заданный интервал, поэтому для данной задачи она неприменима.

Функция ЕСЛИ используется в примере этого раздела для того, чтобы проверить, явля­
ется ли содержимое ячейки текстом. В результате формируется новый массив, состоящий
из нулей и единиц в зависимости от того, является ячейка текстовой или нет. Следует отме­
тить, что новый массив имеет тот же размер и ориентацию, что и исходный. Затем новый
массив передается функции СУММ, которая возвращает сумму элементов в массиве. Таким
образом, формула предоставляет результат — количество текстовых ячеек в диапазоне.

{ = С У М М ( Е С Л И ( Е Т Е К С Т (А 1: D5) ; 1 ; 0 ) ) }

Перекрестная ссылка
Такой тип формулы массива (а именно функция е с л и , вложенная в функцию
сум м ) используется во многих расчетах (подробнее см. главу 7).
Результат использования описанной выше формулы вводится в ячейку С8
(рис. 14.15), а массив, созданный функцией ЕСЛИ, имеет следующий вид:
{0;1;1;1 :1;0;0;0:1;0;0;0 :1;0;0;0 :1;0;0;0}

Рис. 14.15. Формула массива возвращает количество
ячеек с текстом в указанном диапазоне

Обратите внимание, что этот массив содержит пять строк из трех элементов (те же
размерности, что и в диапазоне).

К такому же результату приведет использование следующей формулы:

{ =СУММ(ЕТЕКСТ(A I : D 5 ) * 1 ) }

Глава 14. Знакомство с массивами 373

Вэтой формуле не используется функция ЕСЛИ; вместо этого используется тот факт, что
ИСТИНА*1=1

И

ЛОЖЬ*1=0

Значения и с т и н а и л о ж ь в формулах массивов

Когда массив возвращает булево значение (истина и л и ложь), вы д о л ж н ы преобра­
зовать его в число. Ф ункция сумм игнорирует булевы значения, но с ними можно вы­
полнять обычные математические операции. В Excel эквивалентом значения истина
является 1, а эквивалентом значения ложь — о. П реобразование булевых значений в
числа гарантирует правильную их трактовку ф ункцией сумм.

Для преобразования булевых значений в числа без изменений самих этих значений
можно использовать следующ ие три математические операции:

• умножение на единицу: (х*1 = х );

• добавление нуля: (х+о=х);

• применение двойного знака “минус”: (— х=х).

Применение любого из этих операторов к булеву значению “приказывает” программе
преобразовать его в число. Все следующие формулы вернут один и тот же результат.

(=СУММ(ЕТЕКСТ( A I :D 5) * 1 ) }
(=СУММ(ЕТЕКСТ( A I :D5) + 0 ) }
(=СУММ(— ЕТЕКСТ (A1:D5) ) }

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

Устранение промежуточных формул

Однимизглавныхдостоинствиспользованияформул массиваявляетсявозможность
устранениявэлектроннойтаблицепромежуточныхформул. Этоделаетрабочиетаблицы
менеегромоздкимииисключает необходимостьотображениянесущественных вычисле­
ний. Нарис. 14.16показанрабочийлистсбаллами, набранныминапервомивторомэта­
пахтестирования. СтолбецD содержитразницумеждубалламивстолбцахВ иС. Ячейка
D17 отображаетформулу, вычисляющуюсреднеезначениевстолбцеD.
=СРЗНАЧ(D 2:D 15)

Использованиеформулымассивапозволяет исключить промежуточныевычисления.
Нижепредставленаформула, вычисляющаясреднююразницубалловбезиспользования
значенийвстолбцеD.
{=СРЗНАЧ(С2: С 1 5 -В 2 :В 1 5 )}

Вэтойформулеиспользуютсядвамассива, элементыкоторыххранятсявдвухдиапа­
зонах(В2 :В15 иС2 : С15). Формуласоздает новыймассив, состоящийизразностисо­
ответствующихэлементовисходныхмассивов. Новыймассивхранитсятольковпамяти
Excel, аневячейкахэлектроннойтаблицы. Функция СРЗНАЧ получаетэтот новыймас­
сиввкачествеаргумента. Новыймассивсостоитизследующихэлементов:
{11;1 5 ;-6 ;1 ;1 9 ;2 ;0 ;7 ;1 5 ;1 ;8 ;2 3 ;2 1 ;-1 1 }

374 Часть IV. Формулы массивов

Рис. 14.16. Если для подсчета средней
разницы баллов не использовать формулы
массива, то потребуются промежуточные
формулы в столбце D

Следовательно, в развернутом виде формула принимает следующий вид:
=СРЗНАЧ( { 1 1 ; 1 5 ; - 6 ; 1 ; 1 9 ; 2 ; 0 ; 7 ; 1 5 ; 1 ; 8 ; 2 3 ; 2 1 ; - 1 1 } )

На основе данных этого примера можно вычислить и другие значения, используя
формулы массива. Например, следующая формула возвращает наибольшую разницу
(характеризующую наиболее значительное улучшение успеваемости). Эта разница равна
23 и соответствует результатам тестирования студента С ергей .
{ =МАКС( С 2 : С 1 5 - В 2 : В 1 5 ) }

Приведенная ниже формула возвращает наименьшую разницу (характеризующую
ухудшение успеваемости). Она составляет -1 1 и соответствует результатам тестирова­
ния студента А льфред.
{=М И Н ( С 2 : С 1 5 - В 2 : В 1 5 ) }

Использование массива вместо диапазона ссылок

Некоторые функции в качестве аргумента используют диапазон ссылок. Если в фор­
муле используется такая функция, можно заменить диапазон ссылок на массив констант
(особенно в том случае, если значения в диапазоне ссылок не изменяются).

Примечание

Исключение составляют функции работы с базами данных (например, бдсумм).
Эти функции в качестве обязательного аргумента получают критерий, нахо­
дящийся в диапазоне ячеек. К сожалению, использовать массив констант
вместо ссылки на диапазон условий нельзя.
На рис. 14.17 показан рабочий лист, в котором используется таблица преобразования
для отображения слова, соответствующего числу. Например, числу 9 в таблице преобра­
зования (диапазон D 1:E 10) соответствует значение Д ев ять. Формула, возвращающая
это значение, находится в ячейке С1.
=ВПР( В1; D l : Е 1 0 ; 2 ; ЛОЖЬ)

Глава 14. Знакомство с массивами 375

Рис. 14.17. Таблицу преобразований, нахо­
дящуюся в диапазоне D i:E io , м о ж н о заме­
нить на массив констант

Вместотаблицыпреобразованийчастоприменяютдвухмерныймассив. Приведенная
нижеформулавозвращает тот жерезультат, что ипредыдущая, нонетребует наличия
таблицыпреобразований:
=ВПР(В1 ; { 1 ; "Один": 2 ; " Д в а " : 3 ; " Т р и " : 4 ; " Ч е т ы р е " :5 ; " П я т ь " : 6 ;
"Шесть": 7 ; "Семь" : 8 ; " В о с е м ь " : 9 ; " Д е в я т ь " : 1 0 ; " Д е с я т ь " } ; 2 ; ЛОЖЬ)

Глава

Магия формул массива

Вэтой главе...

♦ Работасодноячеечнымиформуламимассива
♦ Работасмногоячеечнымиформуламимассива

Впредыдущейглавебыливведеныпонятиямассиваиформулымассива, атакжеда­
нысоответствующиепримеры. Этаглавапосвященаформуламмассивовисодержитпо­
лезныепримеры, которыепродемонстрируютихэффективность.

Этипримерывыможетенепосредственноиспользовать вработе, тольковрядеслу­
чаевследует изменитьименадиапазоновилиссылок. Во многиепримерылегковнести
изменения, чтобыониработалиименнотак, какнужнодлярешенияпрактическихзадач.

Компакт-диск

Все примеры этой главы содержатся в русифицированном файле C h a p te r i5 _
R U S .x ls x на прилагаемом компакт-диске (названия листов соответствуют
номерам рисунков), а также в нескольких авторских файлах, о которых будет
сказано дополнительно.

Работа с одноячеечными формулами массива

Какописывалосьвпредыдущейглаве, формулумассиваможновводитьводнуячей­
ку(аневдиапазонячеек). Такие формулыобрабатывают массивы, хранящиесялибо в
диапазонеячеек, либовпамятиExcel. Вэтомразделепредставленынекоторыедополни­
тельныепримерыодноячеечныхформулмассива.

О примерах этой главы

Данная глава содержит ряд примеров формул массива. Помните, что формулы мас­
сива вводятся с помощ ью комбинации клавиш <C trl+S hift+E nter>, а не просто <E nter>.
После нажатия этой ком бинации клавиш Excel вставит введенную вами ф ормулу в ф и ­
гурные скобки. Приведенные в тексте главы формулы массива заключены в фигурные
скобки только для наглядности, вам их вводить в строке формул не придется.

378 Часть IV. Формулы массивов

Компакт-диск

Все примеры этого раздела в авторском варианте содержатся в файле
s i n g l e - c e l l a r r a y fo r m u la s . x l s x на прилагаемом компакт-диске.

Суммирование в диапазоне, содержащем ошибки

МногиепользователиExcel знают, чтофункцияСУММ неработает, еслипросуммиро­
вать диапазон ячеек, содержащих сообщения об ошибках (например, # Д ЕЛ / 0 ! или
#Н/Д). Рис. 15.1 иллюстрирует такойслучай. Формула СУММ вячейкеС И возвращает
сообщениеобошибке, таккаквдиапазонеячеекС4 : СЮ, которыеонаскладывает, со­
держатсясообщенияобошибках.

Hi : I_________

Рис. 15.1. Формула массива может складывать значе­
ния в диапазоне, содержащем ошибки

Следующаяформуламассивавозвращаетсуммузначений, дажеесливходнойдиапа­
зонсодержитсообщенияобошибке.
{ =СУММ(ЕСЛИОШИБКА(С 4 : С10 ; " " ) }

Эта формула создает новый массив, включающий значения диапазона, но без со­
общенийобошибке. Функция ЕСЛИ заменяет сообщенияобошибкенапустыезначе­
ния. Затемфункция СУММ складывает элементы“отфильтрованного” такимобразом
массива. Аналогичнуюметодикуможноиспользоватьидлядругихфункций, например
МИН иМАКС.

ВданномпримерефункцияСУММ обрабатываетследующийвнутренниймассив, хра­
нящийсяпамяти:

{8;20; 12; ""и;5;10}

Примечание

Возникают случаи, когда вместо е с л и о ш и б к а необходимо использовать
другие функции. Дело в том, что е с л и о ш и б к а возвращает значение
ИСТИНА при любых значениях ош ибки (# Н /Д , #ЗН А Ч !, #ССЫЛКА! , # Д Е Л / 0 ! ,
# число! , #имя? или # п у с т о !) . Ф ункц ия е о ш во звра щ а ет значение и с т и н а
при любых значениях ошибки, кроме # н / д , а функция е н д — только при
значениях ошибки # н /д .

Глава 15. Магия формул массива 379

ШШ Новинка

Функция агрегат предоставляет еще один способ суммирования диапазо­
на, содержащ его ошибочные значения:
=АГРЕГАТ ( 9 , 2 , С4 : СЮ)

Первый аргумент содерж ит значение 9 — код функции сумм. Второй аргу­
мент приказывает функции агр егат игнорировать ошибки.

Подсчет количества ошибок в диапазоне

Представленная нижеформуламассиваподобна формуле предыдущего примера, за
исключением того, что она возвращает количество ошибок в диапазоне с именем
Данные.
{=СУММ(ЕСЛИ(ЕОШИБКА(Данные) ; 1 ; 0 ) ) }

Этаформуласоздает массив, состоящийизединиц(еслисоответствующаяячейкасо­
держитсообщениеобошибке) инулей(есливячейкеотсутствуетсообщениеобошибке).

Можнонемногоупроститьформулу, удаливтретийаргументфункцииЕСЛИ. Врезуль­
тате, еслиусловиеневыполняется (ячейканесодержит сообщениеобошибке), функция
ЕСЛИ будетвозвращатьзначениеЛОЖЬ. Усовершенствованнаяформулавозвращаеттакой
жерезультат, чтоипредыдущая, новнейнеттретьегоаргументафункцииЕСЛИ.
{=СУММ(ЕСЛИ(ЕОШИБКА(Данные);1)) }

Вдействительностиможноещебольшеупроститьэтуформулу:
{=СУММ(ЕОШИБКА(Данные) * 1 ) }

Вэтойверсииформулыиспользуютсятакиеравенства:
ИСТИНА*1=1

И

ЛОЖЬ*1=0

Суммирование п наибольших значений в диапазоне

Следующая формула возвращает значение суммыдесяти наибольших значений в
диапазонесименемДанные:
{=СУММ(НАИБОЛЬШИЙ(Данные; СТРОКА(ДВССЫЛ( " 1 : 1 0 " ) ) ) ) }

ФункцияНАИБОЛЬШИЙ выполняетсядесятьраз, причемкаждыйразсдругимвторым
аргументом(1, 2, 3... 10). Результатыэтихвычисленийхранятсявновоммассиве, кото­
рыйслужитаргументомдляфункциисуммирования.

Чтобы просуммировать другое количество значений, необходимо заменить число 10
варгументе функции ДВССЫЛ на другое значение.

ЕсликоличествосуммируемыхячеекнаходитсявячейкеС17, используйтеоператор
конкатенациидлясозданияадресадиап^онадляфункцииДВССЫЛ.
{=СУММ(НАИБОЛЬШИЙ(Данные/СТРОКА(ДВССЫЛ( " 1 : "&С17)) ) ) }

Для суммирования п наименьших значенийвдиапазонеследует заменить функцию
НАИБОЛЬШИЙ функциейНАИМЕНЬШИЙ.

380 Часть IV. Формулы массивов

Вычисление среднего без учета нулевых значений

Нарис. 15.2показанрабочийлист, накоторомвычисляется среднийобъемпродаж.
ВячейкуВ14 помещенаследующаяформула:
=СРЗНАЧ(Данные)

Рис. 15.2. Вычисление среднего значения, при котором
исключаются ячейки, содержащие нуль

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

Примечание

Функция срзнач не учитывает пустые ячейки, зато принимает в расчет ячей­
ки, содержащ ие нулевые значения.
Следующая формула массивавозвращает среднеезначениевдиапазоне ипри этом
исключаетячейки, содержащиенулевыезначения:
{ =СРЗНАЧ (ЕСЛИ (Д анны еоО / Данные) ) }
Этаформуласоздает новыймассив, состоящийисключительноизненулевыхзначе­
ний. Функция СРЗНАЧ принимает этот массиввкачествесвоегоаргумента. Тот жере­
зультатможнополучитьприиспользованииобычнойформулы(неформулымассива).
=СУММ(Данные)/СЧЁТЕСЛИ(Данные; "<>0")
Вначалерассчитываетсясуммавсехзначенийячееквдиапазоне. Затемэтасуммаде­
лится на количество ненулевых ячеек диапазона, полученное с помощью функции
СЧЁТЕСЛИ.

Поиск значения в диапазоне

Длятогочтобыопределить, присутствуетлиопределенноезначениевдиапазонеячеек,
необходимовыбратькоманду Главная^ Редактированием Найти и выделить*^ Найти,
послечеговручнуюзадатьпараметрыпоиска. Можнопоступитьдругимобразомирешить
этузадачуавтоматическиспомощьюформулымассива.

Нарис. 15.3 показанрабочийлист со спискомимен вдиапазонеАЗ:Е22, которому
присвоеноимяСписокИмен. ФормуламассивавячейкеD1 ищетимя, введенноевячейке

Глава 15. Магия формул массива 381

С1, которойприсвоеноимя.Имя. Еслизаданноеимяприсутствуетвспискеимен, формула
выводиттекстН а й д е н о . ВпротивномслучаеонаотображаетфразуНе н а й д е н о .

ФормулавячейкеD1имеетследующийвид:

{=ЕСЛИ(ИЛИ(Имя=СписокИмен) ; "Н айдено"; "Не н а й д е н о " ) }

Эта формуласравнивает Имя с каждымэлементомвдиапазоне С писокИ м ен. Она
создает новый массив, который состоит из логических значений ИСТИНА или ЛОЖЬ.
ФункцияИЛИ возвращаетзначениеИСТИНА, еслихотябыоднозначениевновоммасси­
ве— ИСТИНА. ФункцияЕСЛИ используетэтот результатдляопределениявозвращаемо­
госообщения.

Более простой вариант этой формулыпредставлен ниже. Эта формула возвращает
значениеИСТИНА, еслиимянайдено, впротивномслучае— ЛОЖЬ.

{=ИЛИ(Имя=СписокИмен) }

Рис. 15.3. Использование формулы массива для
определения наличия значения в диапазоне

ЕщеодинподходпредполагаетиспользованиефункцииСЧЁТЕСЛИ:
==Если(СЧЁТЕСЛИ(СписокИмен153;Имя)> 0 ; "Найдено";"Не найдено")

Подсчет отличающихся значений в двух диапазонах

Представленнаянижеформуламассивасравниваетсоответствующиезначениявдвух
диапазонах (имеющих имена МоиДанные и Т во и Д а н н ы е) и возвращает количество
различныхэлементоввэтихдвухдиапазонах. Если содержимоедвухдиапазоновиден­
тично, формулавозвращаетнуль.
{=СУММ(ЕСЛИ(МоиДанные=ТвоиДанные; 0 ; 1 ) ) }

Двадиапазонадолжныиметьодинаковыеразмериориентацию.
Даннаяформуласоздаетновыймассивтакогожеразмера, какисравниваемыедиапа­
зоны. Функция ЕСЛИ заполняет этот новыймассив нулями иединицами (нуль— если
есть различие, единица— если нет различий в соответствующих ячейках). Функция
СУММ возвращаетсуммузначенийэтогомассива.
Тот жерезультатможнополучить, применивболеепростуюформулу:
{=СУММ(1* (МоиДанныеоТвоиДанные) ) }
Этаверсияформулыбазируетсянаследующихравенствах:

382 Часть IV. Формулы массивов

ИСТИНА*1=1

И

ЛОЖЬ*1=0

Местоположение максимального значения диапазона

Дляопределенияномерастроки, вкоторойнаходитсямаксимальноезначениеодномерно­
говертикальногомассивасименемДанные, можновоспользоватьсяследующейформулой:
{=МИН(ЕСЛИ(Данные=МАКС(Данные); СТРОКА(Данные); " " ) ) }

Функция ЕСЛИ создает новый массив, соответствующий диапазону Данны е. Если
соответствующаяячейкасодержит максимальноезначениедиапазонаД анны е, товно­
выймассиввключаетсяномереестроки. В противномслучаемассивсодержит пустую
текстовуюстроку. ФункцияМИН использует этот массивкаквторойаргумент ивозвра­
щаетминимальноезначение, котороесоответствуетномерустроки, вкоторойнаходится
максимальноезначениедиапазонаД анные.

Если диапазон Д анны е содержит несколько ячеек с максимальнымзначением, то
возвращаетсяномерпервойтакойячейки.

Представленнаянижеформуламассиваподобнапредыдущей, ноонавозвращаетдейст­
вительныйадресячейкисмаксимальнымзначениемвдиапазонеДанные. В формулеис­
пользуетсяфункцияАДРЕС, котораяимеетдвааргумента: номерстрокииномерстолбца.
{=АДРЕС(МИН(ЕСЛИ(Данные=МАКС(Данные) ; СТРОКА(Данные) ; "")) ;

СТОЛБЕЦ(Данные)) }

ЕслидиапазонД анны е занимаетбольшеодногостолбца, следующаяформуламасси­
вавернетправильныйадрес:
{=АДРЕС(МИН(ЕСЛИ(Данные=МАКС(Данные) ; СТРОКА(Данные) ") ) ;
МИН(ЕСЛИ(Данные=МАКС(Данные)/СТОЛБЕЦ(Данные); " " ) ) ) }

Поиск номера строки, в которой находится л-е
значение, совпадающее с заданным

Приведенная ниже формулаищет водномерномвертикальномдиапазоне с именем
Данные значения, которыесовпадают ссодержимымячейкиЗ н а ч е н и е , ивозвращает
номерстрокил-госовпадающегоэлемента.
^НАИМЕНЬШИЙ(ЕСЛИ(Д анн ы е=3начен ие; С Т Р О К А ( Д а н н ы е ) " ) ; п ) }

ФункцияЕСЛИ создаетновыймассив, состоящийизномеровстрок, вкоторыхзначе­
ния из диапазона Д анны е совпадают со значением З н а ч е н и е . Если значение из
Данные несовпадает созначениемЗ н а ч е н и е , тоновыймассивсодержит пустуютек­
стовуюстроку. ФункцияНАИМЕНЬШИЙ обрабатываетэтотновыймассививозвращаетп-
йнаименьшийномерстолбца.

Еслип превышаетколичествозначенийвдиапазонеД анны е, равныхЗ н а ч е н и е , или
значениеЗ н а ч е н и е ненайдено, формулавозвращаетошибку#ЧИСЛО!.

Получение самого длинного текста в диапазоне

Следующая формулаотображает содержимоеячейкидиапазонаД анны е, вкоторой
находится наибольшееколичество символов. Если самыйдлинный текст содержится в
несколькихячейках, товозвращаетсясодержимоепервойтакойячейки.

Глава 15. Магия формул массива 383

{=ИНДЕКС(Данные; П0ИСКП03(МАКС(ДЛСТР(Данные)) ; ДЛСТР(Данные);ЛОЖЬ);1)}

Этаформулаработает сдвумямассивами, каждыйизкоторыхимеетдлину соответ­
ствующегоэлементаиздиапазонаДанны е. Функция МАКС находит наибольшеезначе­
ние, которое соответствует элементу с самымдлиннымтекстом. Функция П0ИСКП03
вычисляет смещениеячейкисмаксимальнойдлиной. Функция ИНДЕКС возвращает со­
держимоеячейки, вкоторойнаходитсятекст снаибольшимколичествомсимволов. Эта
формулавозвращаетправильныйрезультаттольковтомслучае, еслидиапазонДанны е
состоитизодногостолбца.

Определение допустимых значений диапазона

Перед вами может возникнуть следующая задача: проконтролировать содержимое
списканапредметдопустимостивнемзначений. Предположим, чтосписоквсехдопус­
тимыхчиселхранитсявдиапазонесименемО с н о в а . Приимпортеспискачисел вдиа­
пазонсименемМ ойС писок нужноубедиться, чтовсечисладопустимы. Дляэтогонеоб­
ходимосравнитьэлементывимпортируемомспискесэлементамивспискеО с н о в а .

Приведенная ниже формула массива возвращает значение ИСТИНА, если каждый
элемент диапазона с именемМ ойС писок найден вдиапазоне с именемО с н о в а . Оба
этихдиапазонадолжнысостоятьизодногостолбца(этонезависитотчисластрок).

{=ЕНД(ПОИСКПОЗ(ИСТИНА;ЕНД(ПОИСКПОЗ(МойСписок;Основа; 0 ) ) ; 0 ) ) }

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

{=СУММ(1*ЕНД(ПОИСКПОЗ(МоиСписок; О с н о в а ; 0 ) ) ) }

ДляопределенияпервогонедопустимогоэлементавМ ойС писок используйтеприве­
деннуюнижеформулу.
{=ИНДЕКС(МойСписок/ПОИСКПОЗ(ИСТИНА;

ЕНД(ПОИСКПОЗ(МойСписок;Основа;0)) ; 0 ) )}

Вычисление суммы цифр числа

Для вычисления суммыцифр в положительном целомчисле, которое хранится в
ячейкеА1, можноиспользоватьследующуюформулу:
{=СУММ(ПСТР(А1;СТРОКА(ДВССЫЛ( " 1 : "&ДЛСТР(А1)) ) ; 1 ) *1) }

Например, еслиячейкаА1 содержит значение409, приведеннаявышеформулавер­
нетзначение13(4+0+9=13).

Чтобыпонять, какработаетэтаформула, рассмотримфункциюСТРОКА вследующей
формуле:
{=СТРОКА (ДВССЫЛ ("1: "&ДЛСТР(А1) ) ) }

Этаформулавозвращаетмассивпоследовательныхцелыхчисел, которыйначинается
сединицыизаканчивается количествомцифр вчисле, находящемся вячейкеА1. На­
пример, если ячейка А1 содержит значение 409, функция ДЛСТР вернет значение 3,
афункциейСТРОКА будетсгенерированследующиймассив:
{1>'2; 3}

384 Часть IV. Формулы массивов

Перекрестная ссылка

Подробная информация об использовании функции двссыл приведена в
главе 14.

Полученный массив впоследствии используется в качестве второго аргумента функ­
ции ПСТР. Если в формулу с ПСТР подставить полученные в описанном примере значе­
ния, она будет упрощена:
{ПСТР( 4 0 9 ; { 1 ; 2 ; 3 } ; 1 ) *1}

Эта формула генерирует массив, состоящий из трех элементов:
{4 ;0;9}

В результате общая формула с функцией СУММ станет более простой и будет иметь
следующий вид:
=СУММ( { 4 ; 0 ; 9 } )

Результат вычислений равен 13.

Примечание

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

Заметьте, что описанная выше формула не работает с отрицательными значениями,
так как знак “минус” не является цифрой. Ниже приводится формула, в которой исправ­
лен данный недостаток. Для этого используется функция ABS, которая возвращает абсо­
лютное значение числа. На рис. 15.4 представлен рабочий лист, содержащий в ячейке В4
следующую формулу:

{= С У М М (З Н А Ч Е Н (П С Т Р (ABS(А 2 );С Т Р О К А ( ДВ С С Ы Л (
" 1 : " &ДЛСТР(ABS(А2) ) ) ) ; 1 ) ) ) }

Формула в ячейке В 4 была скопирована в другие ячейки столбца В с целью вычис­
лить суммы цифр в числах, находящихся в столбце А.

Суммирование округленных значений

На рис. 15.5 показан рабочий лист, который демонстрирует характерную проблему
всех электронных таблиц — ошибку округления. Как видно из рисунка, общая сумма в
ячейке Е7 не является точной суммой чисел в столбце Е. Значения в столбце Е исполь­
зуют числовой формат, в котором отображаются две цифры после запятой. Фактические
значения имеют больше знаков после запятой, и некоторые из них не отображаются. Ре­
зультирующее влияние погрешностей округления может привести к общему неточному
результату. Общее значение составляет $ 1 6 8 ,3 2 0 9 9 7 , отображаемое — $ 1 6 8 ,3 2 .

Следующая формула массива создает новый массив, который состоит из значений
столбца Е, округленных до двух десятичных знаков:
{=СУММ(ОКРУГЛ(Е2:Е4;2 ) ) }

Эта формула возвращает правильную величину суммы округленных значений —
$168, 31.

Глава 15. Магия формул массива 385

Рис. 15.4. Формула масси- Рис. 15.5. Использование формулы массива устраняет ошибку ок-
ва вычисляет сумму цифр ругления
любого целого числа

Для устранения таких ошибок округления можно также ввести в ячейки столбца Е
уже округленные значения с помощью функции ОКРУГЛ. Этот подход не требует созда­
ния формулы массива.

Суммирование каждого л-го значения в массиве

Предположим, что существует диапазон значений, в котором необходимо определить
сумму каждого третьего значения: первого, четвертого, седьмого и т.д. Один из способов
решения этой задачи — внесение адреса ячеек в формулу суммирования. Однако луч­
шим решением будет использование формулы массива.

Обратимся к данным рис. 15.6. Значения хранятся в диапазоне В 4:В 22 с именем
Данные 156, а значение п задается в ячейке D4, названной п.

Рис. 15.6. Формула массива возвращает сумму
каждого п-го значения в диапазоне

386 Часть IV. Формулы массивов

Для суммирования каждого п-го элемента диапазона используется следующая формула:

{ =СУММ(ЕСЛИ(ОСТАТ(СТРОКА(ДВССЫЛ(" 1 :" &

ЧСТРОК(Данные156) ) ) - 1 ; п ) = 0 ; Данные15б; " " ) ) }

Эта формула создает массив последовательных целых чисел. Функция ОСТАТ прини­
мает его в качестве первого аргумента. Второй аргумент функции ОСТАТ — значение п.
Функция ОСТАТ создает другой массив, состоящий из остатков деления каждого после­
довательного целого числа на п. При равенстве элемента этого массива нулю (это значит,
что деление прошло без остатка) происходит суммирование соответствующих значений
в диапазоне Данные.

Если принять значение п равным нулю, приведенная выше формула возвращает со­
общение об ошибке. Улучшенная формула массива включает функцию ЕСЛИ для успеш­
ной работы при п=0.

{=ЕСЛИ(п= 0 ; 0 ; СУММ(ЕСЛИ(ОСТАТ(СТ РОКА(ДВССЫЛ( " 1 : "
&ЧСТРОК(Данные156) ) ) - 1 ; п ) = 0 ; Д ан н ые 156 ; " " ) ) ) }

Эта формула работоспособна только в том случае, когда диапазон Данные состоит из
одного столбца значений. Она не работает, если диапазон состоит из более чем одного
столбца или даже одной строки.

Приведенная выше формула всегда включает первый элемент диапазона. К примеру,
если п=5, будут суммироваться следующие элементы: 1, 6, 11 и 16. Рассмотрим не­
сколько модифицированную версию формулы, которая начинает суммирование именно с
n-го элемента. Когда п=5, формула суммирует следующие элементы: 5, 10 и 15.

{ =ЕСЛИ(п=0; 0 ; СУММ(ЕСЛИ(ОСТАТ(СТРОКА(ДВССЫЛ( " 1 : "

&ЧСТРОК(Данные156) ) ) - п ; п ) = 0 ; Да нные156; " " ) ) ) }

Для создания формулы, работающей с горизонтальным диапазоном, необходимо
транспонировать массив целых чисел, генерируемых функцией СТРОКА. Модифициро­
ванная формула массива, предназначенная для обработки горизонтального диапазона
Данные, имеет следующий вид:

{ =ЕСЛИ(п=0; 0 ; СУММ(ЕСЛИ(ОСТАТ(ТРАНСП(СТРОКА(ДВССЫЛ(" 1 :"
&ЧСТРОК(Данные)) ) ) - 1 ; п ) = 0 ; Д а нн ые ; " " ) ) ) }

Удаление нечисловых символов из текстовой строки

Приведенная ниже формула извлекает числа из текстовой строки. Например, если при­
менить формулу к строке, содержащей текст ABC145Z, будет возвращено значение 145.
{ =ПСТР(А 1 ; ПОИСКПОЗ( 0 ; ( ЕОШИБКА(ПСТР(А 1 ;

СТРОКА(ДВССЫЛ( " 1 : "&ДЛСТР(А1)) ) ; 1 ) * 1 ) * 1 ) ; 0 ) ;
ДЛСТР(А1)-СУММ((ЕОШИБКА(ПСТР(А1;
СТРОКА(ДВССЫЛ( " 1 : "&ДЛСТР(А1)) ) ; 1 ) * 1 ) * 1 ) ) ) }

Эта формула работает только с одним внедренным числом. К примеру, она даст не­
правильный результат при работе со строкой X45Z99 (вернет 4 5Z9).

Проверка правильности вычисления формул

Чтобы лучше понять, как выполняется конкретная сложная формула массивов, об­
ратитесь к специальному средству отладки формул. Для этого выделите ячейку с
формулой и выберите команду Формулы^Зависимости формул^Вычислить формулу.
На экране откроется диалоговое окно Вычисление формулы, показанное ниже.

Глава 15. Магия формул массива 387

Щелкните на кнопке Вычислить несколько раз, и увидите промежуточные резуль­
таты вычисления формулы. Это подобно замедленному, пошаговому воспроизведе­
нию процесса вычисления

Поиск ближайшего значения в диапазоне

Пусть ячейка с произвольным числом имеет имя Цель 1 5 7 . Для определения бли­
жайшего к нему числа из массива Дан ные 15 7 воспользуемся формулой массива.
{=ИНДЕКС(Да нн ые157 ; ПОИСКПОЗ(НАИМЕНЬШИЙ(ABS(
Цель157-Данные157);1);ABS(Цель157-Данные157);0))}

Если в массиве существует два числа, ближайших к Цель 1 5 7, то формула вернет
значение первого из них. На рис. 15.7 представлен пример использования этой формулы.

Рис. 15.7. Формула массива возвращает ближай­
шее значение
В этом примере массив Данные157 находится в диапазоне А4:А22, значение
Цель 157 составляет 45. Формула массива находится в ячейке D5 и возвращает бли­
жайшее к Цель 157 значение, равное 4 8.

Получение последнего значения в столбце

Предположим, что существует рабочий лист, в столбец А которого периодически
вносятся новые данные, и нам необходимо отобразить последнее введенное значение.
Если столбец А не содержит пустых ячеек, данную задачу можно решить сравнительно
просто, не прибегая к использованию формул массива.
=СМЕЩ(А 1 ; СЧЁТЗ(А:А)- 1 ; 0 )

В этой формуле функция СЧЁТЗ используется для подсчета количества непустых
ячеек в столбце А. Полученное значение (за вычетом единицы) используется в качестве

388 Часть IV. Формулы массивов

второго аргумента функции СМЕЩ. Например, пусть последнее значение было введено в
строку с номером 100. Функция СЧЁТЗ вернет значение 100, а функция СМЕЩ— значе­
ние в ячейке, находящейся на 99 строк ниже ячейки А1.

В то же время столбец А вполне может содержать хотя бы одну пустую ячейку внутри
диапазона. Это приведет к тому, что предыдущая формула будет выполняться непра­
вильно. Дело в том, что функция СЧЁТЗ не подсчитывает пустые ячейки.

Приведенная ниже формула массива возвращает содержимое последней непустой
ячейки столбца А.
{ =ИНДЕКС(А1:А;МАКС(СТРОКА(А1:А)* ( А1: А<>"" ) ) ) }

Естественно, что эту формулу можно модифицировать для работы с любым другим
столбцом. Для этого вместо ссылок на столбец А введите ссылки на любой другой столбец.

Предупреждение

Эту формулу нельзя размещать в том столбце, который она обрабатывает. Иг­
норирование этого правила приводит к циклической ссылке. Однако можно
немного модифицировать формулу. Например, разместите формулу в первой
строке и измените ссылки так, чтобы они начинались со второй строки.

Получение последнего значения в строке

Следующая формула массива аналогична предыдущей, однако возвращает послед­
нюю непустую ячейку строки (в данном случае строки 1):
{ =ИНДЕКС( 1 : 1 ; МАКС(СТОЛБЕЦ( 1 : 1 ) * ( 1 : 1 < > " " ) ) ) }

Для использования этой формулы в другой строке замените ссылку 1 :1 .

Упорядочение данных с помощью формулы массива

Часто приходится вычислять последовательность значений в диапазоне данных.
Предположим, существует рабочий лист с информацией о годовых объемах продаж, со­
вершенных'разными менеджерами. Нас интересует, какое место по объему продаж за­
нимает каждый менеджер.

Использование для этой цели стандартной функций РАНГ может привести к неожи­
данным результатам. Например, если два значения находятся на третьем месте, функция
РАНГ присваивает каждому из них значение, равное трем. Однако может возникнуть не­
обходимость определить их ранг как средний относительно других рангов. Иными сло­
вами, ранг 3,5 в этой функции для обоих значений связан с третьим местом.

На рис. 15.8 представлен рабочий лист, в котором применяются два метода оценки зна­
чений, находящихся в столбце В (диапазон Продажи). В первом методе (столбец С) ис­
пользуется функция РАНГ. В столбце D с помощью формулы массива вычисляется ранг.

В ячейке D5 находится формула массива.
{=СУММ( 1 * ( В5<=Продажи)) - (СУММ( 1 * ( В5=Продажи)) - 1 ) / 2 }

Эта же формула скопирована в нижние ячейки.

Примечание

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

Глава 15. Магия формул массива 389

Рис. 15.8. Оценка данных с помощью функ­
ции р а н г и формулы массива

Формулы массива работают следующим образом. Вначале вычисляется количество
значений, больших анализируемого значения. Затем определяется количество равных зна­
чений минус один. В заключение из первого количества вычитается половина второго.

Новинка

Новая функция ранг . рв во многих случаях устраняет необходимость приме­
нения формулы массива для решения подобных задач. В частности, она воз­
вращает те же ранги, что и формула массива в столбце D на рис. 15.8. Для это­
го нужно скопировать в ячейки столбца Dформулу =ранг . р в (В4, продажи) .

Работа с многоячеечными формулами массива

В предыдущей главе вы узнали об использовании многоячеечных формул массива, воз­
вращающих несколько значений. В этой главе представлено еще несколько полезных при­
меров использования таких формул массива. Большинство приведенных формул возвраща­
ет несколько или все значения диапазона, реорганизованные в определенном порядке.

Компакт-диск
Все примеры этого раздела содержатся в файлах m u lt i-с е 11 array f o r ­
mulas .x l s x и chapteri5_RUS . x l s x на прилагаемом компакт-диске.

Извлечение положительных значений из диапазона

Представленная ниже формула массива работает с однрмерным вертикальным масси­
вом, имеющим имя Данные. Формула массива расположена в диапазоне такого же раз­
мера, что и Данные. Для извлечения из диапазона Данные только положительных зна­
чений (нулевые и отрицательные значения игнорируются) используется следующая фор­
мула массива:
{=ИНДЕКС(Данные; НАИМЕНЬШИЙ(ЕСЛИ(Данные>0;

СТРОКА(ДВССЫЛ( " 1 : " &ЧСТРОК(Данные) ) ) ) ;
СТРОКА(ДВССЫЛ( " 1 : " &ЧСТРОК(Данные) ) ) ) ) }
Как видно на рис. 15.9, эта формула работает, но имеет некоторые недостатки. Диа­
пазон Данные находится в ячейках А 5:А 24, а формула массива введена в диапазон

390 Часть IV. Формулы массивов

С5 : С24. Однако для ячеек, которые не содержат значения, формула массива возвращает
сообщение об ошибке #ЧИСЛО!.

Рис. 15.9. Использование формулы массива для
возвращения из диапазона только положительных
значений
Модифицированная формула массива, введенная в диапазон ячеек Е5 :Е24, исполь­
зует функцию ЕСЛИОШИБКА во избежание сообщений об ошибках.
{=ЕСЛИОШИБКА(ИНДЕКС(Данные; НАИМЕНЬШИЙ(ЕСЛИ(Данные>0;
ДВССЫЛ( ( " 1 : "&ЧСТРОК(Данные)) ) ) ;
СТРОКА(ДВССЫЛ( " 1 : " &ЧСТРОК(Данные) ) ) ) ) ; " " ) }

Извлечение непустых ячеек из диапазона

Формула этого раздела — один из вариантов формулы предыдущего раздела. Она ра­
ботает с одномерным вертикальным массивом Данные. Формула массива вводится в та­
кой же по размерности диапазон, что и Данные, и возвращает только непустые ячейки
из этого диапазона.
{ = ЕСЛИОШИБКА(ИНДЕКС(Данные;

НАИМЕНЬШИЙ (ЕСЛИ ( Дан ные оО ;
ДВССЫЛ(( " 1 : "&ЧСТРОК(Данные)) ) ) ;
СТРОКА(ДВССЫЛ( " 1 : " &ЧСТРОК(Данные) ) ) ) ) ; " " ) }
В более старых версиях программы (до Excel 2007) можно использовать следующую
формулу:
{ =ЕСЛИ (ЕОШ(НАИМЕНЬШИЙ (ЕСЛИ ( Д а н н ы е о " " ;
СТРОКА(ДВССЫЛ("1:"&ЧСТРОК(Данные)) ) ) ;
СТРОКА(ДВССЫЛ( " 1 : "&ЧСТРОК(Данные)) ) ) ) ; " " ;
ИНДЕКС (Данные;НАИМЕНЬШИЙ (ЕСЛИ ( Д а н ны е о " ";
СТРОКА(ДВССЫЛ( " 1 : "&ЧСТРОК(Данные)) ) ) ;
СТРОКА(ДВССЫЛ( " 1 : "&ЧСТРОК(Данные)) ) ) ) ) }

Глава 15. Магия формул массива 391

Изменение порядка следования элементов
вдиапазоне на противоположный

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

{=ЕСЛИ(ИНДЕКС(Данные; ЧСТРОК(Данные)
СТРОКА(ДВССЫЛ( " I s ”&ЧСТРОК(Данные) ) ) + 1 ) = " " ; " " ;
ИНДЕКС(Данные;ЧСТРОК(Данные)-
СТРОКА(ДВССЫЛ( " 1 : " &ЧСТРОК(Данные) ) ) + 1 ) ) }

Присвоим диапазону А 4 : А 1 3 имя Данные, а формулу массива введем в диапазон
С4 : С13. На рис. 15.10 продемонстрирована работа представленной выше формулы массива.

Рис. 15.10. Порядок следования элементов
массива изменяется на противоположный
с помощью формулы массива

Динамическая сортировка значений диапазона

Предположим, существует рабочий лист с одномерным вертикальным диапазоном
Данные. Для сортировки значений массива по убыванию воспользуемся следующей
формулой массива. Следует заметить, что данная формула работает только с числовыми
значениями, но не с текстом.
{НАИБОЛЬШИЙ(Данные;СТРОКА(ДВССЫЛ( " 1 : "&ЧСТРОК(Данные)) ) ) }

На рис. 15.11 показан пример; диапазон ввода находится в столбце А; формула мас­
сива введена в столбец С.

Эта формула может оказаться полезной, если требуется отсортировать данные немед­
ленно. Начните с присвоения диапазону данных имени Данные. Затем введите формулу
в другой диапазон данных, размещенный в тех же строках.

Если в исходной ячейке не содержится данных, формула массива отображает значе­
ние ошибки #ЧИСЛО!. В следующей, модифицированной формуле используется функ­
ция ЕСЛИОШИБКА. Она позволяет избежать отображения на экране сообщения об ошиб­
ке. Эта формула используется в столбце Е на рис. 15.11.
{ = Е С Л И О ШИ Б К А ( Н А И Б О Л Ь ШИ Й ( Данные ;

СТРОКА(ДВССЫЛ( " 1 : " &ЧСТРОК(Данные) ) ) ) ; " " ) }

392 Часть IV. Формулы массивов

Эта формула должна вводиться в такой же по размеру диапазон, что и Данные. Она
тоже сортирует только числовые значения.

Для сортировки значений Данные по возрастанию можно использовать следующую
формулу:
{ НАИМЕНЬШИЙ(Данные;СТРОКА(ДВССЫЛ( " 1 : " &ЧСТРОК(Данные) ) ) ) }

Рис. 15.11. Формула массива, введенная в столбце с, сортирует
значения, введенные в столбец а

Возвращение списка уникальных значений диапазона

Если существует одномерный диапазон с именем Данные, для вывода списка уни­
кальных элементов этого диапазона можно воспользоваться следующей формулой:
{ =ИНДЕКС(Данные; НАИМЕНЬШИЙ(ЕСЛИ(ПОИСКПОЗ(Данные;

Данные; 0 ) =СТРОКА(ДВССЫЛ( " 1 : " &ЧСТРОК(Данные)) ) ;
ПОИСКПОЗ(Данные; Данные; 0 ) ; " " ) ;
СТРОКА(ДВССЫЛ( " 1 : "&ЧСТРОК(Данные)) ) ) ) }
Эта формула не работает, если диапазон Данные содержит хотя бы одну пустую
ячейку. В незаполненных ячейках формулы массива будет отображаться сообщение об
ошибке #ЧИСЛО! . На рис. 15.12 представлен пример применения формулы массива.
Диапазон А5 :А23 имеет имя Данные, а формула массива введена в диапазон С5 : С23.
Обратите внимание, что в незаполненных ячейках отображается ошибка #ЧИСЛО!.
Чтобы избежать отображения значения ошибки, лучше воспользоваться функцией
ЕСЛИОШИБКА.
{ЕСЛИОШИБКА(ИНДЕКС(Данные; НАИМЕНЬШИЙ(ЕСЛИ
(ПОИСКПОЗ(Данные; Данные;0)=СТРОКА(ДВССЫЛ
( " "&ЧСТРОК(Данные)) ) ;

ПОИСКПОЗ(Данные; Данные; 0 ) ; " " ) ) ) ) ) ; " " ) }
На рис. 15.12 эта формула используется в столбце Е.

Отображение календаря в диапазоне

На рис. 15.13 представлен результат одной из формул, отображающей “живой” ка­
лендарь в диапазоне ячеек. Если изменить дату верхней части диапазона, календарь ав­
томатически отобразит даты соответствующего месяца и года.

Глава 15. Магия формул массива 393

Рис. 15.12. Формула массива применяется для созда­
ния списка уникальных элементов диапазона данных

Рис. 15.13. Отображение календаря с помощью одной формулы массива

Компакт-диск

Эта рабочая книга содержится на прилагаемом компакт-диске в файле a r ­
ray formula calendar.xslx.
Для создания приведенного выше календаря в диапазоне В2 :Н9 выполните следую­
щие действия.
1. Выделите диапазон ячеек В2 :Н2 и выберите команду Главная1^Выравнивание^
Объединить и поместить в центре.
2. Введите дату в объединенный диапазон. День месяца в данном случае не имеет
значения.
3. Введите аббревиатуры дней недели в диапазон ВЗ : НЗ.
4. Выделите ячейки В4 :Н9 и введите следующую формулу массива (не забывайте,
что после ввода формулы массива следует нажимать клавиши <Ctrl+Shift+Enter>,
а не просто <Enter>).
{ =ЕСЛИ(МЕСЯЦ(ДАТА(ГОД(В2);МЕСЯЦ(В2);1)) < >МЕСЯЦ(ДАТА(ГОД(В2) ;
МЕСЯЦ(В2) ; 1 ) ) - (ДЕНЬНЕД(ДАТА( (ГОД( В2) ;МЕСЯЦ(В2); 1) ) - 1 ) +
{ 0 ; 1 ; 2 ; 3 ; 4 ; 5 } * 7+ { 1 ; 2 ; 3 ; 4 ; 5 ; б ; 7 } - 1) ; ""; ДАТА(ГО Д (В 2 ) ;

394 Часть IV. Формулы массивов

МЕСЯЦ(В2) ; 1 ) - (ДЕНЬНЕД(ДАТА( (ГОД( В2) ;МЕСЯЦ(В2); 1) ) - 1 ) +
{0;1;2;3;4;5}*7+{1;2;3;4;5;6;7}-1)}

5. Отформатируйте диапазон В4 : Н9 с пользовательским форматом d. В таком форма­
те на экране будут отображаться только даты. Для выбора этого формата восполь­
зуйтесь категорией Дополнительно диалогового окна форматирования ячеек.

6. Скорректируйте ширину столбцов согласно своим предпочтениям.

Изменение месяца и года в ячейке В2 приводит к автоматическому обновлению ка­
лендаря. После создания календаря можно скопировать его диапазон в любое место ра­
бочего листа или книги.

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

© Перекрестная ссылка

Массивы констант рассматриваю тся в главе 14.

Рассмотрим еще одну версию приведенной выше формулы. Функция ЕСЛИ в исход­
ной формуле проверяет каждую дату на предмет того, принадлежит ли она текущему ме­
сяцу. Если это не так, функция ЕСЛИ возвращает пустую строку.

Приведенную выше формулу массива можно несколько упростить, удалив функцию
ЕСЛИ.

=ДАТА(ГОД(В 2 ) , МЕСЯЦ№ 2 ) , 1 ) - (ДЕНЬНЕД(ДАТА(ГОД(В2) , МЕСЯЦ(В2) ,
1 ) ) - 1 ) + { 0 ; 7 ; 1 4 ; 2 1 ; 2 8 ; 3 5 } + { 0 #1 / 2 , 3 / 4 , 5 , б }

Эта версия формулы отображает также дни предыдущего и следующего месяцев
(рис. 15.14). Предыдущая формула отображала ячейки, относящиеся к другим меся­
цам, пустыми.

Рис. 15.14. Упрощенная формула, отображающаядаты предыдущего и следующего месяцев

Полезные методики
применения формул

В этой части...

Глава 16
Умышленные циклические ссылки

Глава 17
Диаграммы

Глава 18
Сводные таблицы

Глава 19
Условное форматирование и проверка данных

Глава 20
Создание мегаформул

Глава 21
Инструменты и методы отладки формул

Глава

Умышленные
циклические ссылки

В этой главе...

♦ Что такое циклическая ссылка
♦ Преднамеренное использование циклических ссылок
♦ Определение параметров итераций
♦ Примеры формул, в которых используются циклические ссылки
♦ Потенциальные проблемы, связанные с циклическими ссылками

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

Что такое циклическая ссылка

При вводе формул в электронный лист может появиться сообщение Excel, подобное
показанному на рис. 16.1. Таким образом программа сообщает о том, что введенная
формула приведет к возникновению циклической ссылки. Такая ссылка возникает в слу­
чае, когда формула ссылается на ячейку, в которую она занесена, прямо или косвенно.
Например, циклическая ссылка возникнет, если в ячейку А 10 ввести приведенную ниже
формулу (формула обращается к ячейке, содержащей ее).
=СУММ(А1:А 1 0 )

После каждого вычисления в ячейке А10 формула снова пересчитывается, так как со­
держимое данной ячейки было изменено. Теоретически вычисление должно продол­
жаться до тех пор, пока значение в ячейке А10 не достигнет бесконечности.

398 Часть V. Полезные методики применения формул

Рис. 16.1. Таким образом Excel сообщает о том, что формула содержит цик­
лическую ссылку

Исправление случайных циклических ссылок

После вывода сообщения о возникновении циклической ссылки Excel предлагает два
варианта последующих действий:

• щелкните на кнопке ОК, если циклическая ссылка введена преднамеренно;
• щелкните на кнопке Справка, чтобы попытаться исправить ошибку, если цикли­

ческая ссылка возникла случайно.
Как правило, возникновение циклических ссылок обусловлено ошибками при вводе
символов или неверным указанием диапазонов. К примеру, при создании формулы
в ячейке В 1 0 мог быть ошибочно введен аргумент В 1 : В 1 0 вместо правильного В 1 : В9.
Если источник ошибки известен, щелкните на кнопке ОК. В строке состояния Excel
выведет сообщение, напоминающее о существовании циклической ссылки. В данном
случае это будет сообщение “Ц и к л и ч е с к и е с с ы л к и : В 1 0 ” . Если активизировать дру­
гую рабочую книгу или лист, вы увидите сообщение “Ц и к л и ч е с к и е с с ы л к и ” (без
указания адреса ячейки). После этого можно исправить формулу и устранить ошибку.
Если вы получили сообщение о возникновении циклической ссылки и не знаете, где она
находится, щелкните на кнопке Справка. При этом будет выведено окно справочной сис­
темы с информацией по циклическим ссылкам, а также будет выведена графическая диа­
грамма, помогающая идентифицировать проблему. Для более подробной информации об
ошибке выберите команду Формулы^Зависимости формул^ Проверка наличия оши­
бок^ Циклические ссылки, и вы увидите список ячеек, вовлеченных в циклическую ссыл­
ку (на рис. 16.2 список содержит одну ячейку). Если вы не в состоянии выяснить, какая
именно из ячеек привела к возникновению циклической ссылки, переходите к следующей
в списке. И так продолжайте до тех пор, пока в строке состояния больше не будет отобра­
жаться сообщение о циклической ссылке.

Рис. 16.2. Список циклических ссылок

Глава 16. Умышленные циклические ссылки 399

Примечание

Если команда Циклические ссылки отсутствует, значит, во вкладке Формулы
диалогового окна параметров программы установлен флажок Включить ите­
ративные вычисления. Этот флажок рассматривается далее.

Косвенные циклические ссылки

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

Перекрестная ссылка

Более подробно процесс отслеживания циклических ссылок описан в главе 21.

Преднамеренное использование
циклических ссылок

Как уже отмечалось, циклические ссылки иногда могут умышленно использоваться
для решения определенных задач. Правильно заданные циклические ссылки могут вы­
ступать функциональным эквивалентом циклических структур, используемых в языках
программирования (таких как VBA). С помощью преднамеренных циклических ссылок
выполняется рекурсия или итерация. Каждый промежуточный результат используется
в последующих вычислениях, в итоге приводя к решению задачи.

По умолчанию Excel не выполняет итерационные вычисления. Чтобы разрешить про­
грамме выполнение итеративных вычислений, следует указать это явно в окне парамет­
ров Excel. Для этого откройте диалоговое окно Параметры Excel, перейдите во вкладку
Формулы и установите флажок Включить итеративные вычисления (рис. 16.3).

Рис. 16.3. Для вычисления циклических ссылок необходимо установить флажок Включить
итеративные вычисления

400 Часть V. Полезные методики применения формул

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

Рис. 16.4. Создав умышленную циклическую ссылку, компания вычи­
тает из чистой прибыли расходы на благотворительность в объеме
пяти процентов

Примечание

Циклическую ссылку нельзя вычислить, если отключен упомянутый выше
флажок поддержки итераций.

Текст в столбце А соответствует именованным ячейкам в столбце В, а ячейка СЗ на­
звана Доля. Ячейка Б л а г о т в о р и т е л ь н о с т ь (ВЗ) содержит следующую формулу:
=Доля*Чистая_прибыль

Ячейка Ч и с т а я _ п р и б ы л ь (В4) отображает следующую формулу:
=Общий_доход-Расходы-Благотворительность

Данная формула создает разрешаемую циклическую ссылку. Excel продолжит вычис­
ления до тех пор, пока результат формулы не приведет к решению.

Примечание

Читателям первого издания данной книги известно о другом варианте ре­
шения данной задачи (без использования циклических ссылок). Для вычис­
ления ячейки Чистая_прибыль используется такая формула:
= (Общий_доход-Ра сходы) / (1+Доля)
Затем следует вычислить значение ячейки Б л а г о т в о р ит е ль н ос т ь с помо­
щью следующей формулы:
=Доля*Чистая_прибыль
В общем случае, если известна формула нециклического получения резуль­
тата, лучше применить ее, а не циклическую ссылку.

Компакт-диск

Показанная на рис. 16.4 рабочая книга содержится на прилагаемом ком­
пакт-диске в файле n e t p r o f i t c i r c u l a r . x s l m ( Ch apt er l 6_RUS . xs l m) .
На листе есть кнопка. Щелкните на ней, и в результате будет отображена
вкладка Вычисления диалогового окна Параметры. Таким образом, вы имее­
те возможность экспериментировать с различными параметрами итераций.
Кроме того, на компакт-диске содержится файл с демонстрацией вычисле­
ния данных без использования циклических ссылок (файл n e t p r o f i t
(not circular) .xlsx).

Вкладка Ф ормулы диалогового окна параметров программы содержит группу пара­
метров, относящихся к вычислению циклических ссылок.

Глава 16. Умышленные циклические ссылки 401

• Флажок Включить итеративные вычисления. Если он не установлен, Excel не
производит итеративные вычисления и при наличии формулы с циклической
ссылкой отображает диалоговое окно предупреждения. Если создается умышлен­
ная циклическая ссылка, необходимо установить данный флажок.

• Поле Предельное число итераций определяет максимальное число итераций, про­
изводимых Excel. Данное значение не может быть больше 32767 и меньше единицы.

• Поле Относительная погрешность определяет, когда программа должна закон­
чить выполнение итераций. Например, если установлено значение 0 ,0 1 , итерации
прекратятся, когда будет получен результат вычисления, отличающийся на один
процент от предыдущего значения.

Примечание

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

Для того чтобы увидеть, как все это работает, откройте пример рабочей книги, пред­
ставленный в предыдущем разделе.

1. Установите флажок Включить итеративные вычисления, как было описано выше.

2. Установите значение Предельное число итераций равным единице.

3. Установите значение Относительная погрешность равным 0 ,0 1 .

4. Введите другое значение в ячейке Общ ий_доход (ячейка В1).

5. Нажмите клавишу <F9> для пересчета листа.

Так как максимальное количество итераций задано равным единице, нажатие клави­
ши <F9> приведет к выполнению лишь одного цикла вычислений. Нетрудно заметить,
что значение ячейки Б л а г о т в о р и т е л ь н о с т ь не совпадает с решением. Нажмите кла­
вишу <F9> еще несколько раз — и значение ячейки станет более близким к искомому
решению. После того как решение найдено, нажатие клавиши <F9> не приведет к суще­
ственным изменениям. Если задано небольшое количество итераций, решение появляет­
ся фактически незамедлительно (если оно не включает сложные вычисления).

Определение параметров итераций

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

При определении параметров итераций и вычислений, которые необходимо исполь­
зовать, Excel руководствуется следующими правилами.

402 Часть V. Полезные методики применения формул

• В первой открытой рабочей книге применяется режим вычислений, который был
сохранен в ней. Если открыть другие книги, в них будет применяться тот же ре­
жим вычислений.

• Предположим, что существуют две рабочие книги — К н и г а 1 и К ни га 2. В К н и г а 1
флажок Включить итеративные вычисления сброшен (по умолчанию это именно
так), а в Кн и га 2 (использующей умышленные циклические ссылки) данный флажок
установлен. Если сначала открыть Кн и г а 1 , а затем К н и г а 2 , в обеих рабочих кни­
гах функция вычисления итераций будет отключена. Но если открыть их в обратной
последовательности, данная функция будет включена для обеих книг.

• Изменение режима вычислений для одной книги приводит к изменению режима
вычислений всех рабочих книг.

• Если обе рабочие книги, К н и г а 1 и К н и г а 2, открыты, изменение режима вычис­
лений в одной из них коснется их обеих.

• Все рабочие листы книги применяют один и тот же режим вычислений.

• Если все рабочие книги закрыты и вы создаете новую, в ней будут применяться те
же установки, что имела последняя закрытая рабочая книга. Исключение состав­
ляет создание рабочей книги на основе шаблона. В этом случае используются па­
раметры, заданные в шаблоне.

• Если режим вычислений в книге изменен, а файл пересохранен, к рабочей книге
будет применен текущий режим вычислений.

Подведем черту. При открытии рабочей книги, в которой применяются итерации, нет
никакой гарантии, что сохраненные вместе с книгой параметры будут восстановлены при
ее следующем открытии.

Предупреждение

Если установлен флажок Включить итеративные вычисления, Excel не ото­
бражает предупреждение о циклической ссылке в диалоговом окне и строке
состояния. Таким образом, вы можете случайно создать циклическую ссыл­
ку и никогда не узнать об этом.

Примеры формул, в которых используются
циклические ссылки

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

Примечание

При выполнении представленных ниже примеров флажок Включить итера­
тивные вычисления должен быть установлен.

Глава 16. Умышленные циклические ссылки 403

Генерация уникальных случайных чисел

В показанном далее примере циклические ссылки применяются для генерации уникаль­
ных (т.е. неповторяющихся) случайных целых чисел, находящихся в предварительно задан­
ном диапазоне. Рабочий лист, показанный на рис. 16.5, генерирует 15 случайных чисел, нахо­
дящихся в диапазоне между наименьшим (ячейка Е1) и наибольшим (ячейка Е2) значениями.

Рис. 16.5. Использование циклической ссылки для гене­
рирования уникальных целых чисел в диапазоне A i : А 1 5

В столбце В отображается количество вхождений числа из столбца А (этот диапазон но­
сит имя СлучайныеЧисла). В качестве примера ниже приведена формула для ячейки В1.
Эта формула показывает число вхождений в столбец А числа, содержащегося в ячейке А1.
=СЧЁТЕСЛИ(СлучайныеЧисла;А 1 )

В.-ячейке В1 7 с именем Ч и с л о Д у б л и к а т о в отображается количество дублирую­
щихся значений при помощи следующей формулы:
=СУММ(В1:В15)-ЕСЧЁТ(В1:В15)

Каждая ячейка в столбце А содержит циклическую ссылку. Формула в ячейке А1,
скопированная вниз, имеет следующий вид:
=ЕСЛИ (ИЛИ ( Ч и с л о Д у б л и к а т о в о О ; (И (А1>=Наименьшее ;
А1<=Наиболыиее)) ) ; СЛУЧМЕЖДУ(Наименьшее; Наибольшее); А1)

Эта формула проверяет значение ячейки Ч и с л о Д у б л и к а т о в . Если оно больше нуля
или находится в диапазоне между Н а и м е н ь ш е е или Н а и б о л ь ш е е , генерируется новое
случайное число. Когда ячейка Ч и с л о Д у б л и к а т о в равна нулю, все ячейки диапазона
СлучайныеЧисла уникальны и находятся внутри заданного диапазона.

Ячейка С17 описывает состояние. Если значение ячейки Ч и с л о Д у б л и к а т о в не
равно нулю, в ней отображается текст “Попытайтесь еще раз” (для выполнения следую­
щей итерации следует нажать <F9). Если же число дубликатов нулевое, в ячейке отобра­
жается текст “Решение найдено”.
=ЕСЛИ(4юлоДубликатов<>;"ПОПЫТАЙТЕСЬ ЕЩЕ РАЗ";
"РЕШЕНИЕ НАЙДЕНО")

404 Часть V. Полезные методики применения формул

Для генерации новой последовательности случайных чисел нажмите <F9>. Количест­
во вычислений зависит от следующих факторов.

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

• От количества возможных значений (т.е. тех, которые находятся между значения­
ми Н а и м е н ь ш е е и Н а и б о л ь ш е е ) . К примеру, вам потребуется меньшее число
итераций, если вы захотите отобрать 15 уникальных значений из 200 возможных.

Решение рекурсивного уравнения

К рекурсивным относятся такие уравнения, в которых переменная расположена с обе­
их сторон знака равенства. Ниже приведены примеры рекурсивных уравнений.
х=1 / (х+1)
x = c o s (х)
x=SQRT(х +5)
х=2ж(1/х)
х=5+(1/х)

Рекурсивные уравнения можно решать с помощью циклических ссылок. Прежде все­
го, убедитесь, что в окне параметров Excel разрешены итерации. Затем преобразуйте
уравнение в формулу со ссылкой на саму себя. Чтобы решить первое уравнение, введите
в ячейку А1 следующую формулу:
= 1 /(А1+1)

Формула сходится к числу 0,618033988749895, что является значением лг, удовлетво­
ряющим условиям уравнения.

В некоторых случаях данная методика не работает. Например, рассмотрим следую­
щее уравнение. Формула, пытающаяся выполнить деление на нуль, приведет к соответ­
ствующей ошибке. Если формула вызывает такую ошибку, прежде всего, попробуйте
слегка изменить значения.
=ЕСЛИОШИБКА( 1 / (А1 +1 ) ; А 1 + 0 , 01)

В этой формуле была использована введенная в Excel 2007 функция ЕСЛИОШИБКА.
А вот еще одна формула, совместимая с предыдущими версиями Excel:
=ЕСЛИ(ЕОШ( ( 1 / (А1 +1 ) ) ;А1 +0 #0 1 ; А 1 / ( А 1 +1) )

На рис. 16.6 показан рабочий лист с примерами вычисления нескольких рекурсивных
формул в столбце В; формулы в столбце D проверяют результат. К примеру, формула
в ячейке D2 следующая:
= 1 / (В2+1)

Формулы в столбце Е отображают разность между значениями в столбцах В и D. Если
решение корректно, в столбце Е мы видим нуль (или значение, близкое к нулю).

Контакт-диск

Рабочая книга, продемонстрированная на рис. 16.6, содержится на прила­
гаемом компакт-диске в файле r e c u r s i v e e q u a t i o n s . x l s x ( C h a p t e r l 6 _
RUS.xslx).

Глава 16. Умышленные циклические ссылки 405

Рис. 16.6. Решение рекурсивного уравнения с помощью цикличе­
ской ссылки

Решение системы уравнений с помощью
циклических ссылок

Иногда циклические ссылки можно использовать для решения системы уравнений.
Рассмотрим следующую систему уравнений:

Зх + 4у = 8
Зх + 8у = 20

Требуется найти значения х и у, которые одновременно удовлетворяют двум уравне­
ниям. Сначала необходимо записать уравнения в виде функций х и у. Первое уравнение
в виде функции х имеет следующий вид:

х = (8- 4 у ) /3

Второе уравнение, представленное в виде функции у , приобретет следующий вид:

у= ( 2 0 - З х ) / 8

Как показано на рис. 16.7, ячейке В5 присвоено имя X, а ячейке В6 — Y. Формулы
в данных ячейках соответствуют приведенным выше уравнениям. Формула в ячейке В5
имеет следующий вид:

= (8 -(4*у))/3

В ячейке В6 (Y) записана следующая формула:

=(20-(3 * х ))/8

На рисунке также представлены графики двух данных уравнений. Пересечение двух
кривых дает значения X и Y, соответствующие решению системы уравнений.

Обратите внимание на описанную выше циклическую ссылку. Ячейка X ссылается на
ячейку Y, а ячейка Y, в свою очередь, — на ячейку X. Значения в этих ячейках содержат
следующее решение:

X = -1,33
Y = 3,00

Использование циклических ссылок для решения систем уравнений представляет ин­
терес, главным образом, в демонстративных целях, а не в практических. Нетрудно заме­
тить, что многие итерационные вычисления никогда не сходятся. Другими словами, ре­
зультат успешного пересчета в данном случае никогда не будет являться решением. Для
примера рассмотрим приведенную ниже систему уравнений. Решение для нее существу­
ет, однако найти его с помощью циклических ссылок невозможно.

х=4-у/2
х=3+2х

406 Часть V. Полезные методики применения формул

Рис. 16.7. На данном рабочем листе решена система двух уравнений

Компакт-диск

Рабочая книга с приведенным примером содержится в файле s i m u l t a n e o u s
e q u a t i o n s . x s l x (Chapt erl6_RUS . x l s x ) на прилагаемом компакт-диске.

Перекрестная ссылка

Оптимальным способом решения систем уравнений в Excel является ис­
пользование матриц; соответствующие примеры приведены в главе 10.

Анимация диаграмм с помощью итераций

Последний пример использования преднамеренных циклических ссылок в этой главе
связан с диаграммами (рис. 16.8). Он помогает понять назначение циклических ссылок.

Линия на диаграмме отображает функцию косинуса для значений от нуля до 12,6 ра­
диан, используя диапазон А6 : В24.

Эта диаграмма имеет дополнительный ряд данных, состоящий из одной точки в диа­
пазоне А2 :В2 — она указывает на местоположение маркера на графике. Формула цик­
лической ссылки в ячейке А2 следующая:
=ЕСЛИ(А2>12/ 6 ; 0 ; А 2 + 0 , 005)

Формула в ячейке В2 следующая:
=COS(В2)

При нажатии клавиши <F9> для пересчета рабочего листа значение в ячейке А2 увели­
чивается, вызывая таким образом изменение положения круглого маркера на диаграмме.
Если вы будете постоянно нажимать <F9>, то увидите постепенное передвижение маркера
по графику. Скорость движения маркера по графику зависит от двух факторов:

Глава 16. Умышленные циклические ссылки 407

• от величины приращения в формуле (установите ее в 0 , 005);

• от величины количества итераций, установленной во вкладке Формулы диалого­
вого окна параметров программы.

Рис. 16.8. На этом графике представлена последовательность данных с форму­
лами, использующими циклические ссылки

Когда значение параметра Максимальное число итераций равно 100, а прираще­
ние составляет 0 , 0 0 5 , при каждой итерации значение ячейки А2 увеличивается на 0 , 5 .
Функция ЕСЛИ возвращает это значение в нуль, когда оно превышает 1 2 , 6 . Таким обра­
зом, маркер циклически проходит по графику и возвращается в его начало.

Компакт-диск

Пример, описанный в этом разделе, содержится в файле i t e r a t i v e c h a r t
a n i m a t i o n . x l s x ( C h a p t e r l 6 _ R U S . x l s x ) на прилагаемом компакт-диске.

Потенциальные проблемы, связанные
с циклическими ссылками

Несмотря на то что использование умышленных циклических ссылок действительно
бывает полезным, вы можете столкнуться с некоторыми проблемами. Лучшее, что мож­
но посоветовать, — это применять циклические ссылки с осторожностью и пониманием
того, как они работают.

Для того чтобы воспользоваться возможностями умышленных циклических ссылок, не­
обходимо, чтобы флажок вычисления итераций был установлен. В этом случае Excel не бу­
дет выводить предупреждение о наличии циклических ссылок. Поэтому существует риск
создания случайных циклических ссылок, о наличии которых вам даже не будет известно.

Количество итераций, указанное в поле Максимальное число итераций, применя­
ется ко всем формулам в рабочей книге, а не только к тем, в которых используются цик­

408 Часть V. Полезные методики применения формул

лические ссылки. Если рабочая книга содержит большое количество сложных формул,
это может привести к существенному замедлению работы. Таким образом, при исполь­
зовании умышленных циклических ссылок необходимо стремиться к максимальной про­
стоте рабочих листов.

Иногда может возникнуть необходимость отправить рабочую книгу, в которой ис­
пользуются циклические ссылки, другим пользователям. Если при открытии такой рабо­
чей книги функция вычисления итераций не включена, Excel отобразит сообщение об
ошибке, что способно озадачить пользователей.

Глава

Диаграммы

В этой главе...

♦ Понятие формулы ряда
♦ Создание ссылок на ячейки
♦ Примеры диаграмм
♦ Тренды

Для большинства людей работа с Excel сводится к анализу строк и столбцов данных.
Однако программа Excel представляет собой нечто большее. В частности, это касается
отображения данных в виде диаграмм. Встроенные в Excel средства создания диаграмм
настолько совершенны, что Microsoft рекомендует использовать их для построения диа­
грамм во всех приложениях Office. На практике же диапазон их использования гораздо
шире — их часто применяют со многими другими приложениями.

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

Понятие формулы ряда

Диаграмма создается на основе набора чисел, расположенных на рабочем листе. Эти чис­
ла можно вводить вручную или получать в результате применения формул. При обычных ус­
ловиях данные, используемые диаграммой, расположены на одном рабочем листе, в одном
файле, однако этим ваши возможности не ограничены. В любой диаграмме можно использо­
вать данные из любого количества рабочих листов и даже рабочих книг.

Диаграмма состоит из одного или нескольких рядов данных, и каждый ряд отобража­
ется в виде линии, группы столбцов и т.п. Каждый ряд данных имеет формулу (спе­
циальную функцию) РЯД. Когда выбираются ряды данных на диаграмме, Excel выделяет
соответствующую группу данных на рабочем листе, а формула РЯД отображается в
строке формул (рис. 17.1).

410 Часть V. Полезные методики применения формул

Рис. 17.1. В строке формул отображается функция ряд д л я выбранной серии дан­
ных на диаграмме

Примечание

Специальную функцию р я д нельзя использовать в ячейке рабочего листа.
И наоборот, функции рабочего листа нельзя использовать в специальной
функции р я д . В то же время у вас есть возможность редактировать аргумен­
ты функции р я д для изменения состава данных, используемых на диаграм­
ме. Можно также перетаскивать маркеры выделения, чтобы изменять пара­
метры диаграммы.
Функция РЯД имеет следующий синтаксис:
=РЯД(имя; п о д п и с и _ к а т е г о р и й ;значения/порядок/размеры)
Аргументы функции следующие.
• Имя (необязательно). Ссылка на ячейку, содержащую имя ряда, используемое
в легенде (легенда— это название ряда, например, Т о в а р 1 на рис. 17.1). Если
диаграмма содержит лишь один ряд данных, этот аргумент по умолчанию исполь­
зуется в качестве заголовка. Этот аргумент также может состоять из текста, за­
ключенного в кавычки. Если этот аргумент опущен, Excel использует имена по
умолчанию (к примеру, Р я д 1 ).
• П о д п и с и _ к а т е г о р и й (необязательно). Ссылка на диапазон, содержащий подпи­
си оси категорий. Если этот аргумент опущен, Excel использует последовательные
целые числа, начиная с единицы. В точечных диаграммах этот аргумент соответ­
ствует значению х. Допустима также ссылка на непоследовательный диапазон.
(Адреса диапазонов разделяются точками с запятыми и заключаются в круглые
скобки.) Аргумент может также состоять из массива разделенных точками с запя­
тыми значений, заключенных в фигурные скобки (или текста, обрамленного вос­
клицательными знаками).
• З н а ч е н и я (обязательно). Ссылка на диапазон, содержащий значения. На точечных
диаграммах этот аргумент определяет значения у. Допустимы непоследовательные
адреса диапазонов, разделенные точками с запятыми и заключенные в круглые
скобки. Этим аргументом может также быть заключенный в фигурные скобки мас­
сив значений, разделенных точками с запятыми.

Глава 17. Диаграммы 411

• Порядок (обязательно). Целое число, определяющее последовательность по­
строения ряда (используется только тогда, когда диаграмма содержит несколько
рядов). Использование ссылки на ячейку не допускается.

• Размеры (используется только в круговых диаграммах). Ссылка на диапазон, со­
держащий размеры сегментов в круговой диаграмме. Допустима также ссылка на
непоследовательный диапазон, разделенный точками с запятыми и заключенный
в круглые скобки. Этим аргументом может быть заключенный в фигурные скобки
массив значений, разделенных точками с запятыми.

Ссылки на диапазоны в функции РЯД всегда должны быть абсолютными и содержать
имя листа, например:
=РЯД (Лист1 ! $ В $ 1 ; ; Л и с т 1 ! $В$2 : $В$7 ;*1)

Ссылка может указывать и на непоследовательный диапазон. В этом случае каждый
диапазон разделяется точкой с запятой, а весь аргумент заключается в скобки. В сле­
дующей формуле РЯД набор значений состоит из диапазонов В 2 : В З и В 5 : В 7 :
=РЯД( ; ; ( Л и с т1! $В $2 :$ В$ 3; Ли ст1 !$ В$ 5: $В $7 ) ;1)

Несмотря на то что функция РЯД может ссылаться на данные других рабочих листов, все
данные одного ряда должны находиться на одном листе. Следующая формула РЯД не дейст­
вительна, так как в ней присутствуют ссылки на данные в двух разных рабочих листах:
=РЯД( ; ; (Лист1!$В$2;Лист2!$В$2) ;1)

Использование имен в функции р я д

В фукнции РЯД ссылки на диапазон могут быть заменены именами диапазонов. При
этом Excel изменяет ссылку в функции РЯД, включая в нее имя рабочей книги. Напри­
мер, в приведенной ниже формуле используется диапазон с именем МоиДанные (рас­
положенный в рабочей книге с именем b u d g e t . x l s ) . Excel добавляет имя рабочей кни­
ги и восклицательный знак.
=РЯД ( Л и с т 1 ! $ В $ 1 ; / b u d g e t . x l s ' ! МоиДанные; 1)

Использование имен в формуле ряда имеет одно существенное преимущество: при вне­
сении изменения, относящегося к имени диапазона, диаграмма автоматически отображает
новые данные. Предположим, что имя МоиДанные в предыдущем примере относится к
диапазону А 1 : А20. На диаграмме будет отображено двадцать значений из указанного диа­
пазона. Если затем с помощью диспетчера имен изменить определение этого имени
(предположим, на А 1 : АЗО), будут отображены уже 30 точек данных, определенных новым
диапазоном с этим же именем (редактировать диаграмму не потребуется).

Примечание

В формуле ряд нельзя использовать ссылки на структурированные таблицы.
Если при редактировании добавить ссылку на таблицу (например, Табли-
u a i [то в а р 1 ]), Excel преобразует ссылку на таблицу в стандартный адрес
диапазона.

Как уже отмечалось, в формуле РЯД нельзя использовать функции рабочего листа. Од­
нако можно создавать именованные формулы (использующие функции), которые приме­
няются в формуле РЯД. Этот прием позволяет реализовать самые невероятные задачи.

412 Часть V. Полезные методики применения формул

Отсоединение ряда диаграммы от данных

Обычно диаграмма Excel использует данные, хранящиеся в определенном диапазоне.
Стоит изменить данные, и диаграмма будет автоматически обновлена. Иногда может
возникнуть необходимость “отключить” диаграмму от ее данных и создать статическую
диаграмму, которая всегда сохраняет свой вид. Например, можно отобразить данные,
полученные методом подбора, и сохранить диаграмму, отражающую определенную ба­
зисную линию, чтобы ее можно было сравнивать с другими сценариями. Существуют
два способа создания статической диаграммы.

• В ставка в виде рисунка. Активизируйте диаграмму и выберите команду Глав­
ная^ Буфер обмена^Копировать^Копировать как рисунок. В открывшемся
диалоговом окне примите параметры по умолчанию. После этого активизируйте
любую ячейку и выберите команду Главная^Буфер обмена^Вставить (или
нажмите <Ctrl+V>). Результатом будет изображение скопированной диаграммы.
Впоследствии можно удалить исходную диаграмму.

• Преобразование ссылок на диапазоны в массивы. Щелкните на ряде диаграм­
мы, а затем — в строке формул, чтобы активизировать формулу РЯД. Нажмите
клавишу <F9> для преобразования диапазона в массив (рис. 17.2). Повторите это
действие для каждого ряда. Данный прием (в отличие от вставки в виде рисунка)
сохраняет возможность дальнейшего редактирования и форматирования диаграм­
мы. Описанная процедура не работает в том случае, если используется слишком
большой объем данных (функция РЯД ограничена 1024 символами).

Рис. 17.2. Функция р я д может использовать массивы вместо диапазонов

Советы по созданию диаграмм

Ниже приведен ряд советов, которые могут оказаться полезными при построении
диаграмм.

• Щелкните правой кнопкой на любом элементе диаграммы и выберите в контекст­
ном меню пункт Формат (за этим словом всегда следует имя конкретного элемента)
или нажмите <Ctrl+1 >. Откроется диалоговое окно форматирования элемента диа­
граммы, позволяющее выполнить операции, недоступные на ленте. Это окно оста­
нется открытым до тех пор, пока вы сами его не закроете.

• Чтобы открыть диалоговое окно Формат, можно также дважды щелкнуть на элемен­
те диаграммы.


Click to View FlipBook Version