2016-06-06 8 views
3

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

В настоящее время я могу установить основную функцию в первой ячейке A1 =ROW()

Простой правой? Ну вот, вот идет усложнение. Если я нажму на нижнюю правую часть ячейки и начну перетаскивание, я смогу применить эту самую функцию ко всему диапазону ячеек. Предположим, я применил его от A1: A10. Каждая ячейка внутри этой группы теперь имеет ту же функцию.

Ура! Мы сделали это, не так ли? Я применил функцию к диапазону ячеек, каждый из которых имеет собственный вывод. Но подождите, если я вернусь к исходной ячейке и измените ее формулу, ни одна из других ячеек не изменится вместе с ней. Grrrrr !!!!

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

Сказав это, позвольте мне услышать ваши мысли.


Ближайший я пришел к ответу, чтобы использовать FORMULA(), который возвращает формулу, используемую ячейку в виде текста. К сожалению, все ответы на оценку текста прибегают к написанию сценариев. Как странно! Я думал, что что-то подобное будет распространено. Мог бы также получить скрипты.


Держитесь, возможно, я говорил слишком рано. Массив можно сделать с помощью =MUNIT(), но он только квадратный. Drats!


Хорошо ... Я надеюсь, что зебра в конечном итоге станет его собственный ответ, если кто-то еще не бьет меня к нему. Таким образом, можно создать простой массив с ={1,2;3,4}, где запятые отдельные значения по столбцам и точкам с запятой для значений по строке, кроме генерации, вам нужно нажать Control + Shift + Enter (потому что причины?). Теперь я думаю, что мне нужно будет иметь функции, которые могут генерировать списки значений на основе одной функции для каждой строки и молиться, чтобы она работала. Итак, вернемся к поиску. (Ничего себе это принимает навсегда)


Как я был гипотезу даже не может генерировать 1x1, например, ={ROW()} возвращает Err:512, который представляет собой формулу переполнения.


Хорошо, в целом до сих пор я сузил два варианта,

1) link every cell to the original formula 
2) populate an array with a single formula 

каждый со своим неполным ответом,

a) use FORMULA() to return the formula of a cell as text 
b) create a hypothetical array like so ={LIST_OF_VALUES()} 

Они оба требует странной формы несуществующая функция EVALUATE() правильно функционирует. Разве это не забавно?


Google Sheets обрабатывает случай б, позволяя ={ROW()}Control + Shift + Enter для создания =ArrayFormula({ROW()}). Работа с общим случаем любого размера массива, заполненного одной функцией, не существует в мире электронных таблиц. Это очень печально, потому что я не могу придумать гораздо лучшего инструмента для того, что я хочу делать. Скопируйте его, пока мне не понадобится использовать макросы.

+0

Вы используете Microsoft Excel? Google Таблицы? Apple Numbers? – OldBunny2800

+0

LibreOffice Calc, но я надеялся на универсальное решение. –

+0

См. Также http://superuser.com/q/906861/84724 ... – tohuwawohu

ответ

0

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

+0

Сложные ответы - это то, о чем я говорил в первом предложении, и именно то, чего я пытаюсь избежать. Как вы говорите, я могу повторить шаги в параграфе 3, чтобы воспроизвести эффекты, но это довольно трудоемко и уродливо, не так ли? Для меня я представляю себе эту функциональность как простую операцию, которая должна иметь некоторую форму встроенной поддержки. –

+0

«Это довольно трудоемкий и уродливый» Это два клика. – OldBunny2800

+0

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

1

В зависимости от вашего конкретного варианта использования создание user-defined function может помочь:

  • используйте Basic IDE для создания вашей функции;
  • примените его к любым ячейкам на любом листе;
  • Изменение базового кода повлияет на все ячейки, где используется функция.

Я разработал шаги в answer on superuser.

0

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

Другим вариантом является использование array function. Затем вам нужно только отредактировать функцию один раз, и одно и то же редактирование будет автоматически применено ко всему диапазону ячеек в этой функции массива.