6

Я всегда разочаровывался при использовании электронных таблиц из-за невозможности определить свои собственные функции, когда не существует существующей функции (чисто), чтобы делать то, что я хочу. Любая таблица предлагает эту возможность?

6 ответов6

6

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

4

Apple iWork Numbers

К сожалению, этого нельзя сделать с помощью Numbers.

Google Apps

Пользовательские функции поддерживаются в электронной таблице Google с использованием JavaScript.

LibreOffice Calc

LibreOffice Calc поддерживает пользовательские функции.

Майкрософт Эксель

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


Учитывая, что есть несколько вариантов, трудно понять, какой из них выбрать.

Если у вас (или у вашего работодателя) есть предварительные обязательства в отношении решения на основе Microsoft или (и наоборот) решения с открытым исходным кодом, то решение в основном уже принято. Если вы поклонник Apple (как и я), вы будете использовать Numbers по мере возможности и отказываться от него только тогда, когда вам нужны функции, выходящие за рамки его возможностей. Но (по моему мнению) решение с самыми большими плюсами и меньшими недостатками - электронные таблицы Google:

Вам не нужно беспокоиться об (реальных и предполагаемых) угрозах от макросов в ваших электронных таблицах. Вам не нужно беспокоиться о том, можете ли вы поделиться файлом с другими: вы просто предоставляете доступ любому, кому хотите, и он "в облаке" для них, когда они хотят. Вскоре вы даже сможете редактировать свои таблицы в автономном режиме.

Вы предоставляете свою информацию информационному боргу Google (если вам это все равно), и вы отказываетесь от некоторой элегантности (по сравнению с Numbers) и от более полного набора функций (по сравнению, по крайней мере, с Excel, если нет) другим), но те не могут иметь большого значения.

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

3

Это довольно просто с помощью Funfun в Excel. Funfun позволяет вам использовать JavaScript непосредственно в Excel, чтобы вы могли самостоятельно определять все виды функций. С помощью надстройки Funfun Excel вы можете использовать данные в электронной таблице, а также выводить данные в определенные ячейки.

В основном, что вам нужно сделать, это

1). Вставьте надстройку Funfun из магазина надстроек Office

2). Создайте новый Funfun или загрузите образец из онлайн-редактора Funfun.

3). Напишите код JavaScrip или определите свою собственную функцию.

4). Запустите код прямо в Funfun

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

https://www.funfun.io/1/edit/5a368f1645ac15144af3fde5

Вы можете легко связать этот образец с вашим Excel, используя Шаг 2) выше.

Раскрытие: я разработчик Funfun.

2

Excel делает это великолепно, используя VBA. У меня есть ряд пользовательских функций, от простых до сложных, для всего, начиная с возврата имени листа текущей ячейки и заканчивая диаграммами пользовательского форматирования. Многие из моих функций начались в Excel 2003, и я перешел на Excel 2010(64 бита). Стоит отметить, что для того, чтобы они работали как в 32-, так и в 64-битных средах, требуется дополнительное программирование. Чтобы создать свою первую пользовательскую функцию:

  1. Я рекомендую использовать чистую отдельную книгу, которую вы можете сохранить как .Файл XLA, который можно использовать в качестве надстройки. Это позволяет вам вызывать ваши пользовательские функции из любых других ваших рабочих книг, а не ограничивать их той книгой, в которой вы их используете.
  2. Выберите Visual Basic на вкладке разработчиков. Если эта вкладка не отображается, ее необходимо активировать в меню «Параметры»> «Настройка ленты»> «Основные вкладки».
  3. В VBA щелкните правой кнопкой мыши Модули и выберите Вставить> Модули.
  4. Введите свой код (следующий код вернет имя листа для ячейки, в которой он вызывается):

    Функция SheetName (rAnyCell)

    Заявка.летучий

    SheetName = rAnyCell.Родитель.название

    Конечная функция

  5. Сохраните ваш модуль и вернитесь в Excel.

  6. В любой ячейке введите = имя листа (A1), и он вернет имя этого листа.

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

2

Я нашел статью Microsoft, обсуждающую, как создать пользовательскую функцию Excel 2003.

http://office.microsoft.com/en-us/excel-help/creating-custom-functions-HA001111701.aspx

Я полагаю, что это относится и к более новым версиям Excel.

1

В среде Google Apps у вас есть возможность создавать автономные функции с помощью Google Apps Script (GAS). Это облачный javascript, очень похожий на Google Webtool Kit (GWT).

В электронной таблице Google вы можете создавать функции, которые доступны только в рабочей книге. Смотрите следующий ответ на Супер пользователей; этот пример используется как функция.

Рабочий пример включен: пользовательские функции

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .