Как выбрать ячейку, используя нижний индекс, как в большинстве языков программирования - a [x]?

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

= IF(A[row()] = "X", TRUE, FALSE) 

5 ответов5

2

Я согласен, INDEX, безусловно, является лучшим ответом на это, чем INDIRECT, на самом деле он действительно ближе всего к селектору элементов массива, существующему в Excel. (Примечание: элемент нуля отсутствует, как во многих языках программирования, Excel работает со строками и столбцами, поэтому первый всегда равен 1 в любом направлении)

Обратите внимание, что вы можете использовать простую версию для выбора n-го элемента в массиве из одного столбца:

= INDEX(A1:A100,27) даст 27-й элемент A1:A100, то есть A27 или массив из одной строки:

= INDEX(A1:G1, 5) дает содержимое пятого столбца в массиве, поэтому в этом случае E1 (обратите внимание на двойную запятую, чтобы показать, что значение для строки не указано)

Вы можете сделать двумерные массивы:

= INDEX(A1:D100,27,4) будет содержимым D27 (строка 27, столбец 4 массива) и

= ИНДЕКС (C19:X43,5,7) дает I23

Теперь, если у вас есть двумерный массив и указан только один параметр, результатом будет целый столбец или строка. Хотя это не имеет смысла само по себе, оно прекрасно встроено в другую функцию. Итак:= INDEX(A1:C5,1) - возвращает ошибку #REF, поскольку он даже не понимает, относится ли 1 к строке или столбцу.

= INDEX(A1:C5,1,) - возвращает #VALUE, потому что не может отобразить результирующий массив в ячейке, но учтите, что дополнительная запятая теперь явно определяет, что 1 означает первую строку.

= SUM(INDEX(A1:C5,1,)) - возвращает сумму всех значений в A1:C1, первой строке массива.

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

= IF(A:A = "X", "Да, это работает", "X не найден"), то вы можете скопировать это в любую другую строку, просто перетаскивая ее, и в каждой строке это неявно означает "элемент столбца A". который находится на том же номере строки, что и эта формула ". Примечание: диапазон не обязательно должен быть целым столбцом, это может быть A4:A104 или даже на другом листе, но в каждом случае он будет использовать ячейку в той же фактической строке Excel, что и формула. Я еще раз скажу последний бит: если в ячейке B5 используется формула с диапазоном A4:A104, вы получите не пятый элемент этого диапазона (A8), а ячейку A5. Если вы используете формулу в ячейке B3 вместо A4:A104, вы получите ошибку, потому что в строке 3 ничего нет (пересечения нет). Итак, если ваши строки выстроены в ряд, эта неявная ячейка из диапазона действительно полезна (и даже более чиста, когда вы используете именованный диапазон для столбца), но если это не так, вам нужен INDEX, чтобы получить истинную репликацию [ n] для любого элемента массива.

2

Используйте функцию INDIRECT :

= ДВССЫЛ ("А" и С2)

если C2 - это ячейка, содержащая номер строки.

Вы можете использовать это в своей формуле IF:

= IF(INDIRECT("A"&C2) = "X"; TRUE; FALSE)
0

Если вам известен диапазон значений, используйте функцию INDEX.

например

= IF(INDEX(A:A, ROW()) = "X", TRUE, FALSE)

В отличие от функции INDIRECT, она не является изменчивой и, следовательно, не будет пересчитываться при любых изменениях.

0

Вы могли бы попробовать

=if(A & trim(text(something that evaluates to a number))="X",true,false)

Я думаю, если бы вы могли быть немного более конкретны с тем, как вы получаете row(), это было бы полезно.

0

Вот еще два варианта для вас:

Включить эталонный стиль R1C1

В Excel 2003, например:

  1. Нажмите «Параметры» в меню «Сервис», затем перейдите на вкладку «Общие».
  2. В разделе «Настройки» установите флажок «Стиль ссылки R1C1».

Тогда в вашей формуле вы просто сделаете это:

=R1 = "X"

который автоматически вернет истину или ложь. Обратите внимание, что в ваших формулах в любое время, когда вы используете If() для возврата true и false, вы можете просто полностью избавиться от If(), так как любое сравнение уже возвращает логическое значение.

К сожалению, при использовании этого метода вы не можете использовать справочный стиль A1, поэтому этот прием может оказаться для вас ограниченным.

Используйте именованные диапазоны

Именованные диапазоны действительно являются мощными и простыми в использовании. Допустим, вы пометили столбец с значком X в нем. Таким образом, вы должны выбрать весь столбец и выбрать Вставка -> Имя -> Определить. Дайте ему имя Флаг (если он еще не нашел его на основе вашего ярлыка), а затем в формулах вы используете слово Флаг, как если бы это была ссылка на ячейку, например:

=Flag = "X"

Это будет использовать значение из той же строки, но правильный столбец.

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

Еще один лакомый кусочек

Не пропустите оператор пересечения, который является пробелом. Оператор объединения - это запятая, как в =Sum(A1, B1) и оператор пересечения аналогично используется следующим образом =Sum(Flag 2:10) . Если флаг именованного диапазона ссылается, например, на столбец 1, то это будет касаться диапазона A2:A10, пересечения двух перечисленных диапазонов. Вы можете использовать множество пересечений одно за другим, как в range range range range . A:A 1:1 разрешает ту же ссылку, что и A1 .

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

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