Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Excel Starter 2010 Еще…Меньше
В этой статье описаны синтаксис формулы и использование функции СМЕЩ в Microsoft Excel.
Описание
Данная функция возвращает ссылку на диапазон, отстоящий от ячейки или диапазона ячеек на заданное число строк и столбцов. Возвращаемая ссылка может быть отдельной ячейкой или диапазоном ячеек. Можно задавать количество возвращаемых строк и столбцов.
Синтаксис
СМЕЩ(ссылка;смещ_по_строкам;смещ_по_столбцам;[высота];[ширина])
Аргументы функции СМЕЩ описаны ниже.
-
Ссылка — обязательный аргумент. Ссылка, от которой вычисляется смещение. Аргумент «ссылка» должен быть ссылкой на ячейку или на диапазон смежных ячеек, в противном случае функция СМЕЩ возвращает значение ошибки #ЗНАЧ!.
-
Смещ_по_строкам Обязательный. Количество строк, которые требуется отсчитать вверх или вниз, чтобы левая верхняя ячейка результата ссылалась на нужную ячейку. Например, если в качестве значения аргумента «смещ_по_строкам» задано число 5, это означает, что левая верхняя ячейка возвращаемой ссылки должна быть на пять строк ниже, чем указано в аргументе «ссылка». Значение аргумента «смещ_по_строкам» может быть как положительным (для ячеек ниже начальной ссылки), так и отрицательным (выше начальной ссылки).
-
Смещ_по_столбцам Обязательный. Количество столбцов, которые требуется отсчитать влево или вправо, чтобы левая верхняя ячейка результата ссылалась на нужную ячейку. Например, если в качестве значения аргумента «смещ_по_столбцам» задано число 5, это означает, что левая верхняя ячейка возвращаемой ссылки должна быть на пять столбцов правее, чем указано в аргументе «ссылка». Значение «смещ_по_столбцам» может быть как положительным (для ячеек справа от начальной ссылки), так и отрицательным (слева от начальной ссылки).
-
Высота Необязательный. Высота (число строк) возвращаемой ссылки. Значение аргумента «высота» должно быть положительным числом.
-
Ширина Необязательный. Ширина (число столбцов) возвращаемой ссылки. Значение аргумента «ширина» должно быть положительным числом.
Примечания
-
Если аргументы «смещ_по_строкам» и «смещ_по_столбцам» выводят ссылку за границы рабочего листа, функция СМЕЩ возвращает значение ошибки #ССЫЛ!.
-
Если высота или ширина опущена, то предполагается, что используется та же высота или ширина, что и в аргументе «ссылка».
-
Функция СМЕЩ фактически не передвигает никаких ячеек и не меняет выделения; она только возвращает ссылку. Функция СМЕЩ может использоваться с любой функцией, в которой ожидается аргумент типа «ссылка». Например, с помощью формулы СУММ(СМЕЩ(C2;1;2;3;1)) вычисляется суммарное значение диапазона, состоящего из трех строк и одного столбца и расположенного одной строкой ниже и двумя столбцами правее ячейки C2.
Пример
Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.
Формула |
Описание |
Результат |
---|---|---|
=СМЕЩ(D3;3;-2;1;1) |
Отображает значение ячейки B6 (4) |
4 |
=СУММ(СМЕЩ(D3:F5;3;-2;3;3)) |
Суммирует диапазон B6:D8. |
34 |
=СМЕЩ(D3;-3;-3) |
Возвращает ошибку, так как ссылка указывает на несуществующий диапазон листа. |
#ССЫЛ! |
Данные |
Данные |
|
4 |
10 |
|
8 |
3 |
|
3 |
6 |
Нужна дополнительная помощь?
Функция СМЕЩ в Excel — хороший помощник. Для чего мы можем ее использовать? По большому счету, функция нужна для того, чтобы выбрать значение в ячейке, отстоящей на N столбцов и на M строк от уже заданной ячейки. И, если это необходимо, выделить указанный диапазон для последующих вычислений. Но ценность этих функций не так велика без комбинации с функцией, например, СЧЕТЗ. Это позволит автоматически расширять диапазон автосуммы или, к примеру, рассчитывать среднее значение за последние семь дней (при добавлении новых значений).
В общем функция сильная и интересная, особенно для определения смещения ячеек в формулах.
Содержание
- Как работает функция СМЕЩ в Excel?
- Как автоматически расширить диапазон суммирования при добавлении строки в формуле со СМЕЩ в Excel?
- Похожие статьи
Как работает функция СМЕЩ в Excel?
Сначала начнем как всегда с официального объяснения и состава функции. Как говорит нам официальный сайт Microsoft:
Эта функция возвращает ссылку на диапазон ячеек, отстоящий от ячейки или диапазона ячеек на заданное число строк и столбцов. Возвращаемая ссылка может быть отдельной ячейкой или диапазоном ячеек. Можно задавать количество возвращаемых строк и столбцов диапазона
Немного сложновато? Согласен, сейчас разберемся.
Синтаксис:
=СМЕЩ(ссылка;смещ_по_строкам;смещ_по_столбцам;[высота];[ширина])
- Ссылка. Ссылка на ячейку, от которой мы начинаем отсчет (ячейка C2 в примере). Обязательный аргумент.
- Смещ_по_строкам. Чтобы найти ячейку D3, нам нужно отступить от ячейки C2 вниз на одну строку. Обязательный аргумент.
- Смещ_по_столбцам. Чтобы найти ячейку D3, нам нужно отступить от ячейки C2 вправо на один столбец. Обязательный аргумент.
- Высота. Если необходимо указать диапазон ячеек, то указываем высоту диапазона, т.е. выше ячейки D3 Необязательный аргумент.
- Ширина. Если необходимо указать диапазон ячеек, то указываем ширину диапазона, т.е. левее ячейки D3. Необязательный аргумент
Если вы указали необязательные аргументы Высота и Ширина, то функция возвратит ошибку, такую функцию можно использовать только в дальнейших вычислениях.
Если обязательные аргументы не указанны, они считаются за ноль
Теперь самое интересное:
Как автоматически расширить диапазон суммирования при добавлении строки в формуле со СМЕЩ в Excel?
Часто мы делаем Автосумму, формируется диапазон суммирования.
Если мы добавим еще строку с новым месяцем, то сумму придется растягивать или заново формировать. Как сделать, чтобы диапазон расширялся автоматически?
Запишем формулу, состоящую из функций СМЕЩ и СЧЁТЗ.
=СУММ(СМЕЩ(B2;СЧЁТЗ(A:A);))
Т,е. отсчитываем от ячейки B2 вниз количество строк равное количеству значений в столбец А.
Как автоматом посчитать первые 4 значения этого диапазона при добавлении строки?
В ячейку B12 введите формулу =СУММ(СМЕЩ(B2;;;3)), диапазон отсчитывается от ячейки B2 вниз на 3 строки
Программу Excel любят за возможность быстро и автоматически считать сложные формулы. Достаточно освоить элементарные команды, чтобы экономить значительное количество времени.
Функция СМЕЩ относится к более сложным массивам, поэтому используется редко. Но она может оказаться очень полезной при подсчете суммы, когда есть необходимость добавлять новые строки.
СМЕЩ и ее синтаксис
Эта функция позволяет возвращать ссылку на диапазон, который смещен относительно исходной ссылки на определенное число столбцов и строк. Определение команды звучит не совсем понятно для среднестатистического пользователя. Синтаксис параметров:
- Ссылка: это отправная ячейка. Относительно нее и происходит смещение.
- Смещение по строкам: количество строк, на которые нужно спуститься или подняться от отправной ячейки. Если идем вниз – значение будет положительным (от 1 и далее); если вверх – отрицательным (от -1 и далее).
- Смещение по столбцам: количество столбцов, на которые нужно уйти вправо или влево от отправной точки. Если вправо – положительное значение; влево – отрицательное.
- Высота и ширина: параметры диапазона, который будет возвращен функцией СМЕЩ. Если нам нужна одна ячейка, мы ставим цифры 1 и 1. Если нужна таблица, задаем иные значения, например 3 и 4, 6 и 8 и т.д.
У команды СМЕЩ есть несколько функций, но сегодня мы разберем самую распространенную и востребованную – автоматическое суммирование новых значений из вновь добавляемых строк.
Пример функции СМЕЩ
Тем, кто знакомится с функцией СМЕЩ, поначалу кажется, что ее вполне можно заменить привычной нам функцией СУММ. Но в некоторых случаях СУММ просто не работает. Разберем это на конкретном примере.
На предприятии создается база данных по ценам разных марок зубных паст, закупаемых на складе по разным оптовым ценам. Внизу указывается общая сумма, которую придется заплатить за единицу продукции. Пока нового товара на складе нет, таблица остается неизменной, и функция СУММ отлично справляется со своей задачей.
Но как только склад предлагает новую марку зубной пасты (назовем ее M), предприятию приходится добавлять дополнительные строки. Если сделать это и ввести новую цифру, то СУММ никак не отреагирует на новую строку (об этом говорит появление зеленого треугольника в верхнем левом углу ячейки и восклицательного знака рядом), потому что команда рассчитана для определенного диапазона. И мы действительно видим, что сумма осталась прежней = 554.
Важно грамотно записать формулу для команды СМЕЩ, чтобы она работала правильно. Действуем по порядку. Наша цель – сосчитать сумму, поэтому функция СУММ будет внешней.
Первым числом в СУММ будет ссылка на первоначальную ячейку, с которой пойдет подсчет. Это D5. После нее записываем команду СМЕЩ, которая будет находиться внутри СУММ.
Начинаем заполнять синтаксис функции СМЕЩ. Первое – это ссылка. Ссылаться будем на саму ячейку, в которой у нас стоит формула, т.е. на D18.
Смещение по строкам указываем в отрицательном значении -1, чтобы второй элемент диапазона суммирования всегда находился в предыдущей ячейке.
Смещение по столбцам нам не нужно, поэтому ставим либо 0, либо просто оставляем пустое место. Не забываем разделять элементы формулы точкой с запятой.
Высоту и ширину не указываем. По умолчанию она будет равна одной ячейке.
После всех действий нажимаем Enter и получаем результат. Функция СМЕЩ просуммировала не только заданный диапазон, но и добавленную строку. Попробуем добавить еще одну, чтобы проверить работу команды. Пусть это будет марка зубной пасты под названием N по цене 51 рубль.
И видим, что сумма увеличилась на 51 (получилось 650), в то время как команда СУММ осталась прежней (554).
Добавим значения стоимости для зубных паст M и N и протянем формулу на остальные ячейки, чтобы знать суммы под всеми столбцами.
СМЕЩ замечательно среагировала на введение новых строк. С таким же успехом можно добавлять значения когда угодно, сохранив таблицу.
На освоение именно этой функции, которая позволяет автоматически прибавлять новые значения к общей сумме, обычно требуется не больше часа. Зато в будущем это помогает существенно экономить время на работе. Мы рассмотрели простейший пример с небольшими числами, но многие предприятия работают с огромными массивами, и пользоваться командой СУММ и уж, тем более, калькулятором, совсем неразумно.
Как сделать автоматический сдвиг в ячейках?
Доброго времени. Суток подскажите как в excel сделать автоматический сдвиг выбранного диапазона, при добавлении нового столба.(см.скриншот)
Нужно чтоб при добавлении новой недели, этот диапазон как сдвигался и соответственно данные обновлялись в диаграмме.
Внизу находится диаграмма в которой отображаются эти данные. Надоело каждую неделю двигать диапазон.
-
Вопрос заданболее трёх лет назад
-
454 просмотра
Не сдвиг здесь нужен, а вынесение итоговой таблицы в отдельное место.
Например, сделать отдельную таблицу (A1-A7) с формулой =Сегодня()+Столбец()-7 (или любой другой, какая нужна).
На основе таблицы сделать диаграмму. Данные в неё подтягивать из вашей заполняемой с помощью ГПР…
upd. Может вот такое подойдёт лучше =Номнедели(Сегодня())+Столбец()-7
Пригласить эксперта
1. Разверните ваш диапазон данных что бы новые данные добавлялись не справа, а снизу.
2. Выделяем новый диапазон -> Вставка — Таблица.
3. Строим нужную диаграмму по получившейся таблице.
Это сделает Ваш диапазон динамической таблицей и при добавлении новой строки данные автоматически подтянутся в диаграмму
-
Показать ещё
Загружается…
15 апр. 2023, в 14:53
3000 руб./за проект
15 апр. 2023, в 14:05
80000 руб./за проект
15 апр. 2023, в 13:55
55000 руб./за проект
Минуточку внимания
Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article
Excel contains many useful formulas and functions that make it more and more useful and at the same time user-friendly. Such a function is the OFFSET() function. In many cases, this function is also used inside another function. This function basically returns a reference of a single cell or a range of cells depending on the input. With the help of this function, we can traverse from one cell to another cell. Moreover, the user can specify the number of rows and columns to be returned.
This function is a volatile function that also works according to its name. It returns a reference of the desired element(s) that is(are) ‘offset’ of some distance from the given starting point. This can be used within some functions to make tasks easier.
Syntax:
OFFSET(reference, rows, cols, [height], [width]) -->Here the [height] and [width] are optional.
This function takes a valid reference, rows, and columns(To know how much distance the function will traverse), and height and width(that describes the height and width of output reference) as its arguments and returns the desired reference of the cell or the range of cells. These arguments are discussed below elaborately.
Arguments:
- reference (Required): This is the reference of the starting point or the base of the OFFSET() function and this reference must be provided by the user. The reference must be valid i.e. a reference of a single cell or a reference to a range of adjacent cells.
- rows (Required): This argument contains the number of rows(up or down) that are used by the OFFSET() function to traverse up or down. Again this argument must be provided by the user. This value may be negative or positive. A negative value denotes that the function has to traverse upwards and a positive value denotes traversing downwards.
- cols (Required): This argument contains the number of columns provided by the user. With the help of this argument OFFSET(), function traverse left or right of the starting point. This value may also be negative or positive. A negative value means traversing to the left and a positive value means traversing to the right.
- [height] (Optional): This is the height of the reference to be returned by the OFFSET() function. Basically, this value denotes the number of rows of the returned reference. This value must be a positive number. But this is an optional argument. If this argument is omitted, OFFSET() returns a reference of the same height as the ‘reference’(starting point).
- [width] (Optional): This is the width of the reference to be returned by the OFFSET() function. Basically, this value denotes the number of columns of the returned reference. This value must also be a positive number. But again this is an optional argument. If this argument is omitted, OFFSET() returns a reference of the same width as the ‘reference’(starting point).
Note: The number of rows and columns must not exceed the height and width of the worksheet.
Return Value: This function naturally returns a reference to a range of cells(sometimes a single cell depending on the input arguments) of a certain height and width either same as the ‘reference’ argument or as the user has provided.
Example:
An Excel sheet has been taken as an example and the OFFSET function has been used in several formats.
Value 1 | Value 2 | Value 3 |
---|---|---|
25 | 5 | 5 |
35 | 7 | 5 |
23 | 0 | 0 |
26 | 25 | 5 |
28 | 3 | 6 |
OFFSET function has been applied to the above table.
OFFSET() function | Results | Remarks |
---|---|---|
=OFFSET(C4, 2, -2, 1, 1) | 28 |
OFFSET function traverses 2 rows down and 2 columns left, and returns the reference of cell A6. |
=OFFSET(C2, 5, -5) | #REF! | Rows and columns arguments exceed the height and width of the worksheet. So it shows the error(#REF!). |
=SUM(OFFSET(B2:C5, 0, -1)) | 146 | Here OFFSET is used within the SUM() function. It returns the sum of all elements from A2 to B5 as OFFSET returns the reference of A2:B5 cells. |
Output:
Like Article
Save Article
Впервые я применил функцию СМЕЩ когда начал использовать динамические диапазоны. Поясню. Если вы строите графики или сводные таблицы на основе данных, которые периодически обновляются, использование динамических диапазонов позволяет до минимума сократить ручной труд, связанный с обновлением таблиц и графиков (см., например, Автоматическое обновление сводной таблицы).
Формально функция СМЕЩ (OFFSET) применяется для создания ссылки на прямоугольный диапазон, которая представляет собой заданное количество строк и столбцов, отстоящих от ячейки или диапазона ячеек (см. Help MS Excel). Неплохую статью для первого знакомства с функцией СМЕЩ написал Ренат Лотфуллин (рекомендую!)
1. Чтобы создать ссылку на диапазон ячеек, сначала необходимо указать начальную ячейку. Затем надо указать, на расстоянии скольких строк и столбцов от нее начинается прямоугольный диапазон. Например, с помощью функции СМЕЩ можно создать ссылку на диапазон ячеек, включающий две строки и три столбца и начинающийся на два столбцов правее и на одну строку выше текущей ячейки (рис. 1). Хитрость функции СМЕЩ в том, что она возвращает диапазон, поэтому, если просто ввести ее в ячейку, ничего не выйдет – функция СМЕЩ вернет ошибку #ЗНАЧ! Поэтому в примере использована функция СУММ, которая суммирует значения в диапазоне, возвращаемом функцией СМЕЩ. Заметим, что, если функция СМЕЩ возвращает одну ячейку, например, =СМЕЩ(A4;-1;2;1;1), то ее можно использовать напрямую, она вернет значение ячейки С3.
Рис. 1. Пример использования функции СМЕЩ; диапазон суммирования, возвращаемый функцией СМЕЩ подсвечен
Скачать заметку в формате Word или pdf, примеры в формате Excel2013
Функция СМЕЩ очень полезна, поскольку ее можно копировать, как и любую другую функцию Excel, и заданное число строк и столбцов, на которое вы удаляетесь от ссылки, подсчитывается посредством других функций Excel. [1]
2. Синтаксис функции СМЕЩ:
СМЕЩ(ссылка;смещение по строкам;смещение по столбцам,[высота],[ширина])
- Ссылка (reference) — это ячейка или диапазон, от которого начинается смещение. Если указывается диапазон ячеек, они должны быть смежными.
- Смещение по строкам (rows moved) — количество строк, отделяющее начало смещаемого диапазона от ссылки (верхняя левая ячейка в смещенном диапазоне). Если указано отрицательное число, вы перемещаетесь вверх от ссылки; если положительное — вниз. Например, если ссылка равна С5, а смещение по строкам равно –1, вы перемещаетесь к строке 4 в ячейку С4. Если смещение по строкам равно +1, вы перемещаетесь к строке 6. Если смещение по строкам равно 0, вы остаетесь на строке 5.
- Смещение по столбцам (columns moved) — количество столбцов, отделяющее начало смещаемого диапазона от ссылки (верхняя левая ячейка смещенного диапазона). Если указано отрицательное число, вы перемещаетесь влево от ссылки; если положительное — вправо. Например, если ссылка равна С5, а смещение по столбцам равно –1, вы перемещаетесь к столбцу В. Если смещение по столбцам равно +1, вы перемещаетесь к столбцу D. Если смещение по столбцам равно 0, вы остаетесь в столбце С.
- Высота (height) — необязательный аргумент, который задает число строк в смещенном диапазоне.
- Ширина (width) — также необязательный аргумент, который задает число столбцов в смещенном диапазоне. Если высота или ширина опущена, функция СМЕЩ создает диапазон, для которого значения высоты и ширины будут равны высоте и ширине первого параметра функции – ссылки. Если ссылка – это одна ячейка, то функции СМЕЩ создаст диапазон из одной ячейки.
3. На рис. 2 перечислены сотрудники фирмы по продаже косметики и соответствующее каждому число продаж за неделю. Если нужно найти сотрудника, который выполнил конкретное число продаж, можно воспользоваться функцией ВПР. Однако, если нужно найти число продаж конкретного сотрудника по имени этого сотрудника, можно применить совместно функции ПОИСКПОЗ и СМЕЩ. Заметим, что с этой задачей также справится пара функций ПОИСКПОЗ и ИНДЕКС.
Рис. 2. Выборка по правому столбцу с помощью комбинации функций ПОИСКПОЗ и СМЕЩ
Введите имя сотрудника — Эшли — в ячейку А11. Затем используйте ссылку на ячейку А1 в функции СМЕЩ. Для поиска числа продаж нам требуется переместиться вниз к строке 6, где содержится имя сотрудника. Это задача функции ПОИСКПОЗ, которая находит номер строки в диапазоне В2:В8, в которой расположено имя сотрудника — Эшли. Это номер 5. После этого мы перемещаемся на вычисленное количество строк оставаясь в столбце А. Поскольку ссылка состоит из одной ячейки (аргументы высота и ширина функции СМЕЩ опущены), мы добиваемся того, что диапазон, который возвратит формула, будет состоять из одной строки и столбца (одна ячейка). Таким образом, мы находим число продаж, сделанных конкретным сотрудником. Как видите, это пример того, что функция СМЕЩ, возвращая диапазон, состоящий из одной ячейки, может вернуть число.
4. Можно ли создать формулу, которая всегда будет выбирать данные, касающиеся определенной страны, если в исходных данных эта страна может располагаться в разных строках?
Рис. 3 содержит данные об объемах продаж, доходе от продаж, а также о переменных издержках при продаже ПО в некоторые страны Азии и Ближнего Востока. Каждый месяц, когда мы загружаем финансовые отчеты, расположение каждой страны в электронной таблице меняется, и поэтому нам требуется, чтобы наши формулы (для конкретной страны) всегда возвращали правильное количество проданных единиц, доход и переменные издержки. С задачей справится формула =СМЕЩ($A$1;ПОИСКПОЗ($A16;$A$2:$A$12;0);D15), расположенная в ячейках В16:D16. Заметим также, что с задачей справится формула =ВПР($A17;$A$2:$D$12;СТОЛБЕЦ();ЛОЖЬ), расположенная в ячейках В17:D17.
Рис. 3. Функцию СМЕЩ можно использовать в вычислениях при работе с данными, положение которых не фиксировано в электронной таблице
5. Каждое лекарство создается моей компанией в три этапа. У меня есть перечень затрат по месяцам для каждого лекарства, и я также знаю, сколько месяцев длится тот или иной этап разработки каждого лекарства. Можно ли создать формулы, вычисляющие для каждого лекарства полные затраты, необходимые на каждом этапе разработки?
Рис. 4 содержит данные о ежемесячных издержках, связанных с разработкой пяти лекарств. Каждое лекарство разрабатывается в три этапа. Для каждого лекарства указано количество месяцев, необходимое на завершение каждого этапа.
Рис. 4. Использование функции СМЕЩ для вычисления затрат на этапы 1–3 при разработке лекарств
Наша задача — определить для каждого лекарства издержки на каждом этапе разработки. В ячейках D4:D6 я вычисляю общие издержки на этапах 1–3 разработки лекарства 1. Для расчета затрат на этап 1 для лекарства 1 я использую ссылку на ячейку D10 и задаю смещение по строкам и смещение по столбцам равные 0. Задав высоту равной продолжительности этапа 1 в месяцах и ширину равной 1, я учту все издержки первого этапа. Я вычисляю издержки этапа 1 для лекарства 1 в ячейке D4 по формуле =СУММ(СМЕЩ(D10;0;0;D1;1)). Затем в ячейке D5 я определяю общие издержки этапа 2 для лекарства 1 по формуле =СУММ(СМЕЩ(D10;D1;0;D2;1)). Обратите внимание: я начинаю со ссылки на ячейку D10 (первый месяц затрат) и перемещаюсь вниз на число строк, равное продолжительности этапа 1. Это приводит меня к началу этапа 2. Установив высоту равной значению ячейки D2, я могу быть уверен, что учел все издержки этапа 2. Наконец в ячейке D6 я рассчитываю издержки для этапа 3 разработки лекарства 1 по формуле =СУММ(СМЕЩ(D10;D1+D2;0;D3;1)). В этой формуле я начинаю с первого месяца разработки и смещаюсь вниз на число строк, равное общей продолжительности этапов 1 и 2. Таким образом я оказываюсь в начале этапа 3 и суммирую число строк в ячейке D3, чтобы получить затраты на этапе 3. Затем, копируя формулы ячеек D4:D6 в диапазон Е4:Е6, я вычислю общие издержки для этапов 1–3 разработки лекарств 2–5. Например, вы видите, что для лекарства 2 общие затраты на этапе разработки составили $313, на этапе 2— $789 и на этапе 3 — $876.
6. Я управляю небольшим магазином видеопродукции. Мой бухгалтер занес в электронную таблицу название каждого фильма и количество его копий на складе. К сожалению, эти данные указаны в одной ячейке. Как извлечь количество копий каждого фильма в отдельную ячейку?
Рис. 5 содержит перечень фильмов на складе, а также количество копий каждого фильма на складе.
Рис. 5. Все данные о фильме в одной ячейке
Мы хотим извлечь количество копий каждого фильма в отдельную ячейку. Если бы число копий указывалось слева от названия фильма, проблема решалась бы просто. Мы могли бы воспользоваться функцией НАЙТИ для поиска первого пробела и затем с помощью функции ЛЕВСИМВ выбрать все данные слева от первого пробела. К сожалению, данный способ не работает, если число копий указано справа от названия фильма. Например, если название фильма состоит из одного слова, число копий находится справа от первого пробела, а если название состоит из четырех слов — справа от четвертого пробела.
Один из способов решить данную проблему — выбрать в меню Данные команду Текст по столбцам и поместить каждое слово названия и число копий в отдельные столбцы. Затем можно использовать функцию СЧЁТЗ, чтобы определить для каждого фильма общее количество слов в названии, считая число копий за одно слово. После этого можно с помощью функции СМЕЩ отобрать число копий.
Для начала проверим, что справа от данных достаточно столбцов, чтобы можно было извлечь каждое слово названия фильма и количество копий в отдельный столбец. Затем я выделил диапазон ячеек С2:С12 (рис. 6) и выбрал в меню Данные команду Текст по столбцам. В Мастере текстов я установил переключатель в положение с разделителями и на следующем шаге выбрал в качестве символа-разделителя пробел (рис. 7). На третьем этапе я выбрал в качестве конечной ячейки D2.
Рис. 6. Мастер распределения текста по столбцам, шаг 1
Рис. 7. Мастер распределения текста по столбцам, шаги 2 и 3
Теперь мы, копируя формулу =СЧЁТЗ(D2:I2) из ячейки А2 в диапазон АЗ:А12, найдем для каждого фильма количество слов в названии, считая количество копий за одно слово. Результаты показаны на рис. 8. Наконец, скопировав формулу =СМЕЩ(C2;0;A2) из ячейки В2 в диапазон ВЗ:В12, я получу количество копий каждого фильма на складе. Эта формула начинается со ссылки на ячейку, содержащую название фильма, и перемещается вправо на количество столбцов, равное числу «слов» в ячейке Число слов. Поскольку ссылка состоит только из одной ячейки, мы можем опустить два последних аргумента функции СМЕЩ, чтобы функция выбирала только одну ячейку, содержащую последнее «слово» в заголовке (то есть число копий).
Рис. 8. Итоговые результаты примера с фильмами
7. Ежемесячно я подаю своему шефу данные о продажах единиц продукции в графической форме. Каждый месяц мне требуются новые данные о количестве проданного товара. Мне хотелось бы, чтобы график автоматически обновлялся. Есть ли простой способ реализации этого?
Рис. 9 содержит данные об объемах продаж товара нашей компании в единицах. Как вы видите, график продаж — это точечная диаграмма со значениями, соединенными сглаживающими линиями. Начиная со строки 19, мы будем загружать новые данные о продажах. Есть ли простой способ гарантировать, что график будет автоматически отражать новые данные?
Рис. 9. Функция СМЕЩ позволяет автоматически обновлять данный график
Ключ к обновлению графика — создать с помощью функции СМЕЩ имя динамического диапазона для столбца Месяц и столбца Количество проданных единиц. При вводе новых данных динамический диапазон с данными о количестве проданных единиц будет автоматически учитывать все данные о продажах, а динамический диапазон месяцев учтет номер каждого месяца. После создания этих диапазонов я изменяю график, заменив используемые в нем диапазоны динамическими диапазонами. Теперь график будет обновляться при вводе новых данных.
Чтобы реализовать все описанные возможности, сначала выберите в меню Формулы команду Диспетчер имен; в открывшемся окне кликните Создать, и в новом окне дайте имя новому диапазону и определите сам диапазон с помощью формулы СМЕЩ, как показано на рис. 10. Учтите, что в имени нельзя использовать пробелы. Формула =СМЕЩ(‘Рис. 9’!$C$3;0;0;СЧЁТ(‘Рис. 9’!$C:$C);1) создает диапазон в один столбец шириной, начинающийся в ячейке СЗ, содержащей первое значение количества проданных единиц. Диапазон включает столько чисел, сколько окажется в столбце С, что определяется областью СЧЁТ(‘Рис. 9’!$C:$C). При вводе новых данных в столбец С они будут автоматически включены в диапазон Количество_проданных_единиц.
Рис. 10. Создание динамического диапазона Количество_проданных_единиц
Затем аналогичным образом создайте динамический диапазон Месяцы для месяцев, введенных в столбце В. Для этого введите в поле Формула =СМЕЩ(‘Рис. 9’!$B$3;0;0;СЧЁТ(‘Рис. 9’!$B:$B);1).
Переходим к нашему графику и правой кнопкой мыши щелкаем любую точку на нем. В контекстном меню щелкаем Выбрать данные. В окне Выбор источника данных, щелкаем на ряд Количество проданных единиц и на кнопку Изменить (рис. 11).
Рис. 11. Выбор источника данных
В открывшемся окне Изменение ряда заменяем диапазоны значений Х и Y на именованные динамические диапазоны (рис. 12). Слева – до изменения, справа – после.
Рис. 12. Вместо ссылок на диапазоны в качестве источника данных выбираем имена диапазонов
Введите какие-нибудь новые данные, и вы увидите, что они появятся на графике.
Контрольные задания (с ответами)
1. В Excel-файле на листе Задание_1 хранятся данные о количестве проданных единиц для 11 товаров за 1999—2003 гг. Напишите формулу, используя функции ПОИСКПОЗ и СМЕЩ, чтобы отобрать объемы продаж конкретного товара за определенный год. Можете ли вы решить эту задачу, не используя функции ПОИСКПОЗ и СМЕЩ?
2. Ниже представлены данные о количестве рекламных объявлений в журналах, размещенных Центром вербовки в армию за 60 последовательных месяцев (см. также Excel-файле, лист Задание_2). Для каждого месяца мы задаем число объявлений, запаздывающее на k месяцев, равным числу рекламных объявлений, размещенных k месяцев назад. Для 7—60 месяцев нам требуется вычислить, число объявлений, запаздывающих на 1 месяц, 2 месяца … 6 месяцев. Воспользуйтесь функцией СМЕЩ, чтобы вычислить эти запаздывающие значения.
3. Допустим, вы постоянно вводите ежемесячные данные о продажах в столбец С:
Продажи первого месяца введены в ячейку С2. Предполагается, что при вводите данные последовательно в каждую следующую ячейку столбца С. Таким образом, если данные о продаже последнего месяца находятся в ячейке С8, данные о продаже следующего месяца будут введены в ячейку С9 и так далее. Напишите формулу, которая всегда будет возвращать данные о продажах за последний месяц.
Ответы
1. =СМЕЩ(B2;ПОИСКПОЗ(B16;B3:B13;0);ПОИСКПОЗ(C15;C2:G2;0)). См. лист Ответ_1. Обратите внимание, что в функции ПОИСКПОЗ необходимо использовать третий (необязательный) аргумент. Этому аргументу нужно присвоить значение 0. В этом случае Excel вернет номер первого встреченного элемента в точности равного искомому. По умолчанию Excel почему-то присваивает значение третьему аргументу 1. В этом случае Excel найдет максимальное значение не превышающее искомое. В нашем случае это будет Товар 1.
Можно также использовать:
- функцию ИНДЕКС в сочетании с функцией ПОИСКПОЗ…
- или функцию ВПР.
2. =СМЕЩ($C10;-ЛЕВСИМВ(D$3);0). Функция ЛЕВСИМВ возвращает число месяцев, на которые нужно сместить значение в столбце С. А знак «–» говорит о том, что нужно смещаться вверх.
3. =СМЕЩ(C1;СЧЁТ(C:C);0). Функция СЧЁТ() возвращает количество ячеек в столбце С, содержащих числа. Функция СМЕЩ смещается по столбцу С от ячейки 1 на число ячеек с числами; в нашем случае на 7, попадая на ячейку С8, смещения по столбцам нет, выбирается одна ячейка, так как 4-й и 5-й аргументы функции СМЕЩ опущены (по умолчанию они равны единице).
[1] При написании заметки использованы материалы книги Уэйн Л. Винстон. Microsoft Excel. Анализ данных и построение бизнес-моделей, глава 21.
Функция СМЕЩ в Excel используется, когда вы хотите получить ссылку, которая смещается на указанное число строк и столбцов от начального положения.
Содержание
- Что возвращает функция
- Синтаксис
- Аргументы функции
- Основной принцип работы функции
- Примеры использования функции СМЕЩ в Excel
- Пример 1. Ищем последнюю заполненную ячейку в колонке
- Пример 2. Создаем динамический выпадающий список с автоматическим дополнением новых данных
- Дополнительная информация
- Альтернативы функции OFFSET (СМЕЩ) в Excel
Что возвращает функция
Возвращает ссылку, которая смещается на заданное количество ячеек.
Синтаксис
=OFFSET(reference, rows, cols, [height], [width]) — английская версия
=СМЕЩ(ссылка;смещ_по_строкам;смещ_по_столбцам;[высота];[ширина]) — русская версия
Аргументы функции
- reference (ссылка) — ссылка на ячейку, от которой вы хотите сделать смещение. Это может быть ссылка на ячейку или диапазон смежных ячеек;
- rows (смещ_по_строкам) — количество строк для смещения от изначальной позиции. Если вы укажете положительное число, то произойдет смещение строк ниже, если отрицательное — выше;
- cols (смещ_по_столбцам) — количество колонок для смещения от изначальной позиции. Если вы укажете положительное число, то произойдет смещение колонок вправо, если отрицательное число, то влево;
- [height] ([высота]) — количество строк в указанном диапазоне функции;
- [width] ([ширина]) — количество колонок в указанном диапазоне функции.
Основной принцип работы функции
Функция СМЕЩ, пожалуй, самая запутанная функция в Excel.
Давайте разберем ее работу на простом примере игры в шахматы. В шахматах есть фигура Ладья.
Источник фото: Wikipedia
По правилам игры в шахматы, Ладья может ходить только вправо, влево, вниз и вверх. Фигура не может передвигаться по диагонали.
Теперь давайте представим, что нашей Ладье нужно переместиться не строго влево или вправо, а на ячейку, находящуюся по диагонали от изначальной позиции. Что мы будем делать этом случае?
Правильно, мы будем использовать несколько шагов, для того чтобы привести Ладью к цели. Тот же принцип действует и в функции OFFSET (СМЕЩ).
Рассмотрим перемещение Ладьи на примере в Excel. Мы хотим начать с ячейки D5 (где находится ладья), а затем перейти на две строки вниз и два столбца вправо и извлечь значение из ячейки. Для этого будем использовать формулу:
=OFFSET(стартовая позиция, на сколько строк сместиться вниз, на сколько столбцов сместиться вправо) — английская версия
=СМЕЩ(стартовая позиция, на сколько строк сместиться вниз, на сколько столбцов сместиться вправо) — русская версия
Как вы видите формула по нашему примеру выглядит так:
=OFFSET(D5,2,2) — английская версия
=СМЕЩ(D5;2;2) — русская версия
Функции задан аргумент старта отсчета с ячейки «D5», затем смещение на две строки вниз, после этого на две колонки вправо. Так мы переместимся с ячейки «D5» на ячейку «F7». По завершении перемещения функция выдает значение ячейки «F7».
На примере выше мы рассмотрели функцию OFFSET (СМЕЩ) с тремя аргументами. Но есть еще два необязательных аргумента, которые можно использовать.
Давайте рассмотрим простой пример:
Больше лайфхаков в нашем Telegram Подписаться
Предположим, вы хотите использовать ссылку на ячейку «A1» (желтую), и хотите сослаться на весь диапазон, выделенный синим (C2:E4) в формуле.
Как бы вы это сделали с помощью клавиатуры? Сначала нужно перейти к ячейке C2, а затем выбрать все ячейки в диапазоне «C2:E4».
Теперь посмотрим, как это сделать, используя формулу OFFSET (СМЕЩ):
=OFFSET(A1,1,2,3,3) — английская версия
=СМЕЩ(A1;1;2;3;3) — русская версия
Если вы используете эту формулу в ячейке, она вернет #VALUE! Но если вы перейдете в режим редактирования, выберете формулу и нажмите клавишу «F9», вы увидите, что она возвращает все значения, выделенные синим цветом.
Надеюсь, теперь у вас есть базовое понимание использования функции OFFSET (СМЕЩ) в Excel.
Примеры использования функции СМЕЩ в Excel
Пример 1. Ищем последнюю заполненную ячейку в колонке
Представим, что у вас есть данные в колонке. Для того чтобы отобразить последнее значение в колонке используйте формулу:
=OFFSET(A1,COUNT(A:A)-1,0) — английская версия
=СМЕЩ(A1;СЧЁТ(A:A)-1;0) — русская версия
Эта формула предполагает, что кроме указанных значений нет никаких других, и в этой колонке нет пустых ячеек. Функция работает, подсчитывая общее количество заполненных ячеек и соответствующим образом смещает ячейку «A1».
Например, в указанном примере есть 8 значений, поэтому функция COUNT(A:A) или СЧЁТ(A:A) возвращает 8. Мы смещаем ячейку «A1» на 7, чтобы получить последнее значение.
Пример 2. Создаем динамический выпадающий список с автоматическим дополнением новых данных
Вы можете использовать принцип из Примера 1 для создания динамического выпадающего списка с автоматическим дополнением новых данных. Например, вы создали выпадающий список и хотите, чтобы при добавлении новых строк, значения автоматически подгружались в выпадающий список.
Обратите внимание, что на примере выше, значения автоматически появляются и исчезают из выпадающего списка, как только вы вносите изменения в диапазон ячеек, указанный для выпадающего списка.
Это происходит, поскольку формула, которая используется для создания раскрывающегося списка, является динамической и определяет любое добавление или удаление и соответствующим образом корректирует диапазон.
Как сделать такой список:
- Выберите ячейку, в которой вы хотите создать выпадающий список;
- Нажмите на вкладку Data => Data Tools => Data Validation;
- В диалоговом окне Data Validation, в разделе Настройки выберите List из выпадающего списка;
- В параметрах Source укажите формулу =OFFSET(A1,0,0,COUNT(A:A),1) или =СМЕЩ(A1;0;0;СЧЁТ(A:A);1)
- Нажмите ОК
Как эта формула работает:
Первые три аргумента функции OFFSET (СМЕЩ) A1, 0, 0. Это означает что начальное значение в ячейке «A1», которое не смещается ни по строкам и по колонкам (0, 0);
Четвертый аргумент функции указывает на высоту, и здесь функция COUNT (СЧЁТ) возвращает суммарное количество ячеек в диапазоне данных для выпадающего списка. Главное условие — отсутствие пустых ячеек в диапазоне.
Пятый аргумент функции “1”, обозначает ширину диапазона данных, которая в нашем случае равна одной колонке.
Дополнительная информация
- Функция OFFSET (СМЕЩ) — волатильная функция. Она пересчитывается каждый раз, как только вы открываете Excel файл. Работа этой функции может сильно сказываться на скорости работы всего файла.
- Если значения высоты и ширины не указаны, функция учитывает только первые три аргумента;
- Если значения аргументов rows (смещ_по_строкам) и cols (смещ_по_столбцам) отрицательны, то смещение будет происходить в обратную сторону.
Альтернативы функции OFFSET (СМЕЩ) в Excel
Ввиду некоторых ограничений функции, многие из вас рассматривают альтернативные методы:
- Функция INDEX (ИНДЕКС) также может использоваться для возврата ссылки на ячейку.
- Excel таблицы: если вы используете структурированные ссылки в таблице Excel, вам не нужно беспокоиться о добавлении новых данных и необходимости корректировки формул.
Вчера в марафоне 30 функций Excel за 30 дней мы заменяли текстовые строки с помощью функции REPLACE (ЗАМЕНИТЬ) и выяснили, что вставлять символы она тоже умеет.
В 26-й день марафона мы будем изучать функцию OFFSET (СМЕЩ). Она возвращает ссылку заданного размера, отстоящую от стартовой ссылки на указанное количество строк и столбцов.
Итак, давайте изучим информацию и примеры применения функции OFFSET (СМЕЩ), а если у Вас есть дополнительные сведения и свои примеры, пожалуйста, делитесь ими в комментариях.
Содержание
- Функция 26: OFFSET (СМЕЩ)
- Как можно использовать функцию OFFSET (СМЕЩ)?
- Синтаксис OFFSET (СМЕЩ)
- Ловушки OFFSET (СМЕЩ)
- Пример 1: Находим сумму продаж для выбранного месяца
- Пример 2: Суммируем продажи за выбранные месяцы
- Пример 3: Создаем динамический диапазон, основанный на подсчете
- Пример 4: Суммируем продажи за последние n месяцев
Функция 26: OFFSET (СМЕЩ)
Функция OFFSET (СМЕЩ) возвращает ссылку, смещённую от заданной ссылки на определенное количество строк и столбцов.
Как можно использовать функцию OFFSET (СМЕЩ)?
Функция OFFSET (СМЕЩ) может возвратить ссылку на диапазон, а также работать в сочетании с другими функциями. Используйте её для того, чтобы:
- Находить суммы продаж для выбранного месяца.
- Суммировать данные о продажах за выбранные месяцы.
- Создавать динамические диапазоны на основе подсчета.
- Суммировать продажи за последние n месяцев.
Синтаксис OFFSET (СМЕЩ)
Функция OFFSET (СМЕЩ) имеет вот такой синтаксис:
OFFSET(reference,rows,cols,[height],[width])
СМЕЩ(ссылка;смещ_по_строкам;смещ_по_столбцам;[высота];[ширина])
- reference (ссылка) – ячейка или диапазон смежных ячеек.
- rows (смещ_по_строкам) – может быть положительным (вниз от начальной ссылки) или отрицательным (вверх от начальной ссылки).
- cols (смещ_по_столбцам) — может быть положительным (вправо от начальной ссылки) или отрицательным (влево от начальной ссылки).
- height (высота) – количество строк в возвращаемой ссылке, должен быть положительным.
- width (ширина) – количество столбцов в возвращаемой ссылке, должен быть положительным.
- Если аргументы height (высота) или width (ширина) не указаны, используются размеры исходной ссылки.
Ловушки OFFSET (СМЕЩ)
Функция OFFSET (СМЕЩ) пересчитывается каждый раз при любом изменении значений на листе Excel. Используя эту функцию во многих формулах, можно сильно замедлить работу. Вместо OFFSET (СМЕЩ) Вы можете использовать функцию INDEX (ИНДЕКС), чтобы возвратить ссылку. INDEX (ИНДЕКС) пересчитывает результат только при изменении своих аргументов.
Пример 1: Находим сумму продаж для выбранного месяца
При помощи функции OFFSET (СМЕЩ) Вы можете возвращать ссылку на диапазон, отталкиваясь от стартовой ссылки. В этом примере мы хотим получить сумму продаж в ячейке G2.
- Стартовая ссылка – это ячейка C1.
- Количество строк для сдвига вводится в ячейке F2.
- Суммы продаж находятся в столбце C, поэтому сдвиг по столбцам равен нулю.
- Аргумент height (высота) равен 1 строке.
- Аргумент width (ширина) равен 1 столбцу.
=OFFSET(C1,F2,0,1,1)
=СМЕЩ(C1;F2;0;1;1)
В ячейке H2 находится формула, очень похожая на предыдущую, которая возвращает имя месяца. Единственное отличие – это сдвиг по столбцам: 1 вместо 0.
=OFFSET(C1,F2,1,1,1)
=СМЕЩ(C1;F2;1;1;1)
Замечание: В данном примере аргументы height (высота) и width (ширина) можно не указывать, поскольку нам нужна ссылка того же размера, что и стартовая.
Пример 2: Суммируем продажи за выбранные месяцы
В этом примере функция OFFSET (СМЕЩ) возвращает ссылку на данные о продажах за выбранный месяц, а функция SUM (СУММ) подсчитывает сумму для этого диапазона. В ячейке B10 указан номер выбранного месяца 3, следовательно, результатом будет сумма продаж в марте (Mar).
- Начальная ссылка A3:A6.
- Сдвиг по строкам равен нулю (если ноль вообще не указать, результат будет тот же).
- Сдвиг по столбцам соответствует значению ячейки B10.
- Высота и ширина не указаны, поскольку итоговый диапазон должен быть того же размера, что и начальный.
=SUM(OFFSET(A3:A6,0,B10))
=СУММ(СМЕЩ(A3:A6;0;B10))
Пример 3: Создаем динамический диапазон, основанный на подсчете
Вы можете использовать функцию OFFSET (СМЕЩ), чтобы создать динамический диапазон. В этом примере мы создали именованный диапазон MonthList с такой формулой:
=OFFSET('Ex03'!$C$1,0,0,COUNTA('Ex03'!$C:$C),1)
=СМЕЩ('Ex03'!$C$1;0;0;СЧЁТЗ('Ex03'!$C:$C);1)
Если к списку в столбце C добавить ещё один месяц, он автоматически появится в выпадающем списке в ячейке F2, который использует имя MonthList, как источник данных.
Пример 4: Суммируем продажи за последние n месяцев
В этом заключительном примере OFFSET (СМЕЩ) работает вместе с SUM (СУММ) и COUNT (СЧЁТ), чтобы показать сумму за последние n месяцев. Как только добавляются новые значения, результат формулы будет автоматически скорректирован, чтобы включить величину продаж за последний месяц. В ячейке E2 количество месяцев равно 2, поэтому складываться будут суммы за август (Aug-10) и сентябрь (Sep-10).
- Начальная ссылка – ячейка C2.
- Количество строк для сдвига рассчитывается так:
- подсчитываем количество чисел в столбце C,
- вычитаем из результата количество месяцев, указанное в ячейке E3,
- и прибавляем 1.
- Продажи находятся в столбце C, поэтому сдвиг по столбцам равен нулю.
- Высота введена в ячейке E3.
- Ширина равна 1 столбцу.
=SUM(OFFSET(C2,COUNT(C:C)-E3+1,0,E3,1))
=СУММ(СМЕЩ(C2;СЧЁТ(C:C)-E3+1;0;E3;1))
Оцените качество статьи. Нам важно ваше мнение: