График функции 1 ч. Строим график функций онлайн
В золотой век информационных технологий мало кто будет покупать миллиметровку и тратить часы для рисования функции или произвольного набора данных, да и зачем заниматься столь муторной работой, когда можно построить график функции онлайн. Кроме того, подсчитать миллионы значений выражения для правильного отображения практически нереально и сложно, да и несмотря на все усилия получится ломаная линия, а не кривая. Потому компьютер в данном случае – незаменимый помощник.
Что такое график функций
Функция – это правило, по которому каждому элементу одного множества ставится в соответствие некоторый элемент другого множества, например, выражение y = 2x + 1 устанавливает связь между множествами всех значений x и всех значений y, следовательно, это функция. Соответственно, графиком функции будет называться множество точек, координаты которых удовлетворяют заданному выражению.
На рисунке мы видим график функции
Сервисы для построения графиков функций онлайн
Рассмотрим несколько популярных и лучших по сервисов, позволяющих быстро начертить график функции.
Открывает список самый обычный сервис, позволяющий построить график функции по уравнению онлайн. Umath содержит только необходимые инструменты, такие как масштабирование, передвижение по координатной плоскости и просмотр координаты точки на которую указывает мышь.
Инструкция:
- Введите ваше уравнение в поле после знака «=».
- Нажмите кнопку «Построить график» .
Как видите все предельно просто и доступно, синтаксис написания сложных математических функций: с модулем, тригонометрических, показательных — приведен прямо под графиком. Также при необходимости можно задать уравнение параметрическим методом или строить графики в полярной системе координат.
В Yotx есть все функции предыдущего сервиса, но при этом он содержит такие интересные нововведения как создание интервала отображения функции, возможность строить график по табличным данным, а также выводить таблицу с целыми решениями.
Инструкция:
- Выберите необходимый способ задания графика.
- Введите уравнение.
- Задайте интервал.
- Нажмите кнопку «Построить» .
Для тех, кому лень разбираться, как записать те или иные функции, на этой позиции представлен сервис с возможностью выбирать из списка нужную одним кликом мыши.
Инструкция:
- Найдите в списке необходимую вам функцию.
- Щелкните на нее левой кнопкой мыши
- При необходимости введите коэффициенты в поле «Функция:» .
- Нажмите кнопку «Построить» .
В плане визуализации есть возможность менять цвет графика, а также скрывать его или вовсе удалять.
Desmos безусловно – самый навороченный сервис для построения уравнений онлайн. Передвигая курсор с зажатой левой клавишей мыши по графику можно подробно посмотреть все решения уравнения с точностью до 0,001. Встроенная клавиатура позволяет быстро писать степени и дроби. Самым важным плюсом является возможность записывать уравнение в любом состоянии, не приводя к виду: y = f(x).
Инструкция:
- В левом столбце кликните правой кнопкой мыши по свободной строке.
- В нижнем левом углу нажмите на значок клавиатуры.
- На появившейся панели наберите нужное уравнение (для написания названий функций перейдите в раздел «A B C»).
- График строится в реальном времени.
Визуализация просто идеальная, адаптивная, видно, что над приложением работали дизайнеры. Из плюсов можно отметить огромное обилие возможностей, для освоения которых можно посмотреть примеры в меню в верхнем левом углу.
Сайтов для построения графиков функций великое множество, однако каждый волен выбирать для себя исходя из требуемого функционала и личных предпочтений. Список лучших был сформирован так, чтобы удовлетворить требования любого математика от мала до велика. Успехов вам в постижении «царицы наук»!
Построение графиков функций, содержащих модули, обычно вызывает немалые затруднения у школьников. Однако, все не так плохо. Достаточно запомнить несколько алгоритмов решения таких задач, и вы сможете без труда построить график даже самой на вид сложной функции. Давайте разберемся, что же это за алгоритмы.
1. Построение графика функции y = |f(x)|
Заметим, что множество значений функций y = |f(x)| : y ≥ 0. Таким образом, графики таких функций всегда расположены полностью в верхней полуплоскости.
Построение графика функции y = |f(x)| состоит из следующих простых четырех этапов.
1) Построить аккуратно и внимательно график функции y = f(x).
2) Оставить без изменения все точки графика, которые находятся выше оси 0x или на ней.
3) Часть графика, которая лежит ниже оси 0x, отобразить симметрично относительно оси 0x.
Пример 1. Изобразить график функции y = |x 2 – 4x + 3|
1) Строим график функции y = x 2 – 4x + 3. Очевидно, что график данной функции – парабола. Найдем координаты всех точек пересечения параболы с осями координат и координаты вершины параболы.
x 2 – 4x + 3 = 0.
x 1 = 3, x 2 = 1.
Следовательно, парабола пересекает ось 0x в точках (3, 0) и (1, 0).
y = 0 2 – 4 · 0 + 3 = 3.
Следовательно, парабола пересекает ось 0y в точке (0, 3).
Координаты вершины параболы:
x в = -(-4/2) = 2, y в = 2 2 – 4 · 2 + 3 = -1.
Следовательно, точка (2, -1) является вершиной данной параболы.
Рисуем параболу, используя полученные данные (рис. 1)
2) Часть графика, лежащую ниже оси 0x, отображаем симметрично относительно оси 0x.
3) Получаем график исходной функции (рис. 2 , изображен пунктиром).
2. Построение графика функции y = f(|x|)
Заметим, что функции вида y = f(|x|) являются четными:
y(-x) = f(|-x|) = f(|x|) = y(x). Значит, графики таких функций симметричны относительно оси 0y.
Построение графика функции y = f(|x|) состоит из следующей несложной цепочки действий.
1) Построить график функции y = f(x).
2) Оставить ту часть графика, для которой x ≥ 0, то есть часть графика, расположенную в правой полуплоскости.
3) Отобразить указанную в пункте (2) часть графика симметрично оси 0y.
4) В качестве окончательного графика выделить объединение кривых, полученных в пунктах (2) и (3).
Пример 2. Изобразить график функции y = x 2 – 4 · |x| + 3
Так как x 2 = |x| 2 , то исходную функцию можно переписать в следующем виде: y = |x| 2 – 4 · |x| + 3. А теперь можем применять предложенный выше алгоритм.
1) Строим аккуратно и внимательно график функции y = x 2 – 4 · x + 3 (см. также рис. 1 ).
2) Оставляем ту часть графика, для которой x ≥ 0, то есть часть графика, расположенную в правой полуплоскости.
3) Отображаем правую часть графика симметрично оси 0y.
(рис. 3) .
Пример 3. Изобразить график функции y = log 2 |x|
Применяем схему, данную выше.
1) Строим график функции y = log 2 x (рис. 4) .
3. Построение графика функции y = |f(|x|)|
Заметим, что функции вида y = |f(|x|)| тоже являются четными. Действительно, y(-x) = y = |f(|-x|)| = y = |f(|x|)| = y(x), и поэтому, их графики симметричны относительно оси 0y. Множество значений таких функций: y ≥ 0. Значит, графики таких функций расположены полностью в верхней полуплоскости.
Чтобы построить график функции y = |f(|x|)|, необходимо:
1) Построить аккуратно график функции y = f(|x|).
2) Оставить без изменений ту часть графика, которая находится выше оси 0x или на ней.
3) Часть графика, расположенную ниже оси 0x, отобразить симметрично относительно оси 0x.
4) В качестве окончательного графика выделить объединение кривых, полученных в пунктах (2) и (3).
Пример 4. Изобразить график функции y = |-x 2 + 2|x| – 1|.
1) Заметим, что x 2 = |x| 2 . Значит, вместо исходной функции y = -x 2 + 2|x| – 1
можно использовать функцию y = -|x| 2 + 2|x| – 1, так как их графики совпадают.
Строим график y = -|x| 2 + 2|x| – 1. Для этого применяем алгоритм 2.
a) Строим график функции y = -x 2 + 2x – 1 (рис. 6) .
b) Оставляем ту часть графика, которая расположена в правой полуплоскости.
c) Отображаем полученную часть графика симметрично оси 0y.
d) Полученный график изображен на рисунке пунктиром (рис. 7) .
2) Выше оси 0х точек нет, точки на оси 0х оставляем без изменения.
3) Часть графика, расположенную ниже оси 0x, отображаем симметрично относительно 0x.
4) Полученный график изображен на рисунке пунктиром (рис. 8) .
Пример 5. Построить график функции y = |(2|x| – 4) / (|x| + 3)|
1) Сначала необходимо построить график функции y = (2|x| – 4) / (|x| + 3). Для этого возвращаемся к алгоритму 2.
a) Аккуратно строим график функции y = (2x – 4) / (x + 3) (рис. 9) .
Заметим, что данная функция является дробно-линейной и ее график есть гипербола. Для построения кривой сначала необходимо найти асимптоты графика. Горизонтальная – y = 2/1 (отношение коэффициентов при x в числителе и знаменателе дроби), вертикальная – x = -3.
2) Ту часть графика, которая находится выше оси 0x или на ней, оставим без изменений.
3) Часть графика, расположенную ниже оси 0x, отобразим симметрично относительно 0x.
4) Окончательный график изображен на рисунке (рис. 11) .
сайт, при полном или частичном копировании материала ссылка на первоисточник обязательна.
К сожалению, не все студенты и школьники знают и любят алгебру, но готовить домашние задания, решать контрольные и сдавать экзамены приходится каждому. Особенно трудно многим даются задачи на построение графиков функций: если где-то что-то не понял, не доучил, упустил — ошибки неизбежны. Но кому же хочется получать плохие оценки?
Не желаете пополнить когорту хвостистов и двоечников? Для этого у вас есть 2 пути: засесть за учебники и восполнить пробелы знаний либо воспользоваться виртуальным помощником — сервисом автоматического построения графиков функций по заданным условиям. С решением или без. Сегодня мы познакомим вас с несколькими из них.
Лучшее, что есть в Desmos.com, это гибко настраиваемый интерфейс, интерактивность, возможность разносить результаты по таблицам и бесплатно хранить свои работы в базе ресурса без ограничений по времени. А недостаток — в том, что сервис не полностью переведен на русский язык.
Grafikus.ru
Grafikus.ru — еще один достойный внимания русскоязычный калькулятор для построения графиков. Причем он строит их не только в двухмерном, но и в трехмерном пространстве.
Вот неполный перечень заданий, с которыми этот сервис успешно справляется:
- Черчение 2D-графиков простых функций: прямых, парабол, гипербол, тригонометрических, логарифмических и т. д.
- Черчение 2D-графиков параметрических функций: окружностей, спиралей, фигур Лиссажу и прочих.
- Черчение 2D-графиков в полярных координатах.
- Построение 3D-поверхностей простых функций.
- Построение 3D-поверхностей параметрических функций.
Готовый результат открывается в отдельном окне. Пользователю доступны опции скачивания, печати и копирования ссылки на него. Для последнего придется авторизоваться на сервисе через кнопки соцсетей.
Координатная плоскость Grafikus.ru поддерживает изменение границ осей, подписей к ним, шага сетки, а также — ширины и высоты самой плоскости и размера шрифта.
Самая сильная сторона Grafikus.ru — возможность построения 3D-графиков. В остальном он работает не хуже и не лучше, чем ресурсы-аналоги.
Построение графиков целой и дробной части числа — ЗФТШ, МФТИ
Рассмотрим интересный вид кусочно-заданных функций.
Целой частью [x][x] числа xx называется наибольшее целое число, не превосходящее xx.
Например, [1]=1[1] = 1, [0,7]=0[0,7] = 0, а [−0,7]=−1[−0,7] = −1. Функцию f(x)=[x]f(x) = [x] легко можно задать на промежутках между парами соседних целых чисел:
`[x] = n` при `n<=x<n+1` для всякого фиксированного целого числа `n`.
Поэтому график этой функции имеет следующий вид (рис. 16).
Рассмотрим более трудный пример.
Построить график функции f(x)=[2x+3,5]f(x) = [2x + 3,5].
Ясно, что [2x+3,5]=[2x+0,5]+3[2x + 3,5]= [2x + 0,5] + 3. Далее,
из определения целой части числа следует такое представление:
[2x + 3,5] =\lbrack2x\;+\;3,5\rbrack\;=[2x]+3, если n2≤x<n2+14,[2x]+4, еслиn2+14≤x<n+12\left\{\begin{array}{l}\lbrack2x\rbrack+3,\;\mathrm{если}\;\dfrac n2\leq x<\dfrac n2+\dfrac14,\\\lbrack2x\rbrack+4,\;\mathrm{если}\dfrac n2+\dfrac14\leq x<\dfrac{n+1}2\end{array}\right.
для всякого целого nn (рис. 17).
Рассмотрим ещё такой пример.
Изобразим на координатной плоскости xOyxOy множество точек (x,y)(x,y), для которых [x]=[y][x] = [y].
Ясно, что [x]=[y][x] = [y] означает, что для некоторого целого `n` верны неравенства n≤x<n+1n ≤ x < n + 1 и n≤y<n+1n ≤ y < n + 1. Набор всех таких точек будет объединением квадратиков так, как показано на рисунке. Жирные участки границ входят в график, а пунктирные и выколотые точки – нет (рис. 18).
С целой частью числа тесно связана такая кусочно-линейная функция.
Дробной частью {x}\{x\}\ числа xx называется число x=x−[x]\left\{x\right\}=x-\lbrack x\rbrack.
К примеру, {1}=0\{1\} = 0, {0,7}=0,7\{0,7\} = 0,7, а {−0,7}=0,3\{−0,7\} = 0,3.
Построим график функции f(x)={x}f(x) = \{x\}. Ясно, что
f(x)=x−[x]=x−nf(x) = x − [x] = x − n при n≤x<n+1n ≤ x < n + 1 (рис. 19).
Учебные материалы по математике | Построить график функции без применения производной
Построим схему графика функции вблизи точки разрыва:
Задание 2. Построить график функции без применения производной
Решение:
1. Область определения функции ,
— не существует, значит — точка разрыва.
2. Найдём односторонние пределы функции:
Вычислим левосторонний предел в точке:
Вычислим правосторонний предел в точке:
Значит, точка — точка разрыва II рода.
3. Найдём пределы функции на бесконечности:
Строим график функции по результатам исследования:
Методические указания и пример типового расчёта
задания №32 «Математического тренинга» по теме
«Исследование функции на экстремум по второй производной»
Если в критической точке (в которой производная или не существует) вторая производная функции положительна, то в этой критической точке будет точка минимума (Рис.1), а если в критической точке вторая производная отрицательна, то в этой точке будет точка максимума (Рис.2).
Рис.1 Рис.2
Правило исследования функции на экстремум по второй производной:
1. Найти производную .
2. Найти критические точки функции, решив уравнение
3. Найти производную .
4. Вычислить в найденных критических точках значение производной.
5. По знаку производной сделать вывод о том, является ли критическая точка точкой максимума или точкой минимума.
6. Вычислить в найденной точке экстремума сам экстремум функции.
Примечание:
Если в критической точке вторая производная оказалась равна нулю, то это неопределённый случай, и тогда исследовать на экстремум придётся по первой производной.
Пример 1. Исследовать функцию на экстремум по второй производной.
Решение:
1. Найдём первую производную: ;
2. Найдём критические точки функции: , тогда получим уравнение
,
,
,
, — критические точки функции;
3. Найдём вторую производную: ;
4. Определим знак второй производной в найденных критических точках:
, значит, точка — точка max,
, значит, точка — точка min;
5. Вычислим значение экстремума функции в точках экстремума:
;
Ответ: при ,
при .
Методические указания и примеры типового расчёта
задания №34 «Математического тренинга» по теме
«Исследование функции по первой и второй производной
и построение графика функции»
Пример 1. Исследовать функцию по первой и второй производной и построить её график:
Решение:
1. Область определения функции ;
Построить линии уровня функции онлайн калькулятор. Строим график функций онлайн
«Натуральный логарифм» — 0,1. Натуральные логарифмы. 4. «Логарифмический дартс». 0,04. 7. 121.
«Степенная функция 9 класс» — У. Кубическая парабола. У = х3. 9 класс учитель Ладошкина И.А. У = х2. Гипербола. 0. У = хn, у = х-n где n – заданное натуральное число. Х. Показатель – четное натуральное число (2n).
«Квадратичная функция» — 1 Определение квадратичной функции 2 Свойства функции 3 Графики функции 4 Квадратичные неравенства 5 Вывод. Свойства: Неравенства: Подготовил ученик 8А класса Герлиц Андрей. План: График: -Промежутки монотонности при а > 0 при а
«Квадратичная функция и её график» — Решение.у=4x А(0,5:1) 1=1 А-принадлежит. При а=1 формула у=аx принимает вид.
«8 класс квадратичная функция» — 1) Построить вершину параболы. Построение графика квадратичной функции. x. -7. Построить график функции. Алгебра 8 класс Учитель 496 школы Бовина Т. В. -1. План построения. 2) Построить ось симметрии x=-1. y.
В золотой век информационных технологий мало кто будет покупать миллиметровку и тратить часы для рисования функции или произвольного набора данных, да и зачем заниматься столь муторной работой, когда можно построить график функции онлайн. Кроме того, подсчитать миллионы значений выражения для правильного отображения практически нереально и сложно, да и несмотря на все усилия получится ломаная линия, а не кривая. Потому компьютер в данном случае – незаменимый помощник.
Что такое график функций
Функция – это правило, по которому каждому элементу одного множества ставится в соответствие некоторый элемент другого множества, например, выражение y = 2x + 1 устанавливает связь между множествами всех значений x и всех значений y, следовательно, это функция. Соответственно, графиком функции будет называться множество точек, координаты которых удовлетворяют заданному выражению.
На рисунке мы видим график функции y = x . Это прямая и у каждой ее точки есть свои координаты на оси X и на оси Y . Исходя из определения, если мы подставим координату X некоторой точки в данное уравнение, то получим координату этой точки на оси Y .
Сервисы для построения графиков функций онлайн
Рассмотрим несколько популярных и лучших по сервисов, позволяющих быстро начертить график функции.
Открывает список самый обычный сервис, позволяющий построить график функции по уравнению онлайн. Umath содержит только необходимые инструменты, такие как масштабирование, передвижение по координатной плоскости и просмотр координаты точки на которую указывает мышь.
Инструкция:
- Введите ваше уравнение в поле после знака «=».
- Нажмите кнопку «Построить график» .
Как видите все предельно просто и доступно, синтаксис написания сложных математических функций: с модулем, тригонометрических, показательных — приведен прямо под графиком. Также при необходимости можно задать уравнение параметрическим методом или строить графики в полярной системе координат.
В Yotx есть все функции предыдущего сервиса, но при этом он содержит такие интересные нововведения как создание интервала отображения функции, возможность строить график по табличным данным, а также выводить таблицу с целыми решениями.
Инструкция:
- Выберите необходимый способ задания графика.
- Введите уравнение.
- Задайте интервал.
- Нажмите кнопку «Построить» .
Для тех, кому лень разбираться, как записать те или иные функции, на этой позиции представлен сервис с возможностью выбирать из списка нужную одним кликом мыши.
Инструкция:
- Найдите в списке необходимую вам функцию.
- Щелкните на нее левой кнопкой мыши
- При необходимости введите коэффициенты в поле «Функция:» .
- Нажмите кнопку «Построить» .
В плане визуализации есть возможность менять цвет графика, а также скрывать его или вовсе удалять.
Desmos безусловно – самый навороченный сервис для построения уравнений онлайн. Передвигая курсор с зажатой левой клавишей мыши по графику можно подробно посмотреть все решения уравнения с точностью до 0,001. Встроенная клавиатура позволяет быстро писать степени и дроби. Самым важным плюсом является возможность записывать уравнение в любом состоянии, не приводя к виду: y = f(x).
Инструкция:
- В левом столбце кликните правой кнопкой мыши по свободной строке.
- В нижнем левом углу нажмите на значок клавиатуры.
- На появившейся панели наберите нужное уравнение (для написания названий функций перейдите в раздел «A B C»).
- График строится в реальном времени.
Визуализация просто идеальная, адаптивная, видно, что над приложением работали дизайнеры. Из плюсов можно отметить огромное обилие возможностей, для освоения которых можно посмотреть примеры в меню в верхнем левом углу.
Сайтов для построения графиков функций великое множество, однако каждый волен выбирать для себя исходя из требуемого функционала и личных предпочтений. Список лучших был сформирован так, чтобы удовлетворить требования любого математика от мала до велика. Успехов вам в постижении «царицы наук»!
К сожалению, не все студенты и школьники знают и любят алгебру, но готовить домашние задания, решать контрольные и сдавать экзамены приходится каждому. Особенно трудно многим даются задачи на построение графиков функций: если где-то что-то не понял, не доучил, упустил — ошибки неизбежны. Но кому же хочется получать плохие оценки?
Не желаете пополнить когорту хвостистов и двоечников? Для этого у вас есть 2 пути: засесть за учебники и восполнить пробелы знаний либо воспользоваться виртуальным помощником — сервисом автоматического построения графиков функций по заданным условиям. С решением или без. Сегодня мы познакомим вас с несколькими из них.
Лучшее, что есть в Desmos.com, это гибко настраиваемый интерфейс, интерактивность, возможность разносить результаты по таблицам и бесплатно хранить свои работы в базе ресурса без ограничений по времени. А недостаток — в том, что сервис не полностью переведен на русский язык.
Grafikus.ru
Grafikus.ru — еще один достойный внимания русскоязычный калькулятор для построения графиков. Причем он строит их не только в двухмерном, но и в трехмерном пространстве.
Вот неполный перечень заданий, с которыми этот сервис успешно справляется:
- Черчение 2D-графиков простых функций: прямых, парабол, гипербол, тригонометрических, логарифмических и т. д.
- Черчение 2D-графиков параметрических функций: окружностей, спиралей, фигур Лиссажу и прочих.
- Черчение 2D-графиков в полярных координатах.
- Построение 3D-поверхностей простых функций.
- Построение 3D-поверхностей параметрических функций.
Готовый результат открывается в отдельном окне. Пользователю доступны опции скачивания, печати и копирования ссылки на него. Для последнего придется авторизоваться на сервисе через кнопки соцсетей.
Координатная плоскость Grafikus.ru поддерживает изменение границ осей, подписей к ним, шага сетки, а также — ширины и высоты самой плоскости и размера шрифта.
Самая сильная сторона Grafikus.ru — возможность построения 3D-графиков. В остальном он работает не хуже и не лучше, чем ресурсы-аналоги.
Построение графиков функций, содержащих модули, обычно вызывает немалые затруднения у школьников. Однако, все не так плохо. Достаточно запомнить несколько алгоритмов решения таких задач, и вы сможете без труда построить график даже самой на вид сложной функции. Давайте разберемся, что же это за алгоритмы.
1. Построение графика функции y = |f(x)|
Заметим, что множество значений функций y = |f(x)| : y ≥ 0. Таким образом, графики таких функций всегда расположены полностью в верхней полуплоскости.
Построение графика функции y = |f(x)| состоит из следующих простых четырех этапов.
1) Построить аккуратно и внимательно график функции y = f(x).
2) Оставить без изменения все точки графика, которые находятся выше оси 0x или на ней.
3) Часть графика, которая лежит ниже оси 0x, отобразить симметрично относительно оси 0x.
Пример 1. Изобразить график функции y = |x 2 – 4x + 3|
1) Строим график функции y = x 2 – 4x + 3. Очевидно, что график данной функции – парабола. Найдем координаты всех точек пересечения параболы с осями координат и координаты вершины параболы.
x 2 – 4x + 3 = 0.
x 1 = 3, x 2 = 1.
Следовательно, парабола пересекает ось 0x в точках (3, 0) и (1, 0).
y = 0 2 – 4 · 0 + 3 = 3.
Следовательно, парабола пересекает ось 0y в точке (0, 3).
Координаты вершины параболы:
x в = -(-4/2) = 2, y в = 2 2 – 4 · 2 + 3 = -1.
Следовательно, точка (2, -1) является вершиной данной параболы.
Рисуем параболу, используя полученные данные (рис. 1)
2) Часть графика, лежащую ниже оси 0x, отображаем симметрично относительно оси 0x.
3) Получаем график исходной функции (рис. 2 , изображен пунктиром).
2. Построение графика функции y = f(|x|)
Заметим, что функции вида y = f(|x|) являются четными:
y(-x) = f(|-x|) = f(|x|) = y(x). Значит, графики таких функций симметричны относительно оси 0y.
Построение графика функции y = f(|x|) состоит из следующей несложной цепочки действий.
1) Построить график функции y = f(x).
2) Оставить ту часть графика, для которой x ≥ 0, то есть часть графика, расположенную в правой полуплоскости.
3) Отобразить указанную в пункте (2) часть графика симметрично оси 0y.
4) В качестве окончательного графика выделить объединение кривых, полученных в пунктах (2) и (3).
Пример 2. Изобразить график функции y = x 2 – 4 · |x| + 3
Так как x 2 = |x| 2 , то исходную функцию можно переписать в следующем виде: y = |x| 2 – 4 · |x| + 3. А теперь можем применять предложенный выше алгоритм.
1) Строим аккуратно и внимательно график функции y = x 2 – 4 · x + 3 (см. также рис. 1 ).
2) Оставляем ту часть графика, для которой x ≥ 0, то есть часть графика, расположенную в правой полуплоскости.
3) Отображаем правую часть графика симметрично оси 0y.
(рис. 3) .
Пример 3. Изобразить график функции y = log 2 |x|
Применяем схему, данную выше.
1) Строим график функции y = log 2 x (рис. 4) .
3. Построение графика функции y = |f(|x|)|
Заметим, что функции вида y = |f(|x|)| тоже являются четными. Действительно, y(-x) = y = |f(|-x|)| = y = |f(|x|)| = y(x), и поэтому, их графики симметричны относительно оси 0y. Множество значений таких функций: y ≥ 0. Значит, графики таких функций расположены полностью в верхней полуплоскости.
Чтобы построить график функции y = |f(|x|)|, необходимо:
1) Построить аккуратно график функции y = f(|x|).
2) Оставить без изменений ту часть графика, которая находится выше оси 0x или на ней.
3) Часть графика, расположенную ниже оси 0x, отобразить симметрично относительно оси 0x.
4) В качестве окончательного графика выделить объединение кривых, полученных в пунктах (2) и (3).
Пример 4. Изобразить график функции y = |-x 2 + 2|x| – 1|.
1) Заметим, что x 2 = |x| 2 . Значит, вместо исходной функции y = -x 2 + 2|x| – 1
можно использовать функцию y = -|x| 2 + 2|x| – 1, так как их графики совпадают.
Строим график y = -|x| 2 + 2|x| – 1. Для этого применяем алгоритм 2.
a) Строим график функции y = -x 2 + 2x – 1 (рис. 6) .
b) Оставляем ту часть графика, которая расположена в правой полуплоскости.
c) Отображаем полученную часть графика симметрично оси 0y.
d) Полученный график изображен на рисунке пунктиром (рис. 7) .
2) Выше оси 0х точек нет, точки на оси 0х оставляем без изменения.
3) Часть графика, расположенную ниже оси 0x, отображаем симметрично относительно 0x.
4) Полученный график изображен на рисунке пунктиром (рис. 8) .
Пример 5.3$.
2. Найдем точку А, координата x, которой равна 1,5. Мы видим, что координата функции находится между значениями 3 и 4 (см. рис. 2). Значит надо заказать 4 куба.
функций — Введение | Онлайн-справка
Catalyst Functions — это настраиваемые структуры кодирования, которые содержат сложную бизнес-логику вашего приложения. Функции позволяют хранить функциональные возможности приложения в централизованном и безопасном месте, а не в основном коде приложения. Приложение использует API для вызова функций с серверов Catalyst, когда это необходимо.
Catalyst поддерживает разработку серверных функций в двух средах программирования:
- Java
- Node.js
Вы можете обратиться к документации Java SDK и документации Node.js SDK, чтобы узнать об этих пакетах SDK.
Функции Catalyst — это один из двух основных компонентов проекта приложения Catalyst, наряду с клиентом. Вы можете беспрепятственно получать доступ к компонентам Catalyst с помощью функций и предоставлять мощный серверный модуль, который требуется приложению или микросервису. Вы можете использовать их для автоматизации задач, выполнения вычислений с интенсивным использованием памяти, интеграции со сторонними службами и многого другого.
В Catalyst можно создать пять типов функций для различных целей на платформах Java и Node.js:
- Основные функции ввода-вывода: Простые функции, используемые для основных операций ввода-вывода, с передачей строки в качестве Параметр ввода-вывода
- Расширенные функции ввода-вывода: Расширенные функции HTTP, поддерживающие заголовки и собственные объекты запросов и ответов
- Функции событий: Управляемые событиями функции, которые вызываются определенными событиями, настроенными с помощью прослушивателей событий
- Функции Cron: Функции на основе Cron, которые вызываются один раз или периодически в зависимости от настроенного расписания задания cron
- Функции интеграции: Функции, позволяющие интегрироваться с другими службами Zoho и легко создавать для них серверные части
Catalyst предоставляет различные компоненты и инструменты для управления функциями и просмотра статистики их производительности:
- 90 008 Правила безопасности: Конфигурация безопасности по умолчанию для функций базового ввода-вывода и расширенного ввода-вывода, которая позволяет вам определять правила их вызова и доступа. Функции ввода-вывода и обработка маршрутизации, регулирования и аутентификации клиентских запросов
- Журналы: Предоставляет журналы всех выполнений функций, а также сведения об уровнях журналов, ответах, состояниях и другую информацию
- Мониторинг производительности приложений: Предоставляет подробную статистику и отчеты о производительности всех выполнений функций, которые позволяют выявлять и устранять ошибки.
- Схемы: Инструмент автоматизации рабочего процесса, который позволяет проектировать и организовывать выполнение основных функций ввода-вывода, а также обрабатывать потоки данных между несколькими функциями.
Вы можете работать с функциями, используя Catalyst CLI и внешнюю IDE, или работать с ними напрямую из e Веб-консоль Catalyst.В этом документе объясняются концепции, связанные с функциями и работой с ними из веб-консоли Catalyst. Чтобы узнать о работе с ними в локальной среде, обратитесь к этому разделу за ссылками на соответствующие страницы справки CLI.
Примечание. Функции Catalyst Java можно создавать и кодировать только с помощью интерфейса командной строки Catalyst и внешнего редактора, а также развертывать или загружать в веб-консоль. На данный момент вы не можете кодировать их непосредственно в веб-консоли.
Действия по работе с функциями из локальной среды
Вы можете создать, построить и развернуть функцию из локальной среды, как описано ниже.Обратитесь к ссылкам, указанным на каждом шаге, для получения подробной справки по действиям CLI.
- Инициализация функции из интерфейса командной строки: При инициализации функции из интерфейса командной строки каталог функций и шаблонная структура кода для каждого файла создаются на основе его стека, типа и того, решили ли вы установить Catalyst SDK .
- Настройте функцию в каталоге вашего проекта в любое время: Вы можете настроить функцию в любое время после инициализации проекта из CLI.
- Закодируйте функцию с помощью внешнего редактора: Если вы инициализируете функцию из CLI, вы можете закодировать ее с помощью внешнего редактора. Вы также можете в любое время загрузить пакет функции в консоль Catalyst и запрограммировать его с помощью редактора Catalyst.
- Проверка функции в интерфейсе командной строки: Вы можете тестировать и отлаживать функции всех типов, кроме расширенных функций ввода-вывода, запустив для них оболочку Node из интерфейса командной строки.
- Обслуживать функцию с локального хоста: Помимо запуска оболочки Node, вы также можете обслуживать базовую или расширенную функцию ввода-вывода с локального хоста и тестировать ее выполнение.
Примечание: Вы не сможете обслуживать функции других типов, так как они вызываются внутри.
- Разверните функцию на консоли Catalyst: Затем вы можете развернуть функцию с вашего локального компьютера на удаленную консоль Catalyst из интерфейса командной строки.
- Удалить функцию из CLI: Вы также можете удаленно удалить функцию из CLI. Это также удалит его из консоли.
- Вы также можете работать с функцией Catalyst независимо, не инициализируя ее в CLI Catalyst, и напрямую загружать ее на удаленную консоль Catalyst.В этом случае вы должны убедиться, что создаете необходимые конфигурационные файлы в каталоге функции вручную, и включаете в них необходимый код в стандартной структуре. Подробную информацию можно найти на странице справки Project Directory Structure.
- Вы также можете развернуть функции на удаленной консоли Catalyst напрямую из репозитория GitHub. Чтобы узнать больше, обратитесь к странице справки GitHub Integration.
Ознакомьтесь с учебными пособиями по Catalyst, чтобы попрактиковаться в работе с функциями.
Работа с основными инструментами Azure Functions
- Статья
- 20 минут на чтение
- 53 участника
Полезна ли эта страница?
да Нет
Любая дополнительная обратная связь?
Отзыв будет отправлен в Microsoft: при нажатии кнопки отправки ваш отзыв будет использован для улучшения продуктов и услуг Microsoft.Политика конфиденциальности.
Представлять на рассмотрение
Спасибо.
В этой статье
Базовые инструменты функций Azure позволяют разрабатывать и тестировать функции на локальном компьютере из командной строки или терминала. Ваши локальные функции могут подключаться к работающим службам Azure, и вы можете отлаживать свои функции на локальном компьютере с помощью полной среды выполнения функций.Вы даже можете развернуть приложение-функцию в своей подписке Azure.
Важно
Не смешивайте локальную разработку с разработкой портала в одном приложении-функции. При создании и публикации функций из локального проекта не следует пытаться поддерживать или изменять код проекта на портале.
При разработке функций на локальном компьютере и их публикации в Azure с помощью основных инструментов выполняются следующие основные шаги:
Предпосылки
Основные инструменты Azure Functions в настоящее время зависят либо от Azure CLI, либо от Azure PowerShell для аутентификации с помощью вашей учетной записи Azure.Это означает, что вы должны установить один из этих инструментов, чтобы иметь возможность публиковать в Azure из основных инструментов функций Azure.
Версии основных инструментов
Существует четыре версии основных инструментов Azure Functions. Используемая вами версия зависит от вашей локальной среды разработки, выбора языка и требуемого уровня поддержки.
Выберите вкладку версии ниже, чтобы узнать о каждой конкретной версии и получить подробные инструкции по установке:
Поддерживает версию 4.x среды выполнения функций.Эта версия поддерживает Windows, macOS и Linux и использует для установки менеджеры пакетов для конкретных платформ или npm. Это рекомендуемая версия среды выполнения функций и основных инструментов.
Поддерживает версию 3.x среды выполнения функций Azure. Эта версия поддерживает Windows, macOS и Linux и использует для установки менеджеры пакетов для конкретных платформ или npm.
Поддерживает версию 2.x среды выполнения функций Azure. Эта версия поддерживает Windows, macOS и Linux и использует для установки менеджеры пакетов для конкретных платформ или npm.
Поддерживает версию 1.x среды выполнения функций Azure. Эта версия инструментов поддерживается только на компьютерах с Windows и устанавливается из пакета npm.
На данный компьютер можно установить только одну версию Core Tools. Если не указано иное, примеры в этой статье относятся к версии 3.x.
Базовые инструменты Функций Azure включают версию той же среды выполнения, что и среда выполнения Функций Azure, которую можно запустить на локальном компьютере разработки. Он также предоставляет команды для создания функций, подключения к Azure и развертывания проектов функций.
Начиная с версии 2.x, Core Tools работает в Windows, macOS и Linux.
В следующих шагах используется установщик Windows (MSI) для установки Core Tools v4.x. Дополнительные сведения о других установщиках на основе пакетов см. в файле сведений об основных инструментах.
Загрузите и запустите программу установки Core Tools в зависимости от вашей версии Windows:
В следующих шагах используется установщик Windows (MSI) для установки Core Tools v3.x. Дополнительные сведения о других установщиках на основе пакетов см. в файле сведений об основных инструментах.
Загрузите и запустите программу установки Core Tools в зависимости от вашей версии Windows:
Для установки версии 2.x основных инструментов требуется npm. Вы также можете использовать Chocolatey для установки пакета.
-
Если вы еще этого не сделали, установите Node.js с помощью npm.
-
Запустите следующую команду npm, чтобы установить пакет основных инструментов:
npm install -g [email protected] --unsafe-perm true
Если вам нужно установить версию 1.x основных инструментов, дополнительную информацию см. в репозитории GitHub.
В следующих шагах используется Homebrew для установки основных инструментов на macOS.
-
Установите Homebrew, если он еще не установлен.
-
Установите пакет основных инструментов:
кран для заваривания лазурный/функции brew установить [email protected] # при обновлении на машине с установленной версией 2.x или 3.x: brew link --overwrite [email protected]
В следующих шагах используется Homebrew для установки основных инструментов на macOS.
-
Установите Homebrew, если он еще не установлен.
-
Установите пакет основных инструментов:
кран для заваривания лазурный/функции brew установить [email protected] # при обновлении на машине с установленной версией 2.x: brew link --overwrite [email protected]
В следующих шагах используется Homebrew для установки основных инструментов на macOS.
-
Установите Homebrew, если он еще не установлен.
-
Установите пакет основных инструментов:
кран для заваривания лазурный/функции brew установить [email protected]
Версия 1.x основных инструментов не поддерживается в macOS. Используйте версию 2.x или более позднюю версию в macOS.
Следующие шаги используют APT для установки основных инструментов в вашем дистрибутиве Ubuntu/Debian Linux. Информацию о других дистрибутивах Linux см. в ознакомительном файле Core Tools.
-
Установите ключ GPG репозитория пакетов Microsoft, чтобы проверить целостность пакета:
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
-
Настройте список источников APT перед выполнением обновления APT.
Убунту
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc /apt/sources.list.d/dotnetdev.list'
Дебиан
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/debian/$(lsb_release -rs | cut -d'.' -f 1)/prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
-
Проверьте файл
/etc/apt/sources.list.d/dotnetdev.list
на наличие одной из соответствующих строк версии Linux, перечисленных ниже:дистрибутив Linux Версия Дебиан 11 яблочко
Дебиан 10 бустер
Дебиан 9 стрейч
Убунту 20.04 фокальный
Убунту 19.04 дискотека
Убунту 18.10 космический
Убунту 18.04 бионический
Убунту 17.04 пикантный
Ubuntu 16.04/Linux Mint 18 ксениал
-
Запустите обновление источника APT:
обновление sudo apt-get
-
Установите пакет основных инструментов:
sudo apt-get установить azure-функции-основные-инструменты-4
Следующие шаги используют APT для установки основных инструментов в вашем дистрибутиве Ubuntu/Debian Linux.Информацию о других дистрибутивах Linux см. в ознакомительном файле Core Tools.
-
Установите ключ GPG репозитория пакетов Microsoft, чтобы проверить целостность пакета:
завиток https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
-
Настройте список источников APT перед выполнением обновления APT.
Убунту
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
Дебиан
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/debian/$(lsb_release -rs | cut -d'.' -f 1)/prod $(lsb_release -cs ) main" > /etc/apt/sources.list.d/dotnetdev.list'
-
Проверьте файл
/etc/apt/sources.list.d/dotnetdev.list
на наличие одной из соответствующих строк версии Linux, перечисленных ниже:дистрибутив Linux Версия Дебиан 11 яблочко
Дебиан 10 бустер
Дебиан 9 стрейч
Убунту 20.04 фокальный
Убунту 19.04 дискотека
Убунту 18.10 космический
Убунту 18.04 бионический
Убунту 17.04 пикантный
Ubuntu 16.04/Linux Mint 18 ксениал
-
Запустите обновление источника APT:
обновление sudo apt-get
-
Установите пакет основных инструментов:
sudo apt-get установить azure-функции-основные-инструменты-3
Следующие шаги используют APT для установки основных инструментов в вашем дистрибутиве Ubuntu/Debian Linux.Информацию о других дистрибутивах Linux см. в ознакомительном файле Core Tools.
-
Установите ключ GPG репозитория пакетов Microsoft, чтобы проверить целостность пакета:
завиток https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
-
Настройте список источников APT перед выполнением обновления APT.
Убунту
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
Дебиан
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/debian/$(lsb_release -rs | cut -d'.' -f 1)/prod $(lsb_release -cs ) main" > /etc/apt/sources.list.d/dotnetdev.list'
-
Проверьте файл
/etc/apt/sources.list.d/dotnetdev.list
на наличие одной из соответствующих строк версии Linux, перечисленных ниже:дистрибутив Linux Версия Дебиан 11 яблочко
Дебиан 10 бустер
Дебиан 9 стрейч
Убунту 20.04 фокальный
Убунту 19.04 дискотека
Убунту 18.10 космический
Убунту 18.04 бионический
Убунту 17.04 пикантный
Ubuntu 16.04/Linux Mint 18 ксениал
-
Запустите обновление источника APT:
обновление sudo apt-get
-
Установите пакет основных инструментов:
sudo apt-get установить azure-функции-основные-инструменты-2
Версия 1.x основных инструментов не поддерживается в Linux. Используйте версию 2.x или более позднюю версию в Linux.
При переходе на другую версию Core Tools следует использовать тот же менеджер пакетов, что и при исходной установке, чтобы перейти на другую версию пакета. Например, если вы установили Core Tools версии 2.x с помощью npm, вы должны использовать следующую команду для обновления до версии 3.x:
npm install -g [email protected] --unsafe-perm true
Если вы использовали установщик Windows (MSI) для установки основных инструментов в Windows, вам следует удалить старую версию из «Установка и удаление программ» перед установкой другой версии.
Создать локальный проект функций
Каталог проекта Functions содержит следующие файлы и папки, независимо от языка:
Имя файла | Описание |
---|---|
host.json | Дополнительные сведения см. в справочнике host.json. |
локальные.настройки.json | Параметры, используемые Core Tools при локальном запуске, включая параметры приложения. Чтобы узнать больше, см. локальные настройки. |
.gitignore | Предотвращает случайную публикацию файла local.settings.json в репозиторий Git. Чтобы узнать больше, см. локальные настройки | .
.vscode\extensions.json | Файл настроек, используемый при открытии папки проекта в Visual Studio Code. |
Дополнительные сведения о папке проекта Функций см. в руководстве для разработчиков Функций Azure.
В окне терминала или из командной строки выполните следующую команду, чтобы создать проект и локальный репозиторий Git:
функция инициализации MyFunctionProj
В этом примере проект «Функции» создается в новой папке MyFunctionProj
.Вам будет предложено выбрать язык по умолчанию для вашего проекта.
При инициализации проекта применяются следующие соображения:
-
Если вы не укажете параметр
--worker-runtime
в команде, вам будет предложено выбрать язык. Дополнительные сведения см. в справочнике по функциям инициализации. -
Если вы не укажете имя проекта, инициализируется текущая папка.
-
Если вы планируете опубликовать свой проект в пользовательском контейнере Linux, используйте параметр
--docker
, чтобы убедиться, что для вашего проекта создан Dockerfile.Дополнительные сведения см. в разделе Создание функции в Linux с помощью пользовательского образа.
Некоторые языки могут иметь дополнительные особенности:
-
По умолчанию версия 2.x и более поздние версии основных инструментов создают проекты приложений-функций для среды выполнения .NET в виде проектов классов C# (.csproj). Версия 3.x также поддерживает создание функций, которые выполняются в .NET 5.0 в изолированном процессе. Эти проекты C#, которые можно использовать с Visual Studio или Visual Studio Code, компилируются во время отладки и при публикации в Azure.
-
Используйте параметр
--csx
, если вы хотите работать локально с файлами сценариев C# (.csx). Это те же файлы, которые вы получаете при создании функций на портале Azure и при использовании версии 1.x основных инструментов. Чтобы узнать больше, см. справочник func init.
- Java использует архетип Maven для создания локального проекта Functions вместе с вашей первой функцией, активируемой HTTP. Вместо использования
func init
иfunc new
следует выполнить действия, описанные в кратком руководстве по командной строке.
- Чтобы использовать значение
--worker-runtime
узла--language
какjavascript
.
Для PowerShell нет дополнительных соображений.
Расширения регистров
Начиная с версии среды выполнения 2.x, триггеры и привязки функций реализованы в виде пакетов расширения .NET (NuGet). Для скомпилированных проектов C# вы просто ссылаетесь на пакеты расширения NuGet для определенных триггеров и привязок, которые вы используете.Привязки HTTP и триггеры таймера не требуют расширений.
Чтобы упростить разработку проектов, отличных от C#, Функции позволяют ссылаться на пакет расширения версии в файле проекта host.json. Пакеты расширений делают все расширения доступными для вашего приложения и устраняют вероятность возникновения проблем совместимости пакетов между расширениями. Пакеты расширений также избавляют от необходимости устанавливать пакет SDK для .NET Core 3.1 и работать с файлом extensions.csproj.
Пакеты расширений— рекомендуемый подход для проектов функций, отличных от проектов, совместимых с C#.Для этих проектов параметр пакета расширения создается в файле host.json во время инициализации. Если это работает для вас, вы можете пропустить весь этот раздел.
Используйте комплекты расширения
Самый простой способ установить расширения привязки — включить пакеты расширений. При включении пакетов автоматически устанавливается предопределенный набор пакетов расширений.
Чтобы включить пакеты расширений, откройте файл host.json и обновите его содержимое, чтобы оно соответствовало следующему коду:
{
"версия": "2.0",
"РасширениеБундл": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"версия": "[1.*, 2.0.0)"
}
}
Если поддерживается вашим языком, пакеты расширений уже должны быть включены после вызова func init
. Вы должны добавить пакеты расширений в host.json, прежде чем добавлять привязки в файл function.json. Дополнительные сведения см. в статье Регистрация расширений привязки функций Azure.
Явно установить расширения
Возможны случаи в не-.NET, когда вы не можете использовать пакеты расширений, например, когда вам нужно настроить таргетинг на определенную версию расширения, не входящую в пакет. В этих редких случаях вы можете использовать Core Tools для локальной установки определенных пакетов расширений, необходимых для вашего проекта. Дополнительные сведения см. в разделе Явная установка расширений.
Локальные настройки
При запуске в приложении-функции в Azure параметры, необходимые для ваших функций, надежно хранятся в параметрах приложения. Во время локальной разработки эти параметры вместо этого добавляются к объекту Values
в файле local.файл settings.json. В файле local.settings.json также хранятся настройки, используемые локальными инструментами разработки.
Поскольку файл local.settings.json может содержать секреты, например строки подключения, никогда не следует хранить его в удаленном репозитории. Дополнительные сведения о локальных настройках см. в разделе Файл локальных настроек.
По умолчанию эти параметры не переносятся автоматически при публикации проекта в Azure. Используйте параметр --publish-local-settings
при публикации, чтобы убедиться, что эти параметры добавлены в приложение-функцию в Azure.Значения в разделе ConnectionStrings
никогда не публикуются.
Значения параметров приложения-функции также могут быть прочитаны в вашем коде как переменные среды. Дополнительные сведения см. в разделе «Переменные среды» следующих справочных разделов, посвященных конкретному языку:
. Если для AzureWebJobsStorage
не задана допустимая строка подключения к хранилищу и эмулятор не используется, отображается следующее сообщение об ошибке:
Отсутствует значение для AzureWebJobsStorage в локальном.настройки.json. Это требуется для всех триггеров, кроме HTTP. Вы можете запустить func azure functionapp fetch-app-settings
или указать строку подключения в local.settings.json.
Получите строки подключения к хранилищу
Даже при использовании эмулятора хранилища Microsoft Azure для разработки может потребоваться локальный запуск с реальным подключением к хранилищу. Предполагая, что вы уже создали учетную запись хранения, вы можете получить действительную строку подключения к хранилищу одним из нескольких способов:
.-
На портале Azure найдите и выберите учетных записей хранения .
-
Выберите учетную запись хранения, выберите Ключи доступа в Параметры , затем скопируйте одно из значений строки подключения .
В корне проекта используйте одну из следующих команд, чтобы загрузить строку подключения из Azure:
-
Загрузить все настройки из существующего функционального приложения:
func azure functionapp fetch-app-settings
-
Получить строку подключения для определенной учетной записи хранения:
func azure storage fetch-connection-string
Если вы еще не вошли в Azure, вам будет предложено сделать это.Эти команды перезаписывают любые существующие настройки в файле local.settings.json. Дополнительные сведения см. в описании команд
func azure functionapp fetch-app-settings
иfunc azure storage fetch-connection-string
.
-
Запустите обозреватель службы хранилища Azure.
-
В проводнике разверните подписку, затем разверните Учетные записи хранения .
-
Выберите свою учетную запись хранения и скопируйте основную или дополнительную строку подключения.
Создать функцию
Чтобы создать функцию в существующем проекте, выполните следующую команду:
функция новая
В версии 3.x/2.x при запуске func new
вам будет предложено выбрать шаблон на языке по умолчанию вашего приложения-функции. Далее вам будет предложено выбрать имя для вашей функции. В версии 1.x вам также необходимо выбрать язык.
Вы также можете указать имя функции и шаблон в команде func new
.В следующем примере используется параметр --template
для создания триггера HTTP с именем MyHttpTrigger
:
func new --template "Http Trigger" --name MyHttpTrigger
В этом примере создается триггер хранилища очереди с именем MyQueueTrigger
:
func new --template "Триггер очереди" --name MyQueueTrigger
Чтобы узнать больше, см. команду func new
.
Запускать функции локально
Чтобы запустить проект Функций, вы запускаете узел Функций из корневого каталога вашего проекта.Хост включает триггеры для всех функций в проекте. Команда start
зависит от языка вашего проекта.
запуск функции
mvn чистый пакет
mvn azure-функции: запустить
запуск функции
запуск функции
запуск функции
Эта команда должна выполняться в виртуальной среде.
установка нпм
запуск нпм
Когда узел функций запускается, он выводит URL-адрес функций, запускаемых HTTP, как в следующем примере:
Нашел следующие функции: Хозяин.Функции. MyHttpTrigger Хост вакансий запущен Функция HTTP MyHttpTrigger: http://localhost:7071/api/MyHttpTrigger
Важно
При локальном запуске авторизация не применяется для конечных точек HTTP. Это означает, что все локальные HTTP-запросы обрабатываются как authLevel = "anonymous"
. Дополнительные сведения см. в статье о привязке HTTP.
Передача тестовых данных в функцию
Чтобы протестировать свои функции локально, вы запускаете узел функций и вызываете конечные точки на локальном сервере с помощью HTTP-запросов.Конечная точка, которую вы вызываете, зависит от типа функции.
Примечание
Примеры в этом разделе используют инструмент cURL для отправки HTTP-запросов с терминала или командной строки. Вы можете использовать выбранный вами инструмент для отправки HTTP-запросов на локальный сервер. Инструмент cURL доступен по умолчанию в системах на базе Linux и Windows 10 сборки 17063 и более поздних версиях. В более старых версиях Windows необходимо сначала загрузить и установить инструмент cURL.
Дополнительные общие сведения о тестировании функций см. в разделе Стратегии тестирования кода в функциях Azure.
Функции, активируемые HTTP и веб-перехватчиком
Вы вызываете следующую конечную точку для локального запуска функций, запускаемых HTTP и веб-перехватчиком:
http://localhost:{порт}/api/{имя_функции}
Убедитесь, что вы используете то же имя сервера и тот же порт, которые прослушивает узел функций. Вы видите это в выводе, сгенерированном при запуске хоста функции. Вы можете вызвать этот URL-адрес, используя любой метод HTTP, поддерживаемый триггером.
Следующая команда cURL запускает функцию быстрого запуска MyHttpTrigger
из запроса GET с параметром name , переданным в строке запроса.
curl --get http://localhost:7071/api/MyHttpTrigger?name=Azure%20Rocks
В следующем примере та же функция вызывается из запроса POST, передающего имя в теле запроса:
curl --request POST http://localhost:7071/api/MyHttpTrigger --data '{"name":"Azure Rocks"}'
curl --request POST http://localhost:7071/api/MyHttpTrigger --data "{'name':'Azure Rocks'}"
Вы можете делать запросы GET из браузера, передавая данные в строке запроса.Для всех других методов HTTP необходимо использовать cURL, Fiddler, Postman или аналогичный инструмент тестирования HTTP, который поддерживает запросы POST.
Функции, не запускаемые HTTP
Для всех функций, кроме триггеров HTTP и Event Grid, вы можете протестировать свои функции локально с помощью REST, вызвав специальную конечную точку, называемую конечной точкой администрирования . Вызов этой конечной точки с запросом HTTP POST на локальном сервере запускает функцию.
Сведения о локальном тестировании функций, запускаемых сеткой событий, см. в разделе Локальное тестирование с помощью веб-приложения средства просмотра.
При желании вы можете передать тестовые данные на выполнение в теле POST-запроса. Эта функция аналогична вкладке Test на портале Azure.
Вы вызываете следующую конечную точку администратора для запуска функций, отличных от HTTP:
http://localhost:{порт}/admin/functions/{имя_функции}
Чтобы передать тестовые данные в конечную точку функции администратора, вы должны указать данные в теле сообщения запроса POST. Тело сообщения должно иметь следующий формат JSON:
. {
"ввод": "<триггер_ввод>"
}
Значение
содержит данные в формате, ожидаемом функцией.Следующий пример cURL — это POST для функции QueueTriggerJS
. В этом случае входными данными является строка, эквивалентная ожидаемому сообщению в очереди.
curl --request POST -H "Content-Type:application/json" --data '{"input":"образец данных очереди"}' http://localhost:7071/admin/functions/QueueTrigger
curl --request POST -H "Content-Type:application/json" --data "{'input':'пример данных очереди'}" http://localhost:7071/admin/functions/QueueTrigger
При вызове конечной точки администратора в приложении-функции в Azure необходимо предоставить ключ доступа.Дополнительные сведения см. в разделе Клавиши доступа к функциям.
Публикация в Azure
Основные инструменты функций Azure поддерживают два типа развертывания:
Тип развертывания | Команда | Описание |
---|---|---|
Файлы проекта | func azure functionapp опубликовать |
Развертывает файлы проекта функции непосредственно в приложение-функцию, используя развертывание в формате zip. |
Кластер Kubernetes | функция развертывания кубернетов |
Развертывает приложение-функцию Linux в качестве пользовательского контейнера Docker в кластере Kubernetes. |
Перед публикацией
Папка проекта может содержать файлы и каталоги, зависящие от языка, которые не следует публиковать. Исключенные элементы перечислены в файле .funcignore в корневой папке проекта.
В подписке Azure должно быть уже создано приложение-функция, в котором вы развернете свой код. Проекты, требующие компиляции, должны быть построены так, чтобы можно было развернуть двоичные файлы.
Чтобы узнать, как создать приложение-функцию из командной строки или окна терминала с помощью Azure CLI или Azure PowerShell, см. раздел Создание приложения-функции для бессерверного выполнения.
Важно
Когда вы создаете приложение-функцию на портале Azure, оно по умолчанию использует версию 3.x среды выполнения функции. Чтобы заставить приложение-функцию использовать версию 1.x среды выполнения, следуйте инструкциям в разделе Запуск в версии 1.x. Вы не можете изменить версию среды выполнения для приложения-функции, которое имеет существующие функции.
Развернуть файлы проекта
Чтобы опубликовать локальный код в приложении-функции в Azure, используйте команду publish
:
func azure functionapp опубликовать
К такому типу развертывания относятся следующие соображения:
-
Публикация перезаписывает существующие файлы в приложении-функции.
-
Используйте параметр
--publish-local-settings
для автоматического создания параметров приложения в приложении-функции на основе значений в файле local.settings.json. -
Выполняется удаленная сборка скомпилированных проектов. Это можно контролировать с помощью параметра
--no-build
. -
Ваш проект развернут таким образом, что он запускается из пакета развертывания. Чтобы отключить этот рекомендуемый режим развертывания, используйте параметр
--nozip
. -
Java использует Maven для публикации локального проекта в Azure. Вместо этого используйте следующую команду для публикации в Azure:
mvn azure-functions:deploy
. Ресурсы Azure создаются во время первоначального развертывания. -
Вы получите сообщение об ошибке, если попытаетесь опубликовать
Кластер Kubernetes
Functions также позволяет определить проект Functions для запуска в контейнере Docker.Используйте параметр --docker
команды func init
, чтобы сгенерировать Dockerfile для вашего конкретного языка. Затем этот файл используется при создании контейнера для развертывания. Чтобы узнать, как опубликовать пользовательский контейнер в Azure без Kubernetes, см. раздел Создание функции в Linux с помощью пользовательского контейнера.
Core Tools можно использовать для развертывания проекта в виде пользовательского образа контейнера в кластере Kubernetes.
Следующая команда использует Dockerfile для создания контейнера и его развертывания в кластере Kubernetes.
func kubernetes deploy --name --registry
Дополнительные сведения см. в разделе Развертывание приложения-функции в Kubernetes.
Функции контроля
Рекомендуемый способ отслеживания выполнения ваших функций — интеграция с Azure Application Insights. Вы также можете передавать журналы выполнения на локальный компьютер. Дополнительные сведения см. в статье Мониторинг функций Azure.
Интеграция Application Insights
Интеграция Application Insights должна быть включена при создании приложения-функции в Azure.Если по какой-то причине ваше приложение-функция не подключено к экземпляру Application Insights, эту интеграцию легко выполнить на портале Azure. Дополнительные сведения см. в статье Включение интеграции Application Insights.
Включить журналы потоковой передачи
Вы можете просмотреть поток файлов журналов, созданных вашими функциями, в сеансе командной строки на локальном компьютере.
Встроенная потоковая передача журнала
Используйте команду func azure functionapp logstream
, чтобы начать получать журналы потоковой передачи определенного приложения-функции, работающего в Azure, как показано в следующем примере:
поток журнала func azure functionapp
Примечание
Встроенная потоковая передача журналов еще не включена в Core Tools для приложений-функций, работающих в Linux в плане потребления.Вместо этого для этих планов хостинга вам нужно использовать Live Metrics Stream для просмотра журналов в режиме, близком к реальному времени.
Поток показателей в реальном времени
Вы можете просмотреть поток Live Metrics для приложения-функции в новом окне браузера, включив параметр --browser
, как в следующем примере:
поток журнала func azure functionapp --browser
Для этого типа журналов потоковой передачи требуется, чтобы для приложения-функции была включена интеграция Application Insights.
Следующие шаги
Узнайте, как разрабатывать, тестировать и публиковать функции Azure с помощью основных инструментов Azure Functions, обучающий модуль Microsoft.
Базовые инструменты Функций Azure имеют открытый исходный код и размещаются на GitHub.
Чтобы отправить запрос об ошибке или функцию, откройте проблему GitHub.
Создание собственных хуков — React
Хуки — новое дополнение в React 16.8. Они позволяют вам использовать состояние и другие функции React без написания класса.
Создание собственных хуков позволяет извлекать логику компонентов в многократно используемые функции.
Когда мы узнали об использовании хука эффектов, мы увидели этот компонент в приложении чата, которое отображает сообщение, указывающее, находится ли друг в сети или в автономном режиме:
import React, {useState, useEffect} из 'реагировать';
функция FriendStatus (реквизит) {
const [isOnline, setIsOnline] = useState (null); useEffect(() => { function handleStatusChange(status) { setIsOnline(status.isOnline); } ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange); return () => { ChatAPI.unsubscribeFromFriendStatus (реквизиты.friend.id, handleStatusChange); }; });
если (isOnline === ноль) {
вернуть 'Загрузка...';
}
вернуть онлайн ? «В сети»: «Офлайн»;
}
Теперь предположим, что в нашем чат-приложении также есть список контактов, и мы хотим отобразить имена онлайн-пользователей зеленым цветом. Мы могли бы скопировать и вставить аналогичную логику выше в наш компонент FriendListItem
, но это было бы не идеально:
import React, {useState, useEffect} из 'реагировать';
функция FriendListItem (реквизит) {
const [isOnline, setIsOnline] = useState (null); useEffect(() => { function handleStatusChange(status) { setIsOnline(status.В сети); } ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange); return () => { ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange); }; });
вернуть (
{реквизит.друг.имя}
);
}
Вместо этого мы хотели бы разделить эту логику между FriendStatus
и FriendListItem
.
Традиционно в React у нас было два популярных способа совместного использования логики с отслеживанием состояния между компонентами: реквизиты рендеринга и компоненты более высокого порядка.Теперь мы рассмотрим, как хуки решают многие из тех же проблем, не заставляя вас добавлять дополнительные компоненты в дерево.
Когда мы хотим разделить логику между двумя функциями JavaScript, мы извлекаем ее в третью функцию. И компоненты, и хуки являются функциями, так что это работает и для них!
Пользовательский хук — это функция JavaScript, имя которой начинается с « использовать
», и которая может вызывать другие хуки. Например, useFriendStatus
ниже — это наш первый пользовательский хук:
импорт {useState, useEffect} из «реагировать»;
function useFriendStatus (friendID) { const [isOnline, setIsOnline] = useState (null);
использоватьЭффект(() => {
функция handleStatusChange (статус) {
установитьIsOnline(статус.В сети);
}
ChatAPI.subscribeToFriendStatus (идентификатор друга, handleStatusChange);
возврат () => {
ChatAPI.unsubscribeFromFriendStatus(friendID, handleStatusChange);
};
});
возврат онлайн;
}
Ничего нового внутри нет — логика скопирована с компонентов выше. Как и в компоненте, убедитесь, что другие хуки вызываются безоговорочно только на верхнем уровне вашего пользовательского хука.
В отличие от компонента React, пользовательский хук не требует специальной подписи.Мы можем решить, что он принимает в качестве аргументов и что он должен возвращать. Другими словами, это обычная функция. Его имя всегда должно начинаться с , используйте
, чтобы сразу понять, что к нему применяются правила хуков.
Цель нашего хука useFriendStatus
— подписать нас на статус друга. Вот почему он принимает friendID
в качестве аргумента и возвращает, находится ли этот друг в сети:
функция useFriendStatus(friendID) {
const [isOnline, setIsOnline] = useState (null);
возврат онлайн;
}
Теперь давайте посмотрим, как мы можем использовать наш пользовательский хук.
Использование специального крючка
Вначале нашей заявленной целью было удаление дублированной логики из компонентов FriendStatus
и FriendListItem
. Оба они хотят знать, находится ли друг в сети.
Теперь, когда мы извлекли эту логику в хук useFriendStatus
, мы можем просто использовать его:
функция FriendStatus(реквизит) {
const isOnline = useFriendStatus (props.friend.id);
если (isOnline === ноль) {
вернуть 'Загрузка...';
}
вернуть онлайн ? «В сети»: «Офлайн»;
}
функция FriendListItem(реквизит) {
const isOnline = useFriendStatus (props.friend.id);
вернуть (
{реквизит.друг.имя}
);
}
Эквивалентен ли этот код исходным примерам? Да, работает точно так же. Если вы внимательно посмотрите, то заметите, что мы не вносили никаких изменений в поведение. Все, что мы сделали, это извлекли некоторый общий код между двумя функциями в отдельную функцию. Пользовательские хуки — это соглашение, которое естественным образом следует из дизайна хуков, а не функции React.
Должен ли я называть свои пользовательские хуки, начинающиеся с « использовать
»? Пожалуйста. Эта конвенция очень важна. Без него мы не смогли бы автоматически проверять наличие нарушений правил хуков, потому что мы не могли бы сказать, содержит ли определенная функция вызовы хуков внутри себя.
Два компонента, использующие один и тот же хук, имеют общее состояние? №Пользовательские хуки — это механизм повторного использования логики с отслеживанием состояния (например, настройка подписки и запоминание текущего значения), но каждый раз, когда вы используете пользовательский хук, все состояние и эффекты внутри него полностью изолированы.
Как пользовательский хук становится изолированным? Каждый вызов к хуку становится изолированным. Поскольку мы напрямую вызываем useFriendStatus
, с точки зрения React наш компонент просто вызывает useState
и useEffect
.И как мы узнали ранее, мы можем вызывать useState
и useEffect
много раз в одном компоненте, и они будут совершенно независимы.
Совет: передача информации между хуками
Так как хуки являются функциями, мы можем передавать информацию между ними.
Чтобы проиллюстрировать это, мы будем использовать другой компонент из нашего гипотетического примера чата. Это средство выбора получателей сообщений чата, которое показывает, находится ли текущий выбранный друг в сети:
константный список друзей = [
{идентификатор: 1, имя: "Фиби"},
{id: 2, имя: 'Рэйчел'},
{id: 3, имя: 'Росс'},
];
функция ChatRecipientPicker() {
const [recipientID, setRecipientID] = useState(1); const isRecipientOnline = useFriendStatus (recipientID);
вернуть (
<>
<Круговой цвет={isRecipientOnline ? 'зеленый' : 'красный'} /> <выбрать
значение = {идентификатор получателя}
onChange={e => setRecipientID(Число(e.целевое значение))}
>
{friendList.map (друг => (
Мы сохраняем текущий выбранный идентификатор друга в переменной состояния ReceiverID
и обновляем его, если пользователь выбирает другого друга в средстве выбора
.
Поскольку вызов перехватчика useState
дает нам самое последнее значение переменной состояния ReceiverID
, мы можем передать его нашему пользовательскому перехватчику useFriendStatus
в качестве аргумента:
const [recipientID, setRecipientID] = useState(1);
const isRecipientOnline = useFriendStatus (recipientID);
Это позволяет нам узнать, находится ли выбранный в данный момент друг в сети.Если мы выберем другого друга и обновим переменную состояния ReceiverID
, наш хук useFriendStatus
отпишется от ранее выбранного друга и подпишется на статус вновь выбранного.
использоватьВашеВоображение()
Пользовательские хуки предлагают гибкость совместного использования логики, которая раньше была невозможна в компонентах React. Вы можете написать собственные хуки, которые охватывают широкий спектр вариантов использования, таких как обработка форм, анимация, декларативные подписки, таймеры и, возможно, многие другие, которые мы не рассматривали.Более того, вы можете создавать хуки, которые так же просты в использовании, как и встроенные функции React.
Старайтесь не добавлять абстракцию слишком рано. Теперь, когда функциональные компоненты могут делать больше, вполне вероятно, что средний функциональный компонент в вашей кодовой базе станет длиннее. Это нормально — не думайте, что вам нужно сразу разбивать на хуки. Но мы также рекомендуем вам начать замечать случаи, когда пользовательский хук может скрыть сложную логику за простым интерфейсом или помочь распутать запутанный компонент.
Например, у вас есть сложный компонент, который содержит множество локальных состояний, управляемых специальным образом. useState
не упрощает централизацию логики обновления, поэтому вы можете написать его как редуктор Redux:
функция todosReducer(состояние, действие) {
переключатель (действие.тип) {
случай «добавить»:
вернуть [...состояние, {
текст: действие.текст,
завершено: ложь
}];
По умолчанию:
возвращаемое состояние;
}
}
Редюсеры очень удобно тестировать изолированно и масштабировать для выражения сложной логики обновления.При необходимости вы можете разбить их на более мелкие редукторы. Однако вы также можете воспользоваться преимуществами использования локального состояния React или не захотеть устанавливать другую библиотеку.
А что, если бы мы могли написать хук useReducer
, который позволяет нам управлять локальным состоянием нашего компонента с помощью редюсера? Упрощенная версия может выглядеть так:
функция useReducer (редуктор, InitialState) {
const [состояние, setState] = useState (initialState);
диспетчеризация функции (действие) {
const nextState = редуктор (состояние, действие);
установить состояние (следующее состояние);
}
возврат [состояние, отправка];
}
Теперь мы можем использовать его в нашем компоненте и позволить редюсеру управлять своим состоянием:
функция Todos() {
const [todos, dispatch] = useReducer(todosReducer, []);
функция handleAddClick(текст) {
диспетчеризация ({ тип: 'добавить', текст });
}
}
Необходимость управлять локальным состоянием с помощью редуктора в сложном компоненте достаточно распространена, поэтому мы встроили хук useReducer
прямо в React.Вы найдете его вместе с другими встроенными хуками в справочнике API хуков.
Создание пользовательской функции (UDF) в Excel VBA [Полное руководство]
С помощью VBA вы можете создать пользовательскую функцию (также называемую пользовательской функцией), которую можно использовать на листах так же, как и обычные функции.
Это полезно, когда существующих функций Excel недостаточно. В таких случаях вы можете создать свою собственную определяемую пользователем функцию (UDF) для удовлетворения ваших конкретных потребностей.
В этом руководстве я расскажу все о создании и использовании пользовательских функций в VBA.
Если вы заинтересованы в простом изучении VBA, ознакомьтесь с моим курсом Online Excel VBA Training .
Что такое функциональная процедура в VBA?
Функциональная процедура — это код VBA, который выполняет вычисления и возвращает значение (или массив значений).
С помощью процедуры «Функция» вы можете создать функцию, которую можно использовать на листе (как и любую обычную функцию Excel, такую как СУММ или ВПР).
Когда вы создали процедуру Function с помощью VBA, вы можете использовать ее тремя способами:
- Как формулу на листе, где она может принимать аргументы в качестве входных данных и возвращать значение или массив значений.
- Как часть кода подпрограммы VBA или другого функционального кода.
- В условном форматировании.
Хотя на листе уже доступно более 450 встроенных функций Excel, вам может понадобиться пользовательская функция, если:
- Встроенные функции не могут делать то, что вы хотите.В этом случае вы можете создать пользовательскую функцию на основе ваших требований.
- Встроенные функции могут выполнить работу, но формула длинная и сложная. В этом случае вы можете создать пользовательскую функцию, которую легко читать и использовать.
Обратите внимание, что пользовательские функции, созданные с помощью VBA, могут работать значительно медленнее, чем встроенные функции. Следовательно, они лучше всего подходят для ситуаций, когда вы не можете получить результат, используя встроенные функции.
Функция по сравнению сПодпрограмма в VBA
«Подпрограмма» позволяет выполнять набор кода, в то время как «Функция» возвращает значение (или массив значений).
Чтобы дать вам пример, если у вас есть список чисел (как положительных, так и отрицательных) и вы хотите идентифицировать отрицательные числа, вот что вы можете сделать с функцией и подпрограммой.
Подпрограмма может перебирать каждую ячейку в диапазоне и выделять все ячейки, в которых есть отрицательное значение. В этом случае подпрограмма изменяет свойства объекта диапазона (путем изменения цвета ячеек).
С пользовательской функцией вы можете использовать ее в отдельном столбце, и она может возвращать ИСТИНА, если значение в ячейке отрицательное, и ЛОЖЬ, если оно положительное. С помощью функции вы не можете изменить свойства объекта. Это означает, что вы не можете изменить цвет ячейки с помощью самой функции (однако вы можете сделать это с помощью условного форматирования с пользовательской функцией).
Когда вы создаете определяемую пользователем функцию (UDF) с помощью VBA, вы можете использовать эту функцию на листе так же, как и любую другую функцию.Подробнее об этом я расскажу в разделе «Различные способы использования определяемой пользователем функции в Excel».
Создание простой пользовательской функции в VBA
Позвольте мне создать простую пользовательскую функцию в VBA и показать вам, как она работает.
Приведенный ниже код создает функцию, которая извлекает числовые части из буквенно-цифровой строки.
Функция GetNumeric(CellRef As String) as Long Dim StringLength как целое число StringLength = Len(CellRef) Для i = 1 до StringLength Если IsNumeric(Mid(CellRef, i, 1)) Then Result = Result & Mid(CellRef, i, 1) Далее я ПолучитьЧисло = Результат End Function
Если в модуле есть приведенный выше код, вы можете использовать эту функцию в рабочей книге.
Ниже показано, как эту функцию — GetNumeric — можно использовать в Excel.
Теперь, прежде чем я расскажу вам, как эта функция создается в VBA и как она работает, есть несколько вещей, которые вы должны знать:
- Когда вы создаете функцию в VBA, она становится доступной во всей книге, как и любая другая штатная функция.
- Когда вы вводите имя функции, за которым следует знак равенства, Excel покажет вам имя функции в списке соответствующих функций.В приведенном выше примере, когда я ввел =Get, Excel показал мне список с моей пользовательской функцией.
Я считаю, что это хороший пример, когда вы можете использовать VBA для создания простой в использовании функции в Excel. Вы можете сделать то же самое и с формулой (как показано в этом уроке), но это становится сложным и трудным для понимания. С этой UDF вам нужно передать только один аргумент, и вы получите результат.
Анатомия определяемой пользователем функции в VBA
В предыдущем разделе я дал вам код и показал, как функция UDF работает на листе.
Теперь давайте углубимся и посмотрим, как создается эта функция. Вам необходимо поместить приведенный ниже код в модуль в редакторе VB. Я освещаю эту тему в разделе «Где поместить код VBA для определяемой пользователем функции».
Функция GetNumeric(CellRef As String) as Long 'Эта функция извлекает числовую часть из строки Dim StringLength как целое число StringLength = Len(CellRef) Для i = 1 до StringLength Если IsNumeric(Mid(CellRef, i, 1)) Then Result = Result & Mid(CellRef, i, 1) Далее я ПолучитьЧисло = Результат End Function
Первая строка кода начинается со слова – Function.
Это слово сообщает VBA, что наш код является функцией (а не подпрограммой). За словом Function следует имя функции — GetNumeric. Это имя, которое мы будем использовать на листе для использования этой функции.
- В имени функции не должно быть пробелов. Кроме того, вы не можете назвать функцию, если она конфликтует с именем ссылки на ячейку. Например, вы не можете назвать функцию ABC123, поскольку она также относится к ячейке на листе Excel.
- Вы не должны давать вашей функции то же имя, что и у существующей функции.Если вы сделаете это, Excel отдаст предпочтение встроенной функции.
- Вы можете использовать подчеркивание, если хотите разделить слова. Например, Get_Numeric — приемлемое имя.
За именем функции в скобках следуют некоторые аргументы. Это аргументы, которые потребуются нашей функции от пользователя. Это точно такие же аргументы, которые нам нужно предоставить встроенным функциям Excel. Например, в функции СЧЁТЕСЛИ есть два аргумента (диапазон и критерий)
В скобках необходимо указать аргументы.
В нашем примере аргумент всего один — CellRef.
Также рекомендуется указать, какой аргумент ожидает функция. В этом примере, поскольку мы будем передавать функции ссылку на ячейку, мы можем указать аргумент как тип «Диапазон». Если вы не укажете тип данных, VBA будет рассматривать его как вариант (это означает, что вы можете использовать любой тип данных).
Если у вас несколько аргументов, вы можете указать их в одних и тех же скобках, разделив их запятой.Позже в этом руководстве мы увидим, как использовать несколько аргументов в определяемой пользователем функции.
Обратите внимание, что функция указана как тип данных «String». Это сообщит VBA, что результат формулы будет иметь тип данных String.
Хотя здесь можно использовать числовой тип данных (например, Long или Double), это ограничит диапазон возвращаемых чисел. Если у меня есть длинная строка из 20 чисел, которую мне нужно извлечь из общей строки, объявление функции как Long или Double приведет к ошибке (поскольку число будет вне допустимого диапазона).Следовательно, я сохранил тип выходных данных функции как String.
Вторая строка кода, выделенная зеленым цветом и начинающаяся с апострофа, представляет собой комментарий. При чтении кода VBA игнорирует эту строку. Вы можете использовать это, чтобы добавить описание или подробности о коде.
Третья строка кода объявляет переменную StringLength как целочисленный тип данных. Это переменная, в которой мы храним значение длины строки, анализируемой формулой.
Четвертая строка объявляет переменную Result как тип данных String. Это переменная, в которой мы будем извлекать числа из буквенно-цифровой строки.
Пятая строка присваивает длину строки во входном аргументе переменной ‘StringLength’. Обратите внимание, что «CellRef» относится к аргументу, который будет указан пользователем при использовании формулы на листе (или при использовании ее в VBA, что мы увидим позже в этом руководстве).
Шестая, седьмая и восьмая строки являются частью цикла For Next.Цикл выполняется столько раз, сколько символов присутствует во входном аргументе. Это число задается функцией LEN и присваивается переменной «StringLength».
Таким образом, цикл выполняется от «1 до длины строки».
В цикле оператор IF анализирует каждый символ строки и, если он числовой, добавляет этот числовой символ в переменную Result. Для этого используется функция MID в VBA.
Вторая последняя строка кода присваивает значение результата функции.Именно эта строка кода гарантирует, что функция возвращает значение «Результат» обратно в ячейку (откуда она вызывается).
Последняя строка кода — End Function. Это обязательная строка кода, которая сообщает VBA, что здесь заканчивается код функции.
Приведенный выше код объясняет различные части типичной пользовательской функции, созданной в VBA. В следующих разделах мы подробно рассмотрим эти элементы, а также рассмотрим различные способы выполнения функции VBA в Excel.
Аргументы в определяемой пользователем функции в VBA
В приведенных выше примерах, где мы создали определяемую пользователем функцию для получения числовой части из буквенно-цифровой строки (GetNumeric), эта функция рассчитана на прием одного единственного аргумента.
В этом разделе я расскажу, как создавать функции, не принимающие аргументов, и функции, принимающие несколько аргументов (как обязательных, так и необязательных аргументов).
Создание функции в VBA без каких-либо аргументов
На листе Excel у нас есть несколько функций, которые не принимают аргументов (например, RAND, TODAY, NOW).
Эти функции не зависят ни от каких входных аргументов. Например, функция СЕГОДНЯ вернет текущую дату, а функция СЛЧИС вернет случайное число от 0 до 1.
Аналогичную функцию можно создать и в VBA.
Ниже приведен код, который даст вам имя файла. Он не принимает никаких аргументов, поскольку результат, который он должен вернуть, не зависит ни от одного аргумента.
Функция WorkbookName() как строка ИмяКниги = ЭтаКнига.Имя Завершить функцию
Приведенный выше код определяет результат функции как тип данных String (поскольку результат, который нам нужен, — это имя файла, которое является строкой).
Эта функция присваивает значение ThisWorkbook.Name функции, которое возвращается, когда функция используется на листе.
Если файл был сохранен, он возвращает имя с расширением файла, в противном случае он просто дает имя.
У вышеизложенного есть одна проблема.
Если имя файла изменится, оно не будет обновляться автоматически.Обычно функция обновляется при изменении входных аргументов. Но так как в этой функции нет аргументов, функция не пересчитывает (даже если вы измените имя рабочей книги, закроете ее, а затем снова откроете).
При желании вы можете принудительно выполнить пересчет с помощью сочетания клавиш – Control + Alt + F9.
Чтобы формула пересчитывалась всякий раз, когда на листе происходит изменение, вам нужна строка кода.
Приведенный ниже код заставляет функцию пересчитывать каждый раз, когда в рабочем листе происходит изменение (точно так же, как и другие подобные функции рабочего листа, такие как функция СЕГОДНЯ или СЛЧИС).
Функция WorkbookName() как строка Application.Volatile True имя_книги = ThisWorkbook.Name Завершить функцию
Теперь, если вы измените имя рабочей книги, эта функция будет обновляться всякий раз, когда в рабочей таблице есть какие-либо изменения или когда вы снова открываете эту рабочую книгу.
Создание функции в VBA с одним аргументом
В одном из разделов выше мы уже видели, как создать функцию, которая принимает только один аргумент (рассмотренная выше функция GetNumeric).
Давайте создадим еще одну простую функцию, которая принимает только один аргумент.
Функция, созданная с помощью приведенного ниже кода, преобразует указанный текст в верхний регистр. Теперь у нас уже есть функция для этого в Excel, и эта функция просто показывает вам, как она работает. Если вам нужно это сделать, лучше использовать встроенную функцию UPPER.
Функция ConvertToUpperCase (CellRef как диапазон) ConvertToUpperCase = UCase(CellRef) End Function
Эта функция использует функцию UCase в VBA для изменения значения переменной CellRef. Затем он присваивает значение функции ConvertToUpperCase.
Поскольку эта функция принимает аргумент, нам не нужно использовать здесь часть Application.Volatile. Как только аргумент изменится, функция автоматически обновится.
Создание функции в VBA с несколькими аргументами
Так же, как и функции рабочего листа, вы можете создавать в VBA функции, которые принимают несколько аргументов.
Приведенный ниже код создаст функцию, которая будет извлекать текст перед указанным разделителем. Он принимает два аргумента — ссылку на ячейку с текстовой строкой и разделитель.
Функция GetDataBeforeDelimiter (CellRef как диапазон, разделитель как строка) как строка Затемнить результат как строку Dim DelimPosition как целое число DelimPosition = InStr(1, CellRef, Delim, vbBinaryCompare) - 1 Результат = Слева (CellRef, DelimPosition) GetDataBeforeDelimiter = Результат End Function
Если вам нужно использовать более одного аргумента в определяемой пользователем функции, вы можете указать все аргументы в круглых скобках, разделенных запятой.
Обратите внимание, что для каждого аргумента можно указать тип данных.В приведенном выше примере «CellRef» был объявлен как тип данных диапазона, а «Delim» был объявлен как тип данных String. Если вы не укажете какой-либо тип данных, VBA считает, что это вариантный тип данных.
При использовании вышеуказанной функции на листе необходимо указать ссылку на ячейку с текстом в качестве первого аргумента и символ(ы) разделителя в двойных кавычках в качестве второго аргумента.
Затем он проверяет позицию разделителя, используя функцию INSTR в VBA.Затем эта позиция используется для извлечения всех символов перед разделителем (используя функцию LEFT).
Наконец, он присваивает результат функции.
Эта формула далека от совершенства. Например, если вы введете разделитель, которого нет в тексте, это выдаст ошибку. Теперь вы можете использовать функцию ЕСЛИОШИБКА на листе, чтобы избавиться от ошибок, или вы можете использовать приведенный ниже код, который возвращает весь текст, когда он не может найти разделитель.
Функция GetDataBeforeDelimiter (CellRef как диапазон, разделитель как строка) как строка Затемнить результат как строку Dim DelimPosition как целое число DelimPosition = InStr(1, CellRef, Delim, vbBinaryCompare) - 1 Если DelimPosition < 0, тогда DelimPosition = Len(CellRef) Результат = Слева (CellRef, DelimPosition) GetDataBeforeDelimiter = Результат Завершить функцию
Мы можем дополнительно оптимизировать эту функцию.
Если вы введете текст (из которого вы хотите извлечь часть перед разделителем) непосредственно в функцию, это выдаст вам ошибку. Давай.. попробуй!
Это происходит, поскольку мы указали CellRef в качестве типа данных диапазона.
Или, если вы хотите, чтобы разделитель находился в ячейке и использовал ссылку на ячейку вместо жесткого кодирования в формуле, вы не можете сделать это с помощью приведенного выше кода. Это потому, что Delim был объявлен как строковый тип данных.
Если вы хотите, чтобы функция могла принимать прямой ввод текста или ссылки на ячейки от пользователя, вам необходимо удалить объявление типа данных.В конечном итоге это приведет к тому, что аргумент будет представлять собой вариантный тип данных, который может принимать любой тип аргумента и обрабатывать его.
Следующий код сделает это:
Функция GetDataBeforeDelimiter(CellRef, Delim) As String Затемнить результат как строку Dim DelimPosition как целое число DelimPosition = InStr(1, CellRef, Delim, vbBinaryCompare) - 1 Если DelimPosition < 0, тогда DelimPosition = Len(CellRef) Результат = Слева (CellRef, DelimPosition) GetDataBeforeDelimiter = Результат Завершить функцию
Создание функции в VBA с необязательными аргументами
В Excel есть много функций, в которых некоторые аргументы являются необязательными.
Например, легендарная функция ВПР имеет 3 обязательных аргумента и один необязательный аргумент.
Необязательный аргумент, как следует из названия, указывать необязательно. Если вы не укажете один из обязательных аргументов, ваша функция выдаст ошибку, но если вы не укажете необязательный аргумент, ваша функция будет работать.
Но необязательные аргументы не бесполезны. Они позволяют выбирать из множества вариантов.
Например, в функции ВПР, если не указать четвертый аргумент, функция ВПР выполняет приблизительный поиск, а если указать последний аргумент как ЛОЖЬ (или 0), то выполняется точное совпадение.
Помните, что необязательные аргументы всегда должны идти после всех обязательных аргументов. У вас не может быть необязательных аргументов в начале.
Теперь давайте посмотрим, как создать функцию в VBA с необязательными аргументами.
Функция только с необязательным аргументом
Насколько я знаю, нет встроенной функции, которая принимает только необязательные аргументы (тут я могу ошибаться, но я не могу придумать ни одной такой функции).
Но мы можем создать его с помощью VBA.
Ниже приведен код функции, которая выдаст вам текущую дату в формате дд-мм-гггг, если вы не введете никаких аргументов (т.е. оставьте его пустым) и в формате «дд мммм, гггг», если вы введете что-либо в качестве аргумента (т. е. что угодно, чтобы аргумент не был пустым).
Функция CurrDate (необязательный fmt как вариант) Тусклый результат Если IsMissing(fmt) Тогда CurrDate = Формат (Дата, "дд-мм-гггг") Еще CurrDate = Формат(Дата, "дд мммм, гггг") Конец, если End Function
Обратите внимание, что вышеприведенная функция использует IsMissing для проверки отсутствия аргумента. Чтобы использовать функцию IsMissing, необязательный аргумент должен иметь вариантный тип данных.
Приведенная выше функция работает независимо от того, что вы вводите в качестве аргумента. В коде мы только проверяем, указан ли необязательный аргумент или нет.
Вы можете сделать это более надежным, принимая в качестве аргументов только определенные значения и показывая ошибку в остальных случаях (как показано в приведенном ниже коде).
Функция CurrDate (необязательный fmt как вариант) Тусклый результат Если IsMissing(fmt) Тогда CurrDate = Формат (Дата, "дд-мм-гггг") ИначеЕсли fmt = 1 Тогда CurrDate = Формат(Дата, "дд мммм, гггг") Еще CurrDate = CVErr(xlErrValue) Конец, если End Function
Приведенный выше код создает функцию, которая показывает дату в формате «дд-мм-гггг», если аргумент не указан, и в формате «дд мммм, гггг», если аргумент равен 1.Во всех остальных случаях выдает ошибку.
Функция с обязательными и необязательными аргументами
Мы уже видели код, извлекающий числовую часть из строки.
Теперь давайте посмотрим на аналогичный пример, который принимает как обязательные, так и необязательные аргументы.
Приведенный ниже код создает функцию, извлекающую текстовую часть из строки. Если необязательный аргумент имеет значение ИСТИНА, он выводит результат в верхнем регистре, а если необязательный аргумент имеет значение ЛОЖЬ или опущен, он возвращает результат как есть.
Функция GetText (CellRef как диапазон, необязательный TextCase = False) как строка Dim StringLength как целое число Затемнить результат как строку StringLength = Len(CellRef) Для i = 1 до StringLength Если нет (IsNumeric(Mid(CellRef, i, 1))) Then Result = Result & Mid(CellRef, i, 1) Далее я Если TextCase = True, то Результат = UCase(Результат) ПолучитьТекст = Результат End Function
Обратите внимание, что в приведенном выше коде мы инициализировали значение «TextCase» как False (смотрите в круглых скобках в первой строке).
Сделав это, мы убедились, что необязательный аргумент начинается со значения по умолчанию, то есть FALSE. Если пользователь указывает значение как ИСТИНА, функция возвращает текст в верхнем регистре, а если пользователь указывает необязательный аргумент как ЛОЖЬ или опускает его, то возвращается текст как есть.
Создание функции в VBA с массивом в качестве аргумента
До сих пор мы видели примеры создания функции с необязательными/обязательными аргументами, где эти аргументы были одним значением.
Вы также можете создать функцию, которая может принимать массив в качестве аргумента. В функциях рабочего листа Excel есть много функций, которые принимают аргументы массива, такие как СУММ, ВПР, СУММЕСЛИ, СЧЕТЕСЛИ и т. д.
Ниже приведен код, создающий функцию, которая вычисляет сумму всех четных чисел в указанном диапазоне клетки.
Функция AddEven (CellRef как диапазон) Затемнить ячейку как диапазон Для каждой ячейки в CellRef Если Числовой(Ячейка.Значение) Тогда Если Cell.Value Mod 2 = 0 Тогда Результат = Результат + Ячейка.Стоимость Конец, если Конец, если Следующая ячейка AddEven = Результат Завершить функцию
Вы можете использовать эту функцию на листе и указать диапазон ячеек с числами в качестве аргумента. Функция вернет одно значение — сумму всех четных чисел (как показано ниже).
В приведенной выше функции вместо одного значения мы предоставили массив (A1:A10). Чтобы это работало, вам нужно убедиться, что ваш тип данных аргумента может принимать массив.
В приведенном выше коде я указал аргумент CellRef как Range (который может принимать массив в качестве входных данных).Здесь также можно использовать вариантный тип данных.
В коде есть цикл For Each, который проходит через каждую ячейку и проверяет, является ли это числом. Если это не так, ничего не происходит, и он переходит к следующей ячейке. Если это число, оно проверяет, четное оно или нет (используя функцию MOD).
В конце концов, все четные числа складываются, и сумма возвращается к функции.
Создание функции с неопределенным числом аргументов
При создании некоторых функций в VBA вы можете не знать точное количество аргументов, которые пользователь хочет предоставить.Таким образом, необходимо создать функцию, которая может принимать столько аргументов и использовать их для возврата результата.
Примером такой функции рабочего листа является функция СУММ. Вы можете передать ей несколько аргументов (например, этот):
=СУММ(A1,A2:A4,B1:B20)
Приведенная выше функция суммирует значения всех этих аргументов. Также обратите внимание, что это может быть одна ячейка или массив ячеек.
Вы можете создать такую функцию в VBA, указав последний аргумент (или он может быть единственным аргументом) как необязательный.Кроме того, этому необязательному аргументу должно предшествовать ключевое слово «ParamArray».
‘ParamArray’ — это модификатор, который позволяет вам принимать столько аргументов, сколько вы хотите. Обратите внимание, что использование слова ParamArray перед аргументом делает аргумент необязательным. Однако вам не нужно использовать здесь слово «необязательный».
Теперь давайте создадим функцию, которая может принимать произвольное количество аргументов и складывать все числа в указанных аргументах:
Функция AddArguments(ParamArray arglist() As Variant) Для каждого аргумента в списке аргументов AddArguments = AddArguments + аргумент Следующий аргумент End Function
Вышеупомянутая функция может принимать любое количество аргументов и добавлять эти аргументы для получения результата.
Обратите внимание, что в качестве аргумента можно использовать только одно значение, ссылку на ячейку, логическое значение или выражение. Вы не можете указать массив в качестве аргумента. Например, если один из ваших аргументов равен D8:D10, эта формула выдаст вам ошибку.
Если вы хотите иметь возможность использовать оба аргумента с несколькими ячейками, вам необходимо использовать следующий код:
Функция AddArguments(ParamArray arglist() As Variant) Для каждого аргумента в списке аргументов Для каждой ячейки в аргументе AddArguments = AddArguments + Cell Следующая ячейка Следующий аргумент End Function
Обратите внимание, что эта формула работает с несколькими ячейками и ссылками на массивы, однако она не может обрабатывать жестко заданные значения или выражения.Вы можете создать более надежную функцию, проверяя и обрабатывая эти условия, но здесь это не входит в наши намерения.
Цель здесь — показать вам, как работает ParamArray, чтобы вы могли разрешить неограниченное количество аргументов в функции. Если вам нужна лучшая функция, чем та, которая создана с помощью приведенного выше кода, используйте функцию СУММ на рабочем листе.
Создание функции, возвращающей массив
До сих пор мы видели функции, возвращающие одно значение.
С помощью VBA можно создать функцию, которая возвращает вариант, который может содержать весь массив значений.
Формулы массива также доступны как встроенные функции на листах Excel. Если вы знакомы с формулами массива в Excel, вы должны знать, что они вводятся с помощью клавиш Control + Shift + Enter (а не просто Enter). Подробнее о формулах массива можно прочитать здесь. Если вы не знаете о формулах массива, не волнуйтесь, продолжайте читать.
Создадим формулу, которая возвращает массив из трех чисел (1,2,3).
Приведенный ниже код сделает это.
Функция ThreeNumbers() как вариант Dim NumberValue (от 1 до 3) ЧислоЗначение(1) = 1 ЧислоЗначение(2) = 2 ЧислоЗначение(3) = 3 ThreeNumbers = числовое значение End Function
В приведенном выше коде мы указали функцию «ThreeNumbers» в качестве варианта.Это позволяет ему хранить массив значений.
Переменная «NumberValue» объявлена как массив из 3 элементов. Он содержит три значения и присваивает их функции ThreeNumbers.
Вы можете использовать эту функцию на рабочем листе, введя функцию и нажав клавишу Control + Shift + Enter (удерживая клавиши Control и Shift, нажмите Enter).
Когда вы сделаете это, он вернет 1 в ячейке, но на самом деле он содержит все три значения.Чтобы проверить это, используйте следующую формулу:
=MAX(ThreeNumbers())
Используйте приведенную выше функцию с Control + Shift + Enter. Вы заметите, что результат теперь равен 3, так как это самые большие значения в массиве, возвращаемом функцией Max, которая получает три числа в результате нашей пользовательской функции — ThreeNumbers.
Вы можете использовать тот же метод для создания функции, которая возвращает массив названий месяцев, как показано в приведенном ниже коде:
Function Months() As Variant Тусклое имя месяца (от 1 до 12) MonthName(1) = "Январь" MonthName(2) = "Февраль" MonthName(3) = "март" MonthName(4) = "Апрель" MonthName(5) = "Май" MonthName(6) = "Июнь" MonthName(7) = "Июль" MonthName(8) = "Август" MonthName(9) = "Сентябрь" MonthName(10) = "Октябрь" MonthName(11) = "Ноябрь" MonthName(12) = "Декабрь" Месяцы = Имя Месяца End Function
Теперь, когда вы вводите функцию =Months() на листе Excel и используете Control + Shift + Enter, она возвращает весь массив названий месяцев.Обратите внимание, что вы видите в ячейке только январь, так как это первое значение в массиве. Это не означает, что массив возвращает только одно значение.
Чтобы показать вам, что он возвращает все значения, сделайте это — выберите ячейку с формулой, перейдите в строку формул, выберите всю формулу и нажмите F9. Это покажет вам все значения, которые возвращает функция.
Вы можете использовать это, используя приведенную ниже формулу ИНДЕКС, чтобы получить список всех названий месяцев за один раз.
=ИНДЕКС(Месяцы(),СТРОКА())
Теперь, если у вас много значений, не рекомендуется назначать эти значения одно за другим (как мы сделали выше). Вместо этого вы можете использовать функцию Array в VBA.
Таким образом, тот же код, в котором мы создаем функцию «Месяцы», станет короче, как показано ниже:
Функция Months() As Variant Месяцы = Массив("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", _ «июль», «август», «сентябрь», «октябрь», «ноябрь», «декабрь») Завершить функцию
Приведенная выше функция использует функцию массива для присвоения значений непосредственно функции.
Обратите внимание, что все функции, созданные выше, возвращают горизонтальный массив значений. Это означает, что если вы выберете 12 горизонтальных ячеек (скажем, A1:L1) и введете формулу =Months() в ячейку A1, она даст вам все названия месяцев.
Но что, если вам нужны эти значения в вертикальном диапазоне ячеек.
Это можно сделать с помощью формулы ТРАНСП на рабочем листе.
Просто выберите 12 вертикальных ячеек (смежных) и введите приведенную ниже формулу.
Понимание области определяемой пользователем функции в Excel
Функция может иметь две области действия — Общедоступная или Частная .
- A Общедоступная область означает, что функция доступна для всех листов рабочей книги, а также для всех процедур (подпрограмм и функций) во всех модулях рабочей книги. Это полезно, когда вы хотите вызвать функцию из подпрограммы (мы увидим, как это делается в следующем разделе).
- A Частная область означает, что функция доступна только в том модуле, в котором она существует. Вы не можете использовать его в других модулях. Вы также не увидите его в списке функций на листе. Например, если имя вашей функции «Месяцы ()» и вы вводите функцию в Excel (после знака =), она не покажет вам имя функции. Однако вы все равно можете использовать его, если введете имя формулы.
Если вы ничего не укажете, функция по умолчанию является общедоступной.
Ниже приведена функция, которая является частной функцией:
Частная функция WorkbookName() As String имя_книги = ThisWorkbook.Name End Function
Вы можете использовать эту функцию в подпрограммах и процедурах в одних и тех же модулях, но не можете использовать ее в других модулях. Эта функция также не будет отображаться на листе.
Приведенный ниже код сделает эту функцию общедоступной. Он также будет отображаться на рабочем листе.
Функция WorkbookName() как строка ИмяКниги = ЭтаКнига.Имя Завершить функцию
Различные способы использования пользовательской функции в Excel
Создав пользовательскую функцию в VBA, вы можете использовать ее по-разному.
Давайте сначала рассмотрим, как использовать функции на листе.
Использование пользовательских функций на рабочих листах
Мы уже видели примеры использования функции, созданной в VBA, на рабочем листе.
Все, что вам нужно сделать, это ввести имя функции, и оно появится в intellisense.
Обратите внимание: чтобы функция отображалась на листе, она должна быть общедоступной (как описано в разделе выше).
Вы также можете использовать диалоговое окно «Вставить функцию», чтобы вставить пользовательскую функцию (используя шаги, описанные ниже). Это будет работать только для функций, которые являются общедоступными.
- Перейдите на вкладку Данные.
- Нажмите «Вставить функцию».
- В диалоговом окне "Вставить функцию" выберите категорию "Определяется пользователем".Этот параметр отображается только в том случае, если у вас есть функция в редакторе VB (и эта функция общедоступна).
- Выберите функцию из списка всех общедоступных функций, определяемых пользователем.
- Нажмите кнопку «ОК».
Вышеуказанные шаги вставят функцию на рабочий лист. Он также отображает диалоговое окно «Аргументы функции», в котором содержится подробная информация об аргументах и результате.
Пользовательскую функцию можно использовать так же, как любую другую функцию в Excel.Это также означает, что вы можете использовать его с другими встроенными функциями Excel. Например. приведенная ниже формула даст имя рабочей книги в верхнем регистре:
=ПРОПИСН(WorkbookName())
Использование пользовательских функций в процедурах и функциях VBA
Когда вы создали функцию, вы можете использовать ее в также другие подпроцедуры.
Если функция общедоступная, ее можно использовать в любой процедуре того же или другого модуля. Если это Private, его можно использовать только в том же модуле.
Ниже приведена функция, которая возвращает имя рабочей книги.
Функция WorkbookName() как строка имя_книги = ThisWorkbook.Name Завершить функцию
Приведенная ниже процедура вызывает функцию, а затем отображает имя в окне сообщения.
Sub ShowWorkbookName() MsgBox ИмяКниги End Sub
Вы также можете вызвать функцию из другой функции.
В приведенных ниже кодах первый код возвращает имя книги, а второй возвращает имя в верхнем регистре, вызывая первую функцию.
Функция WorkbookName() как строка имя_книги = ThisWorkbook.Name Завершить функцию
Функция WorkbookNameinUpper() WorkbookNameinUpper = UCase(WorkbookName) Завершить функцию
Вызов пользовательской функции из других рабочих книг
Если у вас есть функция в рабочей книге, вы можете вызывать эту функцию и в других рабочих книгах.
Это можно сделать несколькими способами:
- Создание надстройки
- Сохранение функции в личной книге макросов
- Ссылка на функцию из другой книги.
Создание надстройки
Создав и установив надстройку, пользовательская функция будет доступна во всех книгах.
Предположим, вы создали пользовательскую функцию «GetNumeric» и хотите, чтобы она была во всех рабочих книгах. Для этого создайте новую рабочую книгу и поместите код функции в модуль этой новой рабочей книги.
Теперь выполните следующие шаги, чтобы сохранить его как надстройку, а затем установить в Excel.
- Перейдите на вкладку «Файл» и нажмите «Сохранить как».
- В диалоговом окне «Сохранить как» измените тип «Сохранить как» на .xlam. Имя, которое вы присвоите файлу, будет именем вашей надстройки. В этом примере файл сохраняется с именем GetNumeric.
- Вы заметите, что путь к файлу, в котором он сохраняется, автоматически меняется. Вы можете использовать значение по умолчанию или изменить его, если хотите.
- Откройте новую книгу Excel и перейдите на вкладку «Разработчик».
- Выберите параметр Надстройки Excel.
- В диалоговом окне «Надстройки» найдите сохраненный файл и нажмите «ОК».
Надстройка активирована.
Теперь пользовательскую функцию можно использовать во всех рабочих книгах.
Сохранение функции в личной книге макросов
Личная книга макросов — это скрытая книга в вашей системе, которая открывается при каждом открытии приложения Excel.
Это место, где вы можете хранить коды макросов, а затем получать доступ к этим макросам из любой рабочей книги. Это отличное место для хранения тех макросов, которые вы хотите использовать часто.
По умолчанию в Excel нет личной книги макросов.Вам нужно создать его, записав макрос и сохранив его в личной книге макросов.
Подробные инструкции по созданию и сохранению макросов в личной книге макросов можно найти здесь.
Ссылка на функцию из другой книги
Хотя первые два метода (создание надстройки и использование личной книги макросов) будут работать во всех ситуациях, если вы хотите сослаться на функцию из другой книги, эта книга должна быть открыта .
Предположим, у вас есть рабочая книга с именем « Workbook with Formula» и функция с именем « GetNumeric» .
Чтобы использовать эту функцию в другой рабочей книге (пока открыта рабочая книга с формулой ), вы можете использовать следующую формулу:
= «Рабочая книга с формулой»! определенную функцию в рабочей книге с файлом формулы и получить результат.
Обратите внимание: поскольку имя книги содержит пробелы, его необходимо заключить в одинарные кавычки.
Использование оператора Exit Function VBA
Если вы хотите выйти из функции во время выполнения кода, вы можете сделать это с помощью оператора Exit Function.
Приведенный ниже код извлекает первые три числовых символа из буквенно-цифровой текстовой строки. Как только она получает три символа, функция завершает работу и возвращает результат.
Функция GetNumericFirstThree (CellRef As Range) As Long Dim StringLength как целое число StringLength = Len(CellRef) Для i = 1 до StringLength Если J = 3, то выход из функции Если IsNumeric(Mid(CellRef, i, 1)) Тогда Дж = Дж + 1 Результат = Результат и Середина (CellRef, i, 1) GetNumericFirstThree = Результат Конец, если Далее я End Function
Приведенная выше функция проверяет количество числовых символов, и когда она получает 3 числовых символа, она выходит из функции в следующем цикле.
Отладка пользовательской функции
Существует несколько методов, которые можно использовать при отладке пользовательской функции в VBA:
Отладка пользовательской функции с помощью окна сообщения
Используйте функцию MsgBox для отображения окна сообщения с определенным значением.
Отображаемое значение может основываться на том, что вы хотите протестировать. Например, если вы хотите проверить, выполняется ли код или нет, любое сообщение будет работать, а если вы хотите проверить, работают ли циклы или нет, вы можете отобразить определенное значение или счетчик циклов.
Отладка пользовательской функции путем установки точки останова
Установите точку останова, чтобы иметь возможность последовательно проходить каждую строку. Чтобы установить точку останова, выберите нужную строку и нажмите F9 или щелкните серую вертикальную область слева от строк кода. Любой из этих методов вставит точку останова (вы увидите красную точку в серой области).
После того, как вы установили точку останова и выполнили функцию, она идет до линии точки останова и затем останавливается.Теперь вы можете пройти код, используя клавишу F8. Однократное нажатие F8 позволяет перейти к следующей строке кода.
Отладка пользовательской функции с помощью Debug.Print в коде
Вы можете использовать оператор Debug.Print в своем коде, чтобы получить значения указанных переменных/аргументов в непосредственном окне.
Например, в приведенном ниже коде я использовал Debug.Print для получения значения двух переменных — «j» и «Result»
Функция GetNumericFirstThree (CellRef As Range) As Long Dim StringLength как целое число StringLength = Len(CellRef) Для i = 1 до StringLength Если J = 3, то выход из функции Если IsNumeric(Mid(CellRef, i, 1)) Тогда Дж = Дж + 1 Результат = Результат и Середина (CellRef, i, 1) Отлаживать.Вывести J, Результат GetNumericFirstThree = Результат Конец, если Далее я Завершить функцию
При выполнении этого кода в непосредственном окне отображается следующее.
Встроенные функции Excel vs. Функция, определяемая пользователем VBA
Существует несколько серьезных преимуществ использования встроенных функций Excel по сравнению с пользовательскими функциями, созданными в VBA.
- Встроенные функции намного быстрее, чем функции VBA.
- Когда вы создаете отчет/панель мониторинга с помощью функций VBA и отправляете его клиенту/коллеге, им не придется беспокоиться о том, включены макросы или нет.В некоторых случаях клиенты/покупатели пугаются, увидев предупреждение на желтой полосе (которое просто просит их включить макросы).
- Благодаря встроенным функциям Excel вам не нужно беспокоиться о расширениях файлов. Если в книге есть макросы или пользовательские функции, их необходимо сохранить в формате .xlsm.
Хотя есть много веских причин для использования встроенных функций Excel, в некоторых случаях лучше использовать функцию, определяемую пользователем.
- Лучше использовать пользовательскую функцию, если встроенная формула большая и сложная.Это становится еще более актуальным, когда вам нужен кто-то еще, чтобы обновить формулы. Например, если у вас есть огромная формула, состоящая из множества различных функций, даже изменение ссылки на ячейку может быть утомительным и подверженным ошибкам. Вместо этого вы можете создать пользовательскую функцию, которая принимает только один или два аргумента и выполняет всю тяжелую работу с серверной частью.
- Когда вам нужно сделать что-то, что нельзя сделать с помощью встроенных функций Excel. Примером этого может быть, когда вы хотите извлечь все числовые символы из строки.В таких случаях преимущества использования определяемой пользователем функции gar перевешивают ее недостатки.
Куда поместить код VBA для определяемой пользователем функции
При создании пользовательской функции необходимо поместить код в окно кода рабочей книги, в которой вы хотите использовать эту функцию.
Ниже приведены шаги по размещению кода функции «GetNumeric» в рабочей книге.
- Перейдите на вкладку Разработчик.
- Выберите опцию Visual Basic. Это откроет редактор VB в бэкэнде.
- В панели Project Explorer редактора VB щелкните правой кнопкой мыши любой объект рабочей книги, в которую вы хотите вставить код. Если вы не видите Project Explorer, перейдите на вкладку View и нажмите Project Explorer.
- Перейдите в раздел «Вставка» и нажмите «Модуль». Это вставит объект модуля для вашей книги.
- Скопируйте и вставьте код в окно модуля.
Вам также могут понравиться следующие учебные пособия по Excel VBA:
Google Sheets 101: Руководство для начинающих
Google Sheets — это приложение для работы с электронными таблицами на стероидах.Он выглядит и работает так же, как любой другой инструмент для работы с электронными таблицами, но, поскольку это онлайн-приложение, он предлагает гораздо больше, чем большинство инструментов для работы с электронными таблицами. Вот некоторые вещи, которые делают его намного лучше:
-
Это веб-таблица, которую вы можете использовать где угодно — больше не нужно забывать о файлах электронных таблиц дома.
-
Он работает с любого устройства, с мобильными приложениями для iOS и Android, а также с основным веб-приложением.
-
Google Sheets — это бесплатно , и он связан с Google Диском, Документами и Презентациями для обмена файлами, документами и презентациями в Интернете.
-
Он включает в себя почти все те же функции работы с электронными таблицами — если вы знаете, как использовать Excel, вы будете чувствовать себя в Google Sheets как дома.
-
Вы можете загружать дополнения, создавать свои собственные и писать собственный код.
-
Это онлайн, так что вы можете автоматически собирать данные с вашей электронной таблицы и делать практически все, что хотите, даже когда ваша электронная таблица не открыта.
Независимо от того, являетесь ли вы новичком в работе с электронными таблицами или ветераном Excel, который ищет лучший способ совместной работы, эта книга поможет вам максимально эффективно использовать Google Таблицы.В этой главе мы начнем с основ, а затем продолжим чтение, чтобы изучить расширенные функции Google Sheets, найти лучшие дополнения и научиться создавать свои собственные.
Начало работы с Google Sheets
Лучший способ изучить такой инструмент, как Таблицы, — это сразу погрузиться в него. В этой главе вы узнаете, как:
-
Создать электронную таблицу и заполнить ее данными
-
Форматирование данных для удобного просмотра
-
Добавление, усреднение и фильтрация данных с помощью формул
-
Совместное использование, защита и перемещение данных
Общие термины для работы с электронными таблицами
терминология, чтобы помочь вам понять это термины, которые мы будем использовать:
-
Ячейка : отдельная точка данных или элемент в электронной таблице.
-
Столбец : Вертикальный набор ячеек.
-
Строка : Горизонтальный набор ячеек.
-
Диапазон : Выбор ячеек, охватывающих строку, столбец или и то, и другое.
-
Функция : встроенная операция из приложения для работы с электронными таблицами, которую можно использовать для вычисления значений ячеек, строк, столбцов или диапазонов, управления данными и многого другого.
-
Формула : Комбинация функций, ячеек, строк, столбцов и диапазонов, используемая для получения определенного результата.
-
Рабочий лист (лист) : Именованные наборы строк и столбцов, составляющие вашу электронную таблицу; в одной таблице может быть несколько листов
-
Таблица : весь документ, содержащий ваши таблицы
из руководства Google по началу работы с таблицами. Вы также можете добавить в закладки список функций электронной таблицы Google в качестве быстрого справочника.
Имея в руках эти знания, давайте приступим к созданию собственных электронных таблиц.
1. Создайте электронную таблицу и заполните ее данными
Преимущество Google Таблиц в том, что они бесплатны и работают на любом устройстве, что позволяет легко следовать инструкциям из этой книги. Все, что вам нужно, — это веб-браузер (или приложение Google Sheets на вашем устройстве iOS или Android) и бесплатная учетная запись Google. На компьютере Mac или ПК перейдите на страницу Sheets.google.com, и вы готовы приступить к работе.
Существует 3 способа создания новой электронной таблицы в Google Sheets:
-
Нажмите красную кнопку «НОВАЯ» на панели управления Google Диска и выберите «Google Sheets»
-
Откройте меню из электронной таблицы и выберите «Файл > Новая таблица»
-
Нажмите «Пустой» или выберите шаблон на главной странице Google Sheets
Это создаст новую пустую таблицу (или предварительно заполненный шаблон, если вы выберете один из них).Однако для этого урока вы должны начать с пустой электронной таблицы.
Интерфейс Google Sheets должен напомнить вам по крайней мере еще одно приложение для работы с электронными таблицами, которое вы видели раньше, со знакомыми значками редактирования текста и вкладками для дополнительных листов.
Разница лишь в том, что Google уменьшил беспорядок и количество отображаемых элементов интерфейса. Итак, ваша первая задача должна быть очевидной: добавьте данные!
Добавление данных в электронную таблицу
Посмотрите на бело-серую сетку, занимающую большую часть экрана, и первое, что вы заметите, — это синий контур вокруг выбранной ячейки или ячеек.
Как только вы откроете новую электронную таблицу, если вы только начнете печатать, вы увидите, что ваши данные сразу же начинают заполнять выбранную ячейку — обычно верхнюю левую ячейку. Нет необходимости дважды щелкать ячейки, когда вы добавляете информацию, и не нужно использовать мышь.
Отдельный квадрат в электронной таблице называется ячейкой ; они организованы в строки и столбцы с числовыми и буквенными идентификаторами соответственно. Каждая ячейка должна содержать одно значение, слово или фрагмент данных.
Не стесняйтесь выбирать любую ячейку, а затем введите что-нибудь. Когда вы закончите вводить данные в ячейку, вы можете сделать одно из 4-х действий:
-
Нажмите ENTER для сохранения данные и перейдите к началу следующей строки
-
Нажмите TAB , чтобы сохранить данные и переместить вправо в той же строке
-
Используйте клавиатуру вверх, вниз, влево и вправо) до переместиться на 1 ячейку в этом направлении
-
Щелкните любую ячейку , чтобы перейти прямо к этой ячейке
Если вы не хотите вводить все вручную , вы также можете добавлять данные в свой лист в массовом порядке несколькими различными способами:
-
Скопировать и вставить список текста или чисел в вашу электронную таблицу
-
Скопировать и вставить HTML-таблицу с веб-сайта
-
Импорт существующей электронной таблицы в csv, xls, xlsx и других форматах
-
Скопируйте любое значение в ячейке из диапазона ячеек с помощью щелчка и перетаскивания
объяснительно, но бывают случаи, когда вы пытаетесь скопировать набор данных «электронной таблицы» с веб-сайта или PDF-файла, и он просто вставляется в одну ячейку или форматирует все с исходным стилем.Попробуйте поискать данные, которые на самом деле находятся в таблице HTML (например, данные о фильмах из IMDB), чтобы избежать вставленных данных в электронную таблицу.
Примечание: Перед вставкой данных убедитесь, что вы нажимаете на ячейку только один раз, чтобы Google Таблицы превратили ее в список, в котором каждый элемент находится в отдельной ячейке. Если вы дважды щелкните ячейку, Google Sheets вставит все данные в одну ячейку , что, вероятно, не то, что вам нужно.
Если в итоге вы получите данные в странном формате, не беспокойтесь: мы исправим это в следующем разделе!
Импорт файла также прост.Вы можете импортировать непосредственно в текущую электронную таблицу, создать новую электронную таблицу или заменить лист (то есть отдельную вкладку) импортированными данными.
Чаще всего импортируются файлы CSV (значения, разделенные запятыми) или XLS и XLSX (файлы из Microsoft Excel). Чтобы импортировать файл из-за пределов вашего Google Диска, перейдите в меню ФАЙЛ > ИМПОРТ > ЗАГРУЗИТЬ .
Я предпочитаю каждый раз импортировать данные на новый лист, чтобы разделять старые и новые импортированные данные.В качестве альтернативы, если у вас есть Google Sheet (или CSV, XLS или другой файл электронной таблицы), сохраненный в вашей учетной записи Google Диска, вы можете импортировать его непосредственно в свою электронную таблицу, используя тот же процесс — просто выполните поиск на Диске из окна импорта.
Перетаскивание для копирования значения ячейки нуждается в небольшом объяснении, потому что вы будете часто использовать это после того, как настроите формулы в своих электронных таблицах.
Перетаскивая маленькую синюю точку (на рисунке ниже) в правом нижнем углу выделенной ячейки через диапазон ячеек или вниз, вы можете выполнять ряд различных функций.
Существует несколько способов использования этой функции:
-
Копирование данных ячейки в несколько соседних ячеек (включая форматирование)
-
Копирование «Формулы» ячейки в соседние ячейки (это
-
Создание упорядоченного списка текстовых данных
Вот пример того, как может работать упорядоченный список: Попробуйте добавить текст Участник 1
в ячейку A1, затем щелкните и перетащите маленькую синюю точку в правом нижнем углу выделенной ячейки вниз или через любое количество соседних ячеек.
Если после Участник
не было номера, это действие перетаскивания просто скопирует «Участник» во все ячейки, которые вы перетаскиваете. Но поскольку число есть, Таблицы знают, что нужно увеличить следующую ячейку на +1.
Предположим, вы скопировали, вставили, импортировали или ввели большой объем данных, и ваша электронная таблица выглядит вполне исправно.
Теперь, как мы можем использовать эти данные?
2. Форматирование данных для удобства просмотра
Независимо от того, отслеживаете ли вы расходы, записываете оценки учащихся или отслеживаете клиентов в самодельной CRM (мы создадим ее в главе 3), вам понадобится обрабатывать и форматировать ваши данные.
Основные параметры форматирования в Google Таблицах доступны над первой ячейкой. Они помечены на изображении ниже, но для быстрого ознакомления во время работы с листом просто наведите указатель мыши на значок, чтобы увидеть его описание и сочетание клавиш.
Print, Undo/Redo и Font Settings/Styling функционируют аналогично тому, что вы ожидаете от своего любимого текстового процессора. Клавиши быстрого доступа такие же, так что просто относитесь к этому как к редактированию любого другого документа!
Что касается всего остального, то лучший способ показать вам, как все работает, — это погрузиться прямо в пример.
Я собираюсь создать краткий список возможных вариантов завтрака на завтрашнее утро, вместе с их ингредиентами, количеством, ценами и ссылками на видео на YouTube о том, как их приготовить (кто знал, что вы можете сделать 3-минутное видео о яичница-болтунья?).
Он достаточно функционален, чтобы вы могли легко использовать этот очень для отслеживания информации. На самом деле, подавляющее большинство моих собственных электронных таблиц выглядят так: Google Таблицы позволяют настолько просто собирать информацию, делиться ею и возвращаться к ней позже для справки, что она действует как мой хорошо структурированный инструмент для ведения заметок.
Но давайте предположим, что вам приходится иметь дело с десятками электронных таблиц в день (или, что еще хуже, вам приходится обмениваться электронными таблицами туда и обратно), и это то, что кто-то вам отправляет. Это действительно скучно, и если бы это был большой набор данных, было бы болезненно просматривать.
В приведенном выше простом примере отсутствие значительного форматирования допустимо. Он выполняет основные функции, сохраняя мою информацию и позволяя мне сохранять ее. Но это не то, к чему я хотел бы возвращаться каждый день.
Так как я завтракаю каждое утро, давайте немного отформатируем эту электронную таблицу и сделаем ее более удобной для пользователя!
Сначала мы "заморозим" первую строку на месте. Это означает, что если мы прокрутим электронную таблицу вниз, первая строка все равно будет видна, независимо от того, сколько данных находится под ней. Это позволяет вам иметь длинный список и помогает следить за тем, что вы на самом деле просматриваете.
Существует два способа закрепить строки:
-
Нажмите ПРОСМОТР > СТОП-КАДР > 1 РЯД на панели навигации, чтобы зафиксировать первую строку на месте
-
Наведите курсор на темно-серую полосу в левом верхнем углу электронной таблицы (пока он не станет рукой) и перетащите его между строками 1 и 2
Замораживание строки заголовка — это первое, что я делаю в на каждом листе , который я делаю.
Теперь давайте сделаем всплывающий текст заголовка с помощью простого форматирования текста (помните, инструменты форматирования текста находятся на панели инструментов, прямо над первой строкой):
-
Перетащите, чтобы выбрать ячейки, которые вы хотите отформатировать
-
Выделите текст жирным шрифтом
-
Увеличьте размер шрифта до 12pt
-
Выровняйте всю строку по центру
-
Залейте ячейки серым цветом немного форматирует мою «Среднюю цену / порцию» в долларовом выражении.Сначала все выглядит так:
Теперь давайте очистим это, выделив кнопку «Форматировать как $» для определенных значений (или всей строки).
Вы увидите, что выбранные вами ячейки теперь отображаются как сумма в долларах, а не как обычное число.
Примечание : если вы выполните эту операцию с выделением всей строки/столбца, будущие значения также будут форматироваться!
Теперь, когда вы научились вставлять и форматировать свои данные, самое время начать фактически вычислять некоторые суммы, средние значения и многое другое из ваших данных!
3.Добавление, усреднение и фильтрация данных с помощью формул
Таблицы Google, как и большинство приложений для работы с электронными таблицами, имеют множество встроенных формул для выполнения ряда статистических задач и задач по обработке данных. Вы также можете комбинировать формулы для создания более мощных вычислений и объединения задач. И если вы уже привыкли работать с числами в Excel, те же самые формулы работают в Google Sheets большую часть времени.
В этом уроке мы сосредоточимся на пяти наиболее распространенных формулах, которые показаны в раскрывающемся меню формул в верхней части навигации.
Вы можете щелкнуть формулу, чтобы добавить ее в ячейку, или вы можете начать вводить любую формулу со знаком
=
в ячейке, за которым следует имя формулы. Таблицы будут автоматически заполнять или предлагать формулы на основе того, что вы вводите, поэтому вам не нужно запоминать каждую формулу.Основные формулы в Таблицах включают:
-
СУММ : суммирует диапазон ячеек (например, 1+2+3+4+5 = сумма 15) диапазона ячеек (т.грамм. 1,2,3,4,5 = среднее из 3)
-
COUNT : подсчитывает значения в диапазоне ячеек (например: 1, пусто ,3,4,5 = всего 4 ячейки со значениями )
-
MAX : находит наибольшее значение в диапазоне ячеек (например: 1,2,3,4,5 = 5 является самым высоким)
-
MIN : находит наименьшее значение в диапазоне диапазон ячеек (например: 1,2,3,4,5 = 1 является самым низким)
-
Базовая арифметика : Вы также можете выполнять такие функции, как сложение, вычитание и умножение непосредственно в ячейке без вызова формулы
Мы изучим эти формулы, улучшив нашу таблицу завтраков.
Использование формулы СУММ
Давайте начнем с суммирования общего количества ингредиентов , необходимых для каждого рецепта. Я буду использовать формулу
СУММ
, чтобы добавить каждое значение в рецептах и получить общую сумму.Существует три способа использования основных формул, доступных через верхнюю навигацию:
-
Выберите диапазон , затем щелкните формулу (это поместит результат либо ниже, либо сбоку от диапазона).
-
Выберите ячейку результата (т.е. ячейку, в которой должен появиться результат), затем нажмите на формулу , которую вы хотите использовать, на панели инструментов. Наконец, выберите диапазон ячеек для выполнения операции.
-
Введите формулу в ячейку результата (не забудьте знак
=
), затем либо вручную введите диапазон, либо выберите диапазон
Я продемонстрирую все три метода на гифке ниже. Во-первых, я просуммирую свои ингредиенты, выбрав диапазон и щелкнув
СУММ
в меню формул.Во-вторых, я выберу ячейку результата и выделю диапазон ячеек, которые нужно суммировать. Наконец, я продемонстрирую ввод формулы и диапазона вручную.Примечание : Чтобы выбрать диапазон ячеек, щелкните первую ячейку и удерживайте SHIFT , затем щелкните последнюю ячейку в диапазоне. Поэтому, если вы хотите от A1 до A10, нажмите A1, затем удерживайте SHIFT и нажмите A10.
Когда вы закончите выбирать ячейки, которые хотите сложить, нажмите ENTER .
В моем примере вы видите всплывающий серый раздел справки, когда я начинаю вводить формулу. Когда вы создаете формулу в первый раз, вместо этого вы заметите синюю подсветку и вопросительный знак рядом с ячейкой.
Вы можете щелкнуть знак вопроса, чтобы включить или выключить контекст справки для формул. Эти советы расскажут вам, какой тип информации можно использовать в каждой формуле, и значительно облегчат создание формулы (особенно когда вы начинаете комбинировать формулы).
Теперь, когда у нас есть формула, равная
СУММ
всех ингредиентов вместе, давайте удостоверимся, что она применяется ко всем ячейкам в этой строке.Я выберу ячейку с формулой и перетащу синюю точку на другие ячейки, чтобы скопировать формулу в эти ячейки.Вы заметите, что когда вы копируете формулу в соседнюю ячейку, она сдвигает диапазон, на который ссылается новая формула. Например, в столбце «Яичница-болтунья» это было
SUM(B2:B8)
, а в «Французском тосте» —SUM(C2:C8)
.Использование формулы COUNT
Теперь, когда мы знаем, сколько деталей требуется для каждого рецепта, я хотел бы знать, насколько сложно его приготовить.Я упростил это, предположив, что меньшее количество ингредиентов означает, что рецепт менее сложен.
Чтобы подсчитать количество ингредиентов в каждом рецепте, я буду использовать формулу
СЧЕТ
.Формула подсчета, по сути, проверяет, пусты ли ячейки в диапазоне, и возвращает общее количество заполненных ячеек.
Эта формула будет настроена в моей электронной таблице так же, как моя строка
SUM
.Вот трюк, который мы не рассмотрели в предыдущем разделе: выделите диапазон ячеек, который вы пытаетесь подсчитать и проверить, в правом нижнем углу электронной таблицы.Если вы выделили чистый список чисел, Таблицы автоматически
СУММУЛИРУЮТ
их для вас и отобразят результат. Если вы выделили смешанный диапазон чисел и текста, это будет 90 201 COUNT 90 202 значений.У вас также есть возможность выполнить любую из пяти числовых операций над диапазоном чисел, нажав кнопку
SUM
в правом нижнем углу и выбрав новую формулу по умолчанию во всплывающем меню. С этого момента каждый раз, когда вы выделяете диапазон, он будет выполнять последнюю выбранную формулу.Итак, согласно моей таблице, «хлопья» — наименее сложный завтрак, но я все еще не уверен, что легкий завтрак того стоит.
Что делать, если это стоит слишком дорого? Что, если дополнительные усилия по приготовлению другого блюда сэкономят мне деньги?
Уточним наше решение, вычислив среднюю стоимость порции завтрака по формуле
СРЕДНЕЕ
.Используя формулу СРЕДНЕГО
, я добавил несколько фиктивных минимальных и максимальных цен за единицу в списке ингредиентов справа от вариантов завтрака.Мы хотим получить среднюю цену для каждого ингредиента, используя низкие и высокие ставки, а затем умножить полученную среднюю цену ингредиента на соответствующее количество единиц в каждом рецепте.
Я начну с выделения диапазона значений (в данном случае это два расположенных рядом, а не вертикального диапазона) и выбора формулы
СРЕДНЕЕ
на панели инструментов.Это переместит результат в столбец справа от столбца максимальной цены. Затем я перетаскиваю формулу вниз, чтобы применить ее к другим комбинациям минимальной и максимальной цен.
Я назову свой столбец «Средняя стоимость единицы», чтобы мы знали, на что смотрим. Затем перейдем к расчету стоимости завтрака с помощью простой арифметики.
Использование простых арифметических формул
Нам нужно рассчитать общую стоимость завтрака, умножив среднюю цену каждого ингредиента на количество его единиц в рецепте. Для этого вручную введите формулу в строку «Средняя цена».
Наша основная арифметическая формула для столбца «Яичница-болтунья» будет выглядеть следующим образом:
=$I2*B2+$I3*B3+$I4*B4+$I5*B5+$I6*B6+$I7*B7+$I8*B8
Символ
$
перед столбцом I (средние цены) сообщает Sheets, что независимо от того, где мы помещаем формулу в нашу электронную таблицу, мы всегда хотим ссылаться на столбец I.Таким образом, если мы скопируем формулу в другие рецепты, она всегда будет использовать столбец средней стоимости единицы, а не сдвигать ссылку на следующий столбец при перетаскивании для копирования (как это было вSUM
иCOUNT
). Примеры).Если вы не хотите вводить эти значения вручную, есть более простые способы выполнения формулы этого типа: Вы можете выполнить тот же расчет цены, используя следующую расширенную формулу:
=СУММ(ФОРМУЛА МАССИВА(B2:B8 *$I2:$I8))
В Sheets есть много формул, которые решают сложные задачи за вас, многие из которых мы рассмотрим в следующих главах.
Теперь, когда у нас есть некоторые рабочие данные и расчеты, возможно, моим коллегам (которые, вероятно, планируют завтра позавтракать) может быть полезна эта таблица.
Давайте подготовимся поделиться нашей электронной таблицей и пригласим некоторых сотрудников для просмотра, редактирования и использования наших данных.
4. Делитесь, защищайте и перемещайте свои данные
Что делает Таблицы такими мощными, так это то, насколько «синхронно» вы будете чувствовать себя со своими коллегами. Совместное редактирование электронной таблицы — одна из важнейших функций Таблиц, и Google сделал ее удобной.
Вот как это работает:
-
Нажмите ФАЙЛ > ПОДЕЛИТЬСЯ или используйте синюю кнопку «Поделиться» в правом верхнем углу ваша электронная таблица
-
Выберите любые другие параметры конфиденциальности и нажмите «Готово»
Когда вы откроете «расширенную» панель общего доступа, вы увидите ряд параметров.
По умолчанию при нажатии кнопки «Поделиться» ссылка на электронную таблицу копируется в буфер обмена.
Когда вы делитесь этой ссылкой с кем-то через мессенджер или по электронной почте, если они щелкнут ссылку, они попадут в электронную таблицу. Однако, если вы не пригласили их по электронной почте (в поле электронной почты) и не выбрали «Может редактировать», им все равно потребуется запросить разрешение на внесение изменений.
Если вы хотите предоставить кому-либо в вашей организации или компании доступ на уровне редактора, нажмите кнопку « изменить… » в разделе « Кто имеет доступ » и выберите «Вкл. - (название вашей организации)* *".(Примечание: этот параметр отображается только в том случае, если вы используете Google Apps for Work.)
Кто-то является "В вашей организации", если у него есть адрес электронной почты и учетная запись Google для вашей компании. В этом случае я назвал «компанию» MichaelGrubbs, поэтому у всех в моей организации есть адрес электронной почты
@michaelgrubbs.com
, и любой, кто вошел в одну из этих учетных записей, может получить доступ к электронной таблице.Совместное использование электронных таблиц с вашими устройствами и приложениями
Несмотря на то, что Google Таблицы и Диск созданы для обмена между пользователями, вы заметите, что во многих случаях ваши электронные таблицы создаются как внутренние документы, а совместное использование является второстепенным по отношению к фактическому выполнению работы.
Вы можете оптимизировать рабочие процессы с электронными таблицами и обмен данными в режиме реального времени, воспользовавшись этими полезными надстройками:
-
Мобильные приложения Google Docs . Вы можете использовать мобильное приложение Google Sheets для просмотра и редактирования электронных таблиц, обмена ссылками на ходу и добавления пользователей. Это надежное дополнение к веб-приложению, но не его замена.
-
Синхронизация с Google Диском на рабочем столе . Google Диск позволяет легко загружать файлы из локальной среды рабочего стола на онлайн-Диск.Это делает их доступными для ваших сотрудников, а также позволяет быстро импортировать их в электронные таблицы и другие документы.
-
Сторонний инструмент, такой как Zapier . Вы можете использовать Zapier для автоматического добавления данных в свои электронные таблицы, отправки файлов в свою учетную запись Google Диска, оповещения об изменениях в ваших Таблицах... вы называете это
Давайте продолжим работу над нашим примером электронной таблицы, чтобы продемонстрировать использование Zapier, инструмент интеграции приложений, чтобы сделать Google Sheets еще более мощным.
Вместо того, чтобы нажимать кнопку «Поделиться» в моей электронной таблице, чтобы отправить ее своим коллегам, я хотел бы отправить сообщение Slack, предупреждающее их о том, что я создал эту новую электронную таблицу.
Вы можете автоматически отправлять сообщения в канал Slack с помощью триггера Google Таблиц Zapier и действия Slack.
Я настроил свой Zap для поиска новых электронных таблиц на моем Google Диске, а затем разместил имя файла и ссылку на электронную таблицу в канале Slack.
Это отлично подходит для обновления вашей команды, когда вы создаете новые документы, которые вы хотели бы быстро зациклить на всех.
Вы можете настроить фильтры и условия, чтобы решить, когда публиковать, и у вас есть полный контроль над тем, какую информацию вы хотите включить в свое сообщение. Вы также можете запускать сообщения на основе различных действий в Google Таблицах, например, когда кто-то добавляет новую строку или изменяет данные в ячейке. Посетите страницу Google Таблиц Zapier для получения дополнительной информации о поддерживаемых данных и триггерах.
Теперь давайте изменим направление потока данных и посмотрим, как наши коллеги будут взаимодействовать с нашей электронной таблицей.
Я хочу, чтобы я и моя команда могли взаимодействовать с моей электронной таблицей и отслеживать, что они ели на завтрак, в журнале завтраков. Без такого инструмента автоматизации, как Zapier, такие задачи быстро становятся причиной того, что люди не могут успешно сотрудничать с помощью электронных таблиц.
Подумайте об этом, если бы это была обычная электронная таблица без какой-либо автоматизации, вы бы попросили кого-нибудь:
-
Прервать свою текущую деятельность
-
Отследить электронную таблицу
-
Заполнить несколько фрагменты потенциально несущественных данных
-
Сохраните и повторно поделитесь этим файлом (если он еще не находится в сети и не синхронизирован)
-
Повторите для любого количества задач/документов
Здесь автоматизация задач становится такой жизненно важный.
Давайте настроим нашу электронную таблицу так, чтобы у нее был чистый лист для получения некоторых автоматических данных. Я создам новый рабочий лист, используя кнопку
+
в левом нижнем углу.Теперь я снова воспользуюсь Zapier и сделаю Slack инициирующим действием с Google Sheets на принимающей стороне автоматизации (сторона Zap «Действие»).
Я настроил свой Zap так, чтобы мгновенно принимать сообщение Slack, отправленное в выделенный канал, и создавать новую строку в журнале завтрака вместе со временем и пользователем, опубликовавшим его.
Проверьте это в режиме реального времени:
И это может работать для сотен других приложений, которые вы можете использовать в качестве триггеров или действий с Zapier. Вы можете отправлять информацию в свою таблицу по электронной почте, следить за своими социальными каналами, устанавливать расписание; существуют десятки различных способов выполнить любую задачу с помощью приложений, которые вы уже используете.
Загрузка ваших данных
Если вам нужно отправить файлы внешним соавторам, загрузить файл в другую систему или просто создать резервную копию для потомков, воспользуйтесь одним из многочисленных вариантов экспорта данных Google Sheets.
Чаще всего экспортируется в формате .xls (документ Excel) или .csv (значения, разделенные запятыми). Если вы не уверены, какой формат использовать, лучше всего подойдет .csv.
Используйте электронную таблицу в автономном режиме
Если вам нравится то, что вы видели до сих пор, но вы беспокоитесь, что не сможете использовать Таблицы без подключения, не бойтесь. Google Таблицы имеют « автономный режим », который автоматически синхронизирует ваши изменения в документе при повторном подключении к Интернету.
Это полезно в любой ситуации, когда вам нужно обращаться с Google Sheets как с настольным приложением — например, в полете или в поездке.
Вот что вам понадобится:
-
Google Chrome
-
Google Drive Chrome Web App
-
Google Drive Sync
На самом деле включение выглядит так (приготовьтесь удивиться):
Таким образом, вы можете использовать Google Sheets даже в автономном режиме — Wi-Fi не требуется.
Чтобы получить дополнительные советы по использованию Google Таблиц в автономном режиме, перейдите к концу главы 6.
Google Таблицы — это мощный инструмент. В нем есть все, что вы ожидаете от электронной таблицы, с дополнительными возможностями онлайн-приложения. Хотя пример электронной таблицы, который мы создали, может быть немного глупым, практическое применение Таблиц для ваших рабочих процессов (как деловых, так и личных) безгранично.
Если вам нужно составить бюджет, наметить следующее предложение, собрать данные для исследовательского проекта или записать информацию из любого другого приложения, которое соединяется с Zapier, электронные таблицы Google Sheets могут воплотить ваши данные в жизнь. А поскольку все хранится на Google Диске, вы больше никогда не будете беспокоиться о потере файлов, даже если ваш компьютер выйдет из строя.
Функции — повторно используемые блоки кода. Изучите веб-разработку
Еще одна важная концепция кодирования — это функций , которые позволяют хранить фрагмент кода, выполняющий одну задачу, внутри определенного блока, а затем вызывать этот код всякий раз, когда вы нужно использовать одну короткую команду, а не вводить один и тот же код несколько раз.В этой статье мы рассмотрим основные концепции функций, такие как базовый синтаксис, способы их вызова и определения, область действия и параметры.
В JavaScript вы найдете функции повсюду. На самом деле, мы использовали функции на протяжении всего курса; мы просто не говорили о них очень много. Однако сейчас самое время поговорить о функциях в явном виде и по-настоящему изучить их синтаксис.
Почти каждый раз, когда вы используете структуру JavaScript, которая содержит пару круглых скобок —
()
— и вы , а не , используя общую встроенную языковую структуру, такую как цикл for, while или do...в то время как цикл или оператор if...else, вы используете функцию.В этом курсе мы часто использовали функции, встроенные в браузер. Каждый раз, когда мы манипулировали текстовой строкой, например:
const myText = 'Я строка'; const newString = myText.replace('строка', 'колбаса'); console.log (новая строка);
Или каждый раз, когда мы манипулировали массивом:
const myArray = ['Я', 'любовь', 'шоколад', 'лягушки']; const madeAString = мой массив.присоединиться(' '); console.log(сделанострока);
Или каждый раз, когда мы генерируем случайное число:
const myNumber = Math.random();
...мы использовали функцию!
Примечание: Не стесняйтесь вводить эти строки в консоль JavaScript вашего браузера, чтобы при необходимости заново ознакомиться с их функциональностью.
Язык JavaScript имеет множество встроенных функций, которые позволяют вам делать полезные вещи без необходимости писать весь этот код самостоятельно.Фактически, часть кода, который вы вызываете, когда вы вызываете (причудливое слово для запуска или выполнения), встроенная функция браузера не может быть написана на JavaScript — многие из этих функций вызывают части кода фонового браузера. , который написан в основном на низкоуровневых системных языках, таких как C++, а не на веб-языках, таких как JavaScript.
Имейте в виду, что некоторые встроенные функции браузера не являются частью основного языка JavaScript — некоторые определены как часть API-интерфейсов браузера, которые строятся на основе языка по умолчанию для обеспечения еще большей функциональности (см. этот ранний раздел нашего руководства). конечно для большего количества описаний).Мы рассмотрим использование API-интерфейсов браузера более подробно в следующем модуле.
Функции , являющиеся частью объектов, называются методами . Вам пока не нужно изучать внутреннюю работу структурированных объектов JavaScript — вы можете подождать до следующего модуля, в котором вы узнаете все о внутренней работе объектов и о том, как создавать свои собственные. А пока мы просто хотели прояснить возможную путаницу между методом и функцией — вы, вероятно, встретите оба термина, просматривая доступные связанные ресурсы в Интернете.
Встроенный код, который мы использовали до сих пор, представлен в обеих формах: функций, и методов. Полный список встроенных функций, а также встроенных объектов и соответствующих им методов можно посмотреть здесь.
Вы также видели много пользовательских функций в курсе — функций, определенных в вашем коде, а не внутри браузера. Каждый раз, когда вы видели пользовательское имя со скобками сразу после него, вы использовали пользовательскую функцию.В нашем примере random-canvas-circles.html (см. также полный исходный код) из нашей статьи о циклах мы включили пользовательскую функцию
draw()
, которая выглядела следующим образом:функция рисования () { ctx.clearRect(0,0,ШИРИНА,ВЫСОТА); для (пусть я = 0; я < 100; я ++) { ctx.beginPath(); ctx.fillStyle = 'rgba (255,0,0,0,5)'; ctx.arc(случайный(ШИРИНА), случайный(ВЫСОТА), случайный(50), 0, 2 * Math.PI); ctx.заполнить(); } }
Эта функция рисует 100 случайных кругов внутри элемента
вместо того, чтобы писать весь этот код каждый раз, когда мы хотим его повторить. И функции могут содержать любой код, который вам нравится — вы даже можете вызывать другие функции из функций. Вышеупомянутая функция, например, трижды вызывает функцию
random()
, которая определяется следующим кодом:случайная функция (число) { вернуть Math.floor(Math.random()*number); }
Нам нужна была эта функция, потому что встроенный в браузер Math.Функция random() генерирует только случайное десятичное число от 0 до 1. Нам нужно случайное целое число от 0 до указанного числа.
Вы, вероятно, уже поняли это, но на всякий случай... чтобы фактически использовать функцию после того, как она была определена, вы должны запустить — или вызвать — ее. Это делается путем включения в код имени функции, за которым следуют круглые скобки.
функция myFunction() { оповещение('привет'); } мояФункция();
Примечание: Эта форма создания функции также известна как объявление функции .Он всегда поднимается, поэтому вы можете вызывать функцию над определением функции, и она будет работать нормально.
Некоторые функции требуют указания параметров при их вызове — это значения, которые должны быть заключены в круглые скобки функции, необходимые для правильной работы.
Примечание: Параметры иногда называют аргументами, свойствами или даже атрибутами.
Например, встроенная в браузер функция Math.random() не требует никаких параметров.При вызове всегда возвращает случайное число от 0 до 1:
.const myNumber = Math.random();
Однако для встроенной в браузер функции замены строки требуется два параметра — подстрока для поиска в основной строке и подстрока для замены этой строки на:
const myText = 'Я строка'; const newString = myText.replace('строка', 'колбаса');
Примечание: Если вам нужно указать несколько параметров, они разделяются запятыми.
Дополнительные параметры
Иногда параметры являются необязательными — их не нужно указывать. Если вы этого не сделаете, функция обычно примет какое-то поведение по умолчанию. Например, параметр функции join() для массива является необязательным:
.const myArray = ['Я', 'любовь', 'шоколад', 'лягушки']; const madeAString = myArray.join(' '); console.log(сделанострока); const madeAnotherString = myArray.join(); console.log(сделаноAnotherString);
Если для указания символа соединения/разделения не указан параметр, по умолчанию используется запятая.
Параметры по умолчанию
Если вы пишете функцию и хотите поддерживать необязательные параметры, вы можете указать значения по умолчанию, добавив
=
после имени параметра, а затем значение по умолчанию:функция привет (имя = 'Крис') { console.log(`Привет, ${имя}!`); } привет('Ари'); Привет();
До сих пор мы только что создали такую функцию:
функция myFunction() { оповещение('привет'); }
Но вы также можете создать функцию без имени:
функция () { оповещение('привет'); }
Это называется анонимной функцией , потому что у нее нет имени.Вы часто будете видеть анонимные функции, когда функция ожидает получить другую функцию в качестве параметра. В этом случае параметр функции часто передается как анонимная функция.
Примечание: Эта форма создания функции также известна как функциональное выражение . В отличие от объявления функции, функциональные выражения не поднимаются.
Пример анонимной функции
Предположим, вы хотите запустить некоторый код, когда пользователь вводит текст в текстовое поле.Для этого вы можете вызвать функцию
addEventListener()
текстового поля. Эта функция ожидает, что вы передадите ей (как минимум) два параметра:- имя события для прослушивания, в данном случае
"keydown"
- функция для запуска при возникновении события.
Когда пользователь нажимает клавишу, браузер вызывает предоставленную вами функцию и передает ей параметр, содержащий информацию об этом событии, включая конкретную клавишу, которую нажал пользователь:
функция logKey(событие) { приставка.log(`Вы нажали "${event.key}".`); } textBox.addEventListener('keydown', logKey);
Вместо определения отдельной функции
logKey()
вы можете передать анонимную функцию вaddEventListener()
:textBox.addEventListener («нажатие клавиши», функция (событие) { console.log(`Вы нажали "${event.key}".`); });
Стрелочные функции
Если вы передаете анонимную функцию, подобную этой, вы можете использовать альтернативную форму, называемую стрелочной функцией .Вместо функции
.(событие)
вы пишете(событие) =>
:textBox.addEventListener('нажатие клавиши', (событие) => { console.log(`Вы нажали "${event.key}".`); });
Если функция имеет только одну строку в фигурных скобках, вы опускаете фигурные скобки:
textBox.addEventListener('keydown', (event) => console.log(`Вы нажали "${event.key}".`));
Если функция принимает только один параметр, можно также не заключать параметр в скобки:
текстовое поле.addEventListener('keydown', event => console.log(`Вы нажали "${event.key}".`));
Наконец, если ваша функция должна возвращать значение и содержит только одну строку, вы также можете опустить оператор
return
. В следующем примере мы используем методmap()
массиваconst originals = [1, 2, 3]; const удвоился = originals.map(item => item * 2); console.log(удвоенный);
Метод
map()
берет каждый элемент массива по очереди, передавая его в заданную функцию.Затем он берет значение, возвращенное этой функцией, и добавляет его в новый массив.Таким образом, в приведенном выше примере
item => item * 2
является эквивалентом функции стрелки:функция doubleItem(элемент) { возврат товара * 2; }
Мы рекомендуем вам использовать стрелочные функции, так как они могут сделать ваш код короче и читабельнее. Чтобы узнать больше, см. раздел о стрелочных функциях в руководстве по JavaScript и нашу справочную страницу по стрелочным функциям.
Примечание: Между функциями стрелок и обычными функциями есть небольшие различия.Они выходят за рамки этого вводного руководства и вряд ли будут иметь значение в случаях, которые мы здесь обсуждали. Чтобы узнать больше, см. справочную документацию по стрелочным функциям.
Функция стрелки в реальном времени
Вот полный рабочий пример примера нажатия клавиши, который мы обсуждали выше:
HTML-код:
<дел>
JavaScript:
const textBox = документ.селектор запросов("#текстовое поле"); константный вывод = document.querySelector("#output"); textBox.addEventListener('keydown', event => output.textContent = `Вы нажали "${event.key}".`);
Результат — попробуйте ввести текст в текстовое поле и увидите вывод:
Давайте немного поговорим о области действия — очень важном понятии при работе с функциями. Когда вы создаете функцию, переменные и другие вещи, определенные внутри функции, находятся внутри своей отдельной области , что означает, что они заперты в своих отдельных отсеках, недостижимых для кода вне функций.
Верхний уровень за пределами всех ваших функций называется глобальной областью . Значения, определенные в глобальной области видимости, доступны из любой части кода.
JavaScript настроен таким образом по разным причинам, но в основном из-за безопасности и организации. Иногда вы не хотите, чтобы переменные были доступны отовсюду в коде — внешние скрипты, которые вы вызываете из другого места, могут начать путаться с вашим кодом и вызвать проблемы, потому что они используют те же имена переменных, что и другие части кода. , вызывая конфликты.Это может быть сделано злонамеренно или просто случайно.
Например, предположим, что у вас есть файл HTML, который вызывает два внешних файла JavaScript, и в обоих из них определены переменная и функция, использующие одно и то же имя:
<скрипт> приветствие();
константное имя = 'Крис'; функция приветствия () { alert(`Здравствуйте, ${name}: добро пожаловать в нашу компанию.`); }
константное имя = 'Zaptec'; функция приветствия () { alert(`Наша компания называется ${name}.`); }
Обе функции, которые вы хотите вызвать, называются
Greeting()
, но вы можете получить доступ только к функцииGreeting()
файлаfirst.js
(вторая функция игнорируется). Кроме того, возникает ошибка при попытке (в файле second.js ) присвоить новое значение переменнойname
, потому что она уже была объявлена сconst
и поэтому не может быть переназначена.Хранение частей вашего кода заблокированными в функциях позволяет избежать таких проблем и считается лучшей практикой.
Это немного похоже на зоопарк. Львы, зебры, тигры и пингвины содержатся в своих вольерах и имеют доступ только к вещам внутри своих вольеров — таким же образом, как и области действия. Если бы они могли попасть в другие корпуса, возникли бы проблемы. В лучшем случае разные животные будут чувствовать себя очень некомфортно в незнакомой среде обитания — лев или тигр будут чувствовать себя ужасно в водном, ледяном владении пингвинов.В худшем случае львы и тигры могут попытаться съесть пингвинов!
Смотритель зоопарка похож на глобальную область видимости — у него есть ключи для доступа к каждому вольеру, пополнения запасов пищи, ухода за больными животными и т. д.
Активное обучение: игра с областью действия
Давайте рассмотрим реальный пример, чтобы продемонстрировать область действия.
- Сначала сделайте локальную копию нашего примера function-scope.html. Он содержит две функции с именами
a()
иb()
и три переменные —x
,y
иz
— две из которых определены внутри функций, а одна — в глобальной области видимости.Он также содержит третью функцию, называемуюoutput()
, которая принимает один параметр и выводит его в абзаце на странице. - Откройте пример в браузере и текстовом редакторе.
- Откройте консоль JavaScript в инструментах разработчика браузера. В консоли JavaScript введите следующую команду:
Вы должны увидеть значение переменной
x
, напечатанное в области просмотра браузера. - Теперь попробуйте ввести в консоли следующее:
Оба они должны выдавать ошибку в консоли в строке «ReferenceError: y не определен».Почему это? Из-за области действия функции —
y
иz
заблокированы внутри функцийa()
иb()
, поэтомуoutput()
не может получить к ним доступ при вызове из глобальной области. - Однако как насчет вызова из другой функции? Попробуйте отредактировать
a()
иb()
, чтобы они выглядели так:функция а() { константа у = 2; выход (у); } функция б() { константа z = 3; выход (г); }
a()
иb()
из консоли JavaScript: Вы должны увидеть значенияy
иz
, напечатанные в окне просмотра браузера.Это прекрасно работает, так как функцияoutput()
вызывается внутри других функций — в той же области, в которой определены переменные, которые она печатает, в каждом случае.output() Сама функция
доступна из любого места, поскольку она определена в глобальной области видимости. - Теперь попробуйте обновить свой код следующим образом:
функция а() { константа у = 2; выход (х); } функция б() { константа z = 3; выход (х); }
- Сохраните и перезагрузите снова, а затем повторите попытку в консоли JavaScript:
Оба вызова
a()
иb()
должны выводить значение x в область просмотра браузера.Они отлично работают, потому что, хотя вызовыoutput()
не находятся в той же области, что иx
,x
является глобальной переменной, поэтому она доступна во всем коде везде. - Наконец, попробуйте обновить свой код следующим образом:
функция а() { константа у = 2; выход (г); } функция б() { константа z = 3; выход (у); }
- Сохраните и перезагрузите снова, а затем повторите попытку в консоли JavaScript:
На этот раз вызовы
a()
иb()
будут выдавать в консоль раздражающую ошибку ReferenceError: имя переменной не определено — это потому, что вызовыoutput()
и переменные, которые они пытаются print не находятся в одних и тех же областях действия функций — переменные фактически невидимы для этих вызовов функций.
Примечание: Одни и те же правила области видимости не применяются к циклам (например,
for() { ... }
) и условным блокам (например,if() { ... }
) — они выглядят очень похоже, но они не одно и то же! Будьте осторожны, чтобы не перепутать их.Примечание: Ошибка ReferenceError: «x» не определена — одна из наиболее распространенных ошибок. Если вы получаете эту ошибку и уверены, что определили рассматриваемую переменную, проверьте, в какой области она находится.
Вы дошли до конца этой статьи, но можете ли вы вспомнить самую важную информацию? Вы можете найти дополнительные тесты, чтобы убедиться, что вы сохранили эту информацию, прежде чем двигаться дальше — см. Проверка ваших навыков: функции. Эти тесты требуют навыков, описанных в следующих двух статьях, поэтому вы можете сначала прочитать их, прежде чем пробовать.
В этой статье были рассмотрены основные концепции, лежащие в основе функций, и проложен путь к следующей статье, в которой мы рассмотрим практические вопросы и проведем вас через этапы создания собственной пользовательской функции.
Вставка формул и функций в Numbers на Mac
В формулы можно включать ссылки на ячейки, диапазоны ячеек и целые столбцы или строки данных, включая ячейки в других таблицах и на других листах. Numbers использует значения в указанных ячейках для вычисления результата формулы. Например, если вы включаете «A1» в формулу, это относится к значению в ячейке A1 (ячейке в столбце A и строке 1).
Примечание. Если в вашей таблице используются категории и вы добавляете новую строку в диапазон ячеек-указателей, результаты формулы не будут включать новую строку, пока вы не измените ссылку на ячейку.
В приведенных ниже примерах показано использование ссылок на ячейки в формулах.
-
Если указанный диапазон состоит из нескольких ячеек, начальная и конечная ячейки разделяются одним двоеточием.
-
Если ссылка относится к ячейке в другой таблице, ссылка должна содержать имя таблицы (если только имя ячейки не является уникальным во всех таблицах).
Обратите внимание, что имя таблицы и ссылка на ячейку разделены двойным двоеточием (::). Когда вы выбираете ячейку в другой таблице для формулы, имя таблицы добавляется автоматически.
-
Если ссылка относится к ячейке таблицы на другом листе, имя листа также должно быть включено (если только имя ячейки не является уникальным на всех листах).
СУММ(Лист 2::Таблица 1::C2:G2)
Имя листа, имя таблицы и ссылка на ячейку разделяются двойным двоеточием. Когда вы щелкаете ячейку на другом листе при построении формулы, имя листа и имя таблицы автоматически включаются в формулу.
-
Для ссылки на столбец можно использовать букву столбца.Приведенная ниже формула вычисляет общее количество ячеек в третьем столбце:
-
Чтобы сослаться на строку, вы можете использовать номер строки. Приведенная ниже формула вычисляет общее количество ячеек в первой строке:
-
Чтобы сослаться на строку или столбец с заголовком, вы можете использовать имя заголовка.
-
Ваш комментарий будет первым