(Первоначально я спрашивал об этом на stackoverflow. Тем не менее, формулы Excel определенно пересекают грань между "программированием" и "супервизацией", поэтому я считаю, что этот кросс-пост уместен.)
Многие из встроенных функций Excel могут принимать аргументы массива. Иногда результат документируется в справке, а иногда нет. Так:
=IF({1,0,1}, 42, 99)
вернет {42, 99, 42}. Справка по 'IF' охватывает аргументы массива. Но:
=INDEX({2,3,5,7,11}, {2,4})
вернет {3, 7}. Это интуитивно понятно, но я не могу найти источник Microsoft, который документирует это. А также:
=INDEX({1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16}, {1,3},{2,4})
возвращает {2, 12}, что совсем не интуитивно понятно.
Есть ли какой-нибудь источник, который охватывает эти менее распространенные виды использования массивов? Кажется, что он должен быть, но я не нахожу его в веб-поиске, потому что он требует использования "Excel", "function" и "array" ...
(Кроме того, кто-то может пометить этот вопрос с помощью «формулы-массива», так как у меня нет возможности создавать теги?)
Я чувствую себя комфортно с использованием формул массива и использую их все время, но я ненавижу выяснять, что произойдет методом проб и ошибок. Этот конкретный вопрос возник, когда я делал (упрощенный эквивалент):
=IF(ISNA(udf()), {1,2,3,4}, {5,6,7,8})
где 'udf' возвращал, скажем, {1,2,3}, а формула оценивалась как {5,6,7, # N/A}. Это удивило меня, хотя я могу понять, что происходит, и обойти это. Меня просто беспокоит, что я не могу найти авторитетный источник, который все это излагает.
Ссылка на вопрос по stackoverflow (есть несколько ответов и несколько комментариев, но ничего, что удовлетворяет вопрос прямо сейчас) здесь: https://stackoverflow.com/questions/3998632/is-there-any-documentation-of-the-behavior -of-встроенный-Excel-функции называемых недоумки
РЕДАКТИРОВАТЬ: я сделал большое изменение в версии этого вопроса в stackoverflow и включил часть ответа Нила там. Тем не менее, добавление в значительной степени касается "программирования" формул Excel, поэтому я не буду повторять его здесь.