Кажется, я столкнулся с интересной ситуацией ...

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

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

Вот таблица:

Предположим, что верхняя левая ячейка A1

Пользователь вводит данные в таблицу, и на основании этого лучшие предложения вычисляются в диапазонах ячеек E2:F3, где столбец E - лучшая цена, а столбец F - поставщик, которому принадлежит значение в столбце E.

Формула столбца E:

{=MIN(IF(Table2[Size]=$D$2,Table2[Offer]))}  // This is an array-formula

При этом рассматривается столбец "Размер" в таблице, создается массив на основе этих ответов и добавляется цена предложения в каждом истинном результате в массив. Затем Формула проверяет этот временный массив, а затем определяет минимум в этом массиве. Эта формула работает.

Вот где проблема приходит ...

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

Текущая формула столбца F:

{=ADDRESS(MATCH(MIN(IF(Table2[Size]=$D$2,Table2[Offer])), Table2[Offer], 0), 2, 1)}   // This is an Array Formula

Результатом этой формулы является правильный столбец, но неверный ряд. В электронной таблице мои значения выводятся на 8 строк, начиная с 1. Это связано с тем, что формула просматривает номер строки в временном массиве, который является правильным ответом в области действия временного массива, но не правильным в области действия электронной таблицы, поэтому для добавления 8 к номеру строки в манипуляции требуется манипуляция. будущее использование.

Примером ответа будет что-то вроде $B$2 , но истинный ответ - $B$10 .

Это одна проблема. Следующая проблема - получить значение ячейки по этому адресу.

Для этого я рассмотрел использование в отдельной ячейке для проверки теории операций:

  1. =CELL("contents", $manual_answer_of_above) → результат = исправить
  2. =INDIRECT(ADDRESS($manual_row_no, $manual_col_no)) → Результат = Исправить
  3. =INDIRECT(ADDRESS(ROW(CELL("contents", $cell_with_address), COLUMN(CELL("contents", $cell_with_address)), 2, 1)) → Результат = формула не принята

Что мне не хватает? Почему мои формулы не позволяют мне отображать правильного продавца?

1 ответ1

0

Если у вас Office 365 Excel, будет возвращено значение:

=INDEX(Table2[Vendor],MATCH(MINIFS(Table2[Offer],Table2[Size],$D$2),Table2[Offer],0))

Иначе, если вы этого не сделаете, AGGREGATE может заменить МИНИФЫ:

=INDEX(Table2[Vendor],MATCH(AGGREGATE(15,6,Table2[Offer]/(Table2[Size]=$D$2),1),Table2[Offer],0))

Ни один не требует использования записи массива. Кроме того, оба избегают использования энергозависимых функций, таких как CELLS, INDIRECT или ADDRESS.

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