Функции COUNTIF и SUMIF Функции COUNTIF и SUMIF часто используются для получения сводных данных. Функция COUNTIF находит количество значений, удовлетворяющих критерию в заданном диапазоне. Функция имеет следующий общий вид: COUNTIF(диапазон; критерий) Функция SUMIF находит значения, удовлетворяющие критерию в диапазоне, и суммирует значения в тех же позициях из диапазона. Функция имеет следующий общий вид: SUM IF (диапазон 1; критерий1; диапазон2 ) Если диапазон 2 отсутствует, то суммируются соответствующие значения из диапазона1. Критерием может быть • константа: 13, "kask", • имя ячейки или ее адрес: kood, B15, • сравнение в виде "знак сравнения значение ": "<0", ">=5000". =COUNTIF(liigid; "береза") Находит количество слов береза в диапазоне liigid. =COUNTIF(liigid; liik) Находит количество значений из ячейки liik в диапазоне liigid. =SUMIF(arvud; ">0") Находит сумму положительных чисел в диапазоне arvud. =SUMIF(arvud; ">0") / COUNTIF(arvud ;">0") Находит среднее арифметическое значение положительных чисел в диапазоне arvud. Задание- для моей базы данных составить сводную таблицу по продавцам, клиентам и товарам > < 106800 39715 <> критерий для диапазона не ввести Natalie Petersen Kevin Barney Frank DiVito Nicole Brockmann Aileen Jaitin 34800 SUMIF(Sheet1!G:G;">10000") SUMIF(Sheet1!G:G;"<5000") посчитать как разность больше либо равно 5000 и больше 10000 SUMIF(Sheet1!C:C;B7;Sheet1!G:G) 40140 57270 68430 25625 Nicole Brockmann 7 COUNTIF(база!C:C;B13) Функции поиска и ссылок Функции поиска и ссылок дают возможность ссылаться на значения ячеек и наборов ячеек, делать запросы и выборки из таблиц, создавать связи между таблицами и автоматически переносить данные из одной таблицы в другую находить в таблицах данные, отвечающие заданным условиям и др. Ниже приведены основные функции поиска и ссылок. Элементы в квадратных скобках являются не обязательными. В следующих разделах наиболее важные функции рассматриваются подробнее. 1 Функции ссылок INDEX (диапазон; [ индекс_строки; ] [ индекс__столбца ]) Возвращает из данного диапазона значение ячейки, заданной индексами строга и столбца. ROW([ набор ячеек ]), COLUMN( [набор_ячеек]) Возвращают номер строки или столбца рабочего листа, соответствующий первой строке или столбца заданного набора ячеек. Если набор ячеек не задан, то возвращается номер строки или столбца той ячейки рабочего листа, в которой расположена данная формула. ROWS (набор_ячеек), COLUMNS(Ha6op_ячeeк) Возвращают соответственно количество строк и столбцов в заданном наборе ячеек. Функции поиска MATCH (искомое; диапазон [; способ_поиска ]) Возвращает порядковый номер искомого значения в заданном диапазоне (векторе). VLOOKUP (искомое; диапазон; номер_столбца [;способ_поиска]) Находит искомое значение в первом столбце диапазона и возвращает значение из столбца, заданного номером _столбца, в найденной строке. HLOOKUP (искомое; диапазон; номер__строки [;способ_поиска]) Находит искомое значение в первой строке диапазона и возвращает значение из строки, заданной номером_строки, в найденном столбце. LOOKUP (искомое; вектор1, вектор2) Находит искомое значение в векторе1 и возвращает соответствующее значение из вектора2. В некоторой степени условно можно отнести к этим функциям также функции COUNTIF и SUMIF. Формально они относятся к математическим функциям, однако также связаны и с поиском: SUMIF (диапазон1; критерий [;диапазон2 ]) Находит сумму значений, удовлетворяющих критерию из диапазона1 или диапазона2 COUNTIF (диапазон; критерий) Находит количество значений в диапазоне, удовлетворяющих критерию Функция INDEX Функция INDEX возвращает (находит) в данном диапазоне значение ячейки, заданное индексами (порядковыми номерами). Функция имеет три варианта: INDEX {диапазон; индекс__строки; индекс_столбца) или INDEX (строка; индекс_столбца) или INDEX (столбец; индекс__строки) Здесь диапазон - это прямоугольная область - двухмерный массив (матрица), которая состоит из строк и столбцов, строка - часть строки рабочего листа - одномерный массив (вектор), столбец — часть столбца рабочего листа — одномерный массив (вектор), индекс_строки и индекс __столбца - порядковый номер строки (столбца) от начала массива (набора ячеек). Примеры использования функции- Найти название дня недели по данной дате. дата 09.02.2006 номер дня в неделе 4 WEEKDAY(C4;2) 2-это понедельник 1-ый название дня четверг INDEX(дни_недели;C5) вставил в функцию F3 2 дни недели 1понедельник 2вторник 3среда 4четверг 5пятница 6суббота 7воскресенье имя создал -insert -create -назвал дни_недели - автоматически Функция WEEKDAY по дате находит порядковый номер дня недели: 1 -Понедельник, 2Вторник, ... 7 — Воскресенье. Чтобы получить название дня недели, необходимо образовать вспомогательный вектор дни (здесь — дни), содержащий названия дней недели. Он может располагаться в любом месте рабочей книги, а также в другой рабочей книге. Найти тарифы работников (оплату за час) по категории зарплаты, если каждой категории соответствует тариф. Предположим, что набору ячеек вектора тарифов дано имя- Тарифы Категории зарплат работников записаны в столбце с именем «категория». В каждой ячейке столбца Тариф записана формула =INDEX(тарифы; категория). категории 1 тарифы 13 № | 2 | 20 | | 3 27 4 35 фамилия 1Иванов 2Петров 3Сидоров 4Фёдоров 5Потапов 5 42 6 55 категория тариф 3 7 5 4 3 7 65 часы 27 65 42 35 27 8 72 9 85 10 100 зарплата 8 216 10 650 12 504 14 490 16 432 по категории ставим тариф через индекс Задана таблица с данными о квартирах, которая может быть расположена на любом рабочем листе. Найти по номеру квартиры имя владельца, площадь и количество жителей Для ссылки с помощью функции INDEX на данные таблицы можно использовать различные варианты, например: • один двухмерный массив (матрица), • три одномерных массива (столбца). Двухмерный массив - имя «квартиры» задано набору ячеек, в котором n строк (n количество квартир) и 4 столбца. Для ссылки на данные необходимо использовать два индекса: индекс строки в таблице «квартиры» задается с помощью номера квартиры в ячейке krt, индексы столбца заданы с помощью констант. Три одномерных массива. Столбцам таблицы заданы отдельные имена: владелец, жителей, площадь. Для ссылок на данные используется один индекс, которым является номер квартиры. Его значение записано в ячейке krt. 3 Квартира Владелец 1Иванов 2Петров 3Сидоров 4Фёдоров 5Потапов жителей площадь 2 55 3 67 5 45 4 67 3 55 № квартиры 5 Владелец Потапов площадь 55 жителей 3 INDEX(Владелец;K11) по номеру квартиры определяем владельца, площадь и кол-во жителей Основные принципы использования функций поиска Искомое значение может быть текстом, числом, датой и т.п. Соответствующее ему значение ищется в диапазоне ключей таблицы поиска. Диапазон поиска или таблица поиска - таблица или вектор (столбец, строка), в которых ищется заданное значение, а также часто выбирается возвращаемое значение. Диапазон ключей или поле ключа - диапазон (столбец или строка), в котором ищется значение, соответствующее заданному. Часто часть диапазона поиска (столбец, строка) может быть в свою очередь отдельным диапазоном. Возвращаемое значение - позиция искомого значения (порядковый номер) в диапазоне ключей или найденное на его основе значение в диапазоне поиска. Используется два основных способа поиска: • точное соответствие, или поиск по ключу, • поиск промежутка. При поиске по ключу предполагается, что в диапазоне ключей имеется точно такое же значение, как искомое. Обычно искомое значение, а также значения в диапазоне ключей представляют собой какие-либо коды или признаки, которые однозначно идентифицируют записи (строки) в таблице поиска (диапазоне поиска). Если искомая величина в диапазоне ключей отсутствует, то выдается сообщение об ошибке. Значения в диапазоне ключей могут быть в любом порядке. При поиске промежутка значений в общем случае не предполагается существование искомого значения в диапазоне ключей. Если точно такое значение отсутствует, то искомое значение сопоставляется с ближайшим значением, которое меньше искомого. Значения в диапазоне ключей должны быть упорядочены в возрастающем порядке. Обычно искомое значение и значения в диапазоне ключей представляют собой числа. В диапазоне ключей они представляют собой нижнюю границу искомого промежутка. Функция MATCH Функция MATCH возвращает порядковый номер (позицию) искомого значения в данном векторе (строке или столбце), её общий вид следующий: 4 MATCH (искомое; вектор [; способ_поиска ]) способ_поиска - не обязателен, возможные значения: 0 и 1. По умолчанию (если отсутствует) равен 1. 0 - точное совпадение, или поиск по ключу. Значения в векторе могут быть в любом порядке. Если искомого значения в векторе нет, выдается сообщение об ошибке - #N/A. 1 - поиск промежутка. Значения в векторе должны быть упорядочены в возрастающем порядке. Если искомого значения в векторе нет, то возвращается ближайшее меньшее значение. Самостоятельно функция используется сравнительно редко. Обычно она используется вместе с функцией INDEX. Примеры Найти в прейскуранте по виду древесины (виды) её цену. ель liik Виды Цены береза 450 сосна 510 осина 390 ель 550 дуб 850 ясень 650 nr 1 2 3 4 5 6 4 MATCH("ель";Виды;0) hind 550 INDEX(Цены;G3) 550 INDEX(Цены;MATCH(G2;Виды;0)) Вид древесины (liik) ищется с помощью функции MATCH в векторе Liigid (Виды). Функция возвращает порядковый номер искомого значения в заданном векторе (береза 1, сосна - 2 и т.д.). Так как предполагается точное совпадение, признак способа поиска равен 0. Порядковый номер, найденный функцией MATCH, используется в функции INDEX для ссылки на соответствующий элемент в векторе Hinnad (Цены). Векторы (столбцы) Liigid и Hinnad не обязательно должны быть расположены рядом, имеет значение только их соответствие. Найти вид древесины (Виды), имеющей наибольшую цену (Цены) максцена 850 Вид дуб Вид дуб MAX(Цены) INDEX(Виды;MATCH(B14;Цены;0)) INDEX(Виды;MATCH(MAX(Цены);Цены;0)) при заполнении вторго варианта индекса надо сперва занести в функции match и 0, и затем идти в максимум Функция MAX находит максимальное значение в векторе Hinnad (Цены). Функция MATCH находит порядковый номер этого значения в векторе Hinnad и функция INDEX возвращает имя с соответствующим номером из вектора Liigid (Виды). Найти стоимость древесины в зависимости от поперечного сечения, используя приведенный ниже прейскурант d Цена 1 520 5 2 550 2 3 2 565 5 INDEX(Цены1;MATCH(d;Размеры)) Прейскурант Диаметр Цена <10 440 480 520 550 580 565 10-14 15-19 20-24 25-29 >=30 Таблица поиска Размеры 0 Цены 440 10 15 20 480 520 550 580 565 25 30 Для поиска цен можно использовать функции MATCH вместе с функцией INDEX. Первая из них должна находить по заданному размеру диаметра соответствующий промежуток, вторая - по полученному порядковому номеру найти соответствующую цену. 1 Прейскурант, приведенный выше, не подходит в таком виде для 2 3 поиска функцией MATCH. Необходимо создать подходящую 4 таблицу поиска. 5 Она состоит из двух векторов, значения в которых находятся в 6 соответствии: Размеры и Цены. При составлении таблицы поиска учитывается, что функция MATCH при отсутствии точного совпадения значений возвращает ближайшее меньшее значение: в векторе Размеры заданы нижние границы промежутков размеров, в вектор Цены - цены для соответствующих размеров поперечного сечения. Для сравнения приведена возможная функция IF для нахождения цен =IF(d<10;440;IF(d<15;480;IF(d<20;520;IF(d<25,550;IF(d<30;580;565))))) Функция IF содержит константы. Если прейскурант изменится, то необходимо изменять формулы. В случае использования функций MATCH и INDEX вносить изменения следует только в таблицу поиска. Найти цену древесины в зависимости от вида и размера поперечного сечения. У нас имеется таблица Hinnad стоимости древесины в зависимости от вида дерева и диаметра –для наименования выделял без левой и верхней строки –define. Столбец Виды 1 тоже озаглавил (create), а строку Размеры1 –определил. Индекс искать теперь надо в массиве, а не в столбце -1-ый вариант. В приведенном примере первая функция MATCH находит порядковый номер вида в векторе виды (соответствует номеру строки в таблице Hinnad), вторая - порядковый номер значения, соответствующего величине поперечного сечения (d) в векторе размеры (задает номер столбца в таблице Hinnad). Таблица продаж древесины вид1 d1 береза 15 сосна 22 цена 410 660 количество 56,6 70,5 всего 23 206,00 43 005,00 INDEX(hinnad;MATCH(вид1;виды1;0);MATCH(d1_;Размеры1)) Функция INDEX возвращает по найденным числам соответствующее значение из таблицы hinnad. виды1 haab 0 180 10 250 15 290 сосна 480 530 береза 230 ель saar дуб 440 510 600 1 Таблица 20 Hinnad размеры1 360 25 380 30 370 1 570 610 640 625 2 350 410 480 500 490 3 480 540 680 2 520 610 750 3 550 660 850 4 580 680 900 565 670 1100 4 5 6 5 6 hinnad - таблица (6 * 6), виды1- столбец (6), размеры1- строка (6) 6 Функции VLOOKUP и HLOOKUP Функция VLOOKUP находит позицию (строку) искомого значения в 1-м столбце диапазона и возвращает значение из найденной строки в столбце с заданным номером. Общий вид функции следующий: VLOOKUP (искомое; диапазон; столбец [; способ_поиска ]) Здесь способ поиска не является обязательным. Задается с помощью логических значений True или False, по умолчанию - True. True (то же, что 1 в функции MATCH) - поиск промежутка. Значения в 1-м столбце (в диапазоне поиска) должны быть упорядочены в возрастающем порядке. Если такого значения нет, то в качестве результата возвращается ближайшее меньшее значение. False (то же, что 0 в функции MATCH) - точное совпадение или поиск по ключу. Значения в 1-м столбце могут быть в любом порядке. Если искомого значения нет, то выдается сообщение об ошибке - #N/A. Примеры Найти в прейскуранте по коду товара его название и цену прейскурант коды товар цены VLOOKUP(код;прейскурант;2;FALSE) sk01 сахар FIN 15,00 задали имя для кода (столбец С и для sk02 сахар DEM 14,00 массива -А2:С9 sk13 сахар UKR 13,00 сами пишем нужный код в столбце кода jan01 мука 1. Сорт 13,00 (или использовать ячейку) и рядом jan02 мука 2. Сорт 12,00 получаем полное название и цену jar01 мука ржаная 11,00 Таблица учета продаж имеет следующий вид: таблица учёта продаж код jan02 sk02 jar01 sk01 название товара цена количество мука 2. Сорт 12 сахар DEM 14 мука ржаная 11 сахар FIN 15 VLOOKUP(код;прейскурант;2;FALSE) VLOOKUP(код;прейскурант;3;FALSE) Найти цену древесины в зависимости от размера поперечного сечения Размеры 0 Цены 440 10 15 20 480 520 550 580 565 25 30 Таблица поиска hinnakiri (6 * 2) Учет продажи древесины Цена d 15 22 32 8 520 550 565 440 Кол-во Стоимость VLOOKUP(d;цены;2) для сравнения INDEX(Цены1;MATCH(d;Размеры)) 7 Найти цену древесины в зависимости от вида и размера поперечного сечения размеры 1 0 2 3 4 10 15 20 5 25 6 30 осина сосна 180 480 250 530 290 570 360 610 380 640 370 625 береза ель 230 440 350 480 410 520 480 550 500 580 490 565 ясень дуб 510 600 540 680 610 660 850 680 900 670 1100 750 1 2 3 4 Таблица поиска hinnakiri - 6 * 7 и вектор (строка) - moodud - 1*6 Таблица учета продаж вид береза ясень d 15 22 цена 410 660 кол-во 56,6 5 6 7 стоим. VLOOKUP(вид;preis;MATCH(B60;razm)+1;FALSE) +1 из за наименования деревьев в массиве Функция VLOOKUP ищет вид древесины (вид) в 1-м столбце таблицы preis и задает строку, из которой выбирается возвращаемое значение. Функция MATCH ищет значение, соответствующее размеру поперечного сечения в векторе razm. Полученный порядковый номер плюс 1 (1 из за наименования деревьев в массиве) задает номер столбца для функции VLOOKUP. Эта функция (VLOOKUP) обычно заменяет две – INDEX и MATCH Функция HLOOKUP находит позицию (столбец) искомого значения в 1-й строке диапазона и возвращает значение из строки с заданным номером в найденном столбце. Общий вид функции следующий: HLOOKUP (искомое; диапазон; строка [; способ поиска ]) Принципы работы этой функции аналогичны работе VLOOKUP. Различие состоит только в ориентации таблицы поиска. 8 Функция LOOKUP Функция LOOKUP находит значение, соответствующее порядковому номеру искомого значения в векторе вектор1 (диапазон поиска), и возвращает значение с тем же номером из вектора вектор2. Функция имеет следующий общий вид: LOOKUP (искомое; вектор 1; вектор2) Значения в векторе вектор1 должны быть всегда упорядочены в возрастающем порядке. Если искомого значения нет, то возвращается значение, соответствующее ближайшему значению, меньшему чем искомое. Пример Найти стоимость древесины в зависимости от размера сечения. Диапазон поиска состоит из двух векторов Размеры и цены1. Размеры Цены1 0 440 10 480 15 520 20 550 25 580 30 565 Учет продажи древесины Цена d 15 22 32 8 520 550 565 440 Кол-во Стоимость LOOKUP(d;Размеры;Цены1) для сравнения INDEX(Цены1;MATCH(d;Размеры)) 9