Автоматическое заполнение значений на основе нескольких зависимостей в Excel

1

У меня есть три столбца с уже заполненной информацией. Значение в столбце C зависит от двух идентификаторов из столбцов A и B (т. Е. Джордж всегда является продавцом яблок в Америке, а Сара - продавцом свеклы).

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

Таким образом, если я введу в «Свекла» в A9 и «Австралия» в B9, то C9 должен получить значение «Эми». Я опущу это значение, чтобы автоматически заполнить оставшуюся часть таблицы, чтобы будущие строки добавлялись автоматически.

Я использовал функцию INDIRECT (ROW-1) для ссылки на весь столбец над ячейкой с формулой, чтобы получить правильные данные, если это имеет смысл ...

       A         B         C
1   Product  Country    Contact 
2   Apple    Australia  John
3   Apple    America    George
4   Beets    Australia  Amy
5   Beets    America    Sarah
6   Carrot   Australia  Greg
7   Carrot   America    Belinda
8   Apple    Australia  John 
9   Beets    Australia  _Formula:_

=INDEX((INDIRECT("C2:C"&ROW()-1)),MATCH(A10,IF((INDIRECT("B2:B"&ROW()-1))=B10,(INDIRECT("A2:A"&ROW()-1)))),0)
укладчик
источник
Имеются ли в ваших существующих данных все возможные значения для C, или вы можете столкнуться с комбинацией, в которой вам нужно будет ввести новое значение для C?
fixer1234
Привет, Фиксер, да, извините, что произошло несколько правок одновременно, я понял, что в моем примере диапазон не определен правильно, но исправление все еще возвращает # N / A. Не требуется никакой обработки ошибок, любая новая комбинация страны / продукта может быть введена вручную. Надеемся, что косвенная функция добавляет это новое значение в следующий раз, когда это произойдет. PS Я также пробую формулу как массив
укладчик
1
Гораздо более простой подход: создайте справочную таблицу с двумя столбцами - A & B и C для семи комбинаций. Для каждой новой строки ищите A & B.
fixer1234
Привет, Фиксер, оцените ваш ответ и решение, хотя я бы лучше выяснил, почему моя формула не работает ... Кроме того, пример является более упрощенным решением. У меня есть несколько продуктов (4+) возможных продуктов в каждой стране (10+), что делает комбинации бесконечными для справочной таблицы.
Штабелер
@Stacker: Кстати, если вы «отправите» свой комментарий таким образом, человек получит флаг сообщения, в противном случае никто не узнает о вашей публикации (необходимо, если с вопросом или ответом связано более одного человека). Предложение: добавьте вспомогательный столбец с A & B (может быть скрыт). Затем просто сделайте index / match для строк над текущей строкой.
fixer1234

Ответы:

0

Вот ответ, который, кажется, работает:

=VLOOKUP(B9, OFFSET(B$2:C$7, MATCH(A9,A$2:A$7,0)-1, 0, 2, 2), 2, 0)

Работаем изнутри:

  • VLOOKUP(B9, OFFSET(B$2:C$7, MATCH(A9,A$2:A$7,0) -1, 0, 2, 2), 2, 0)
    MATCH(A9, A$2:A$7, 0)находит A9( Beets) в диапазоне A2:A7 { Apple, Apple, Beets, Beets, Carrot, Carrot}, что дает значение индекса в диапазоне 1-6. Конечно, поскольку A2 =  A3, A4 =  A5и A6 =  A7значение индекса всегда будет равно 1, 3 или 5; ибо  Beetsэто 3.
  • MATCH(A9, A$2:A$7, 0)-1переназначает вышеупомянутое, чтобы быть в диапазоне 0-5 (в частности, 0, 2 или 4; для  Beets, это 2).
  • OFFSET(B$2:C$7, the_above, 0, 2, 2) говорит
    • взять B2:C7регион,
    • от верхнего левого угла ( B2), спуститесь на две строки вниз (так как первое вхождение Beetsin A2:A7находится в третьей строке, это означает, что мы должны спуститься на две (3−1) строки из строки 2) и перейти вправо к нулевым столбцам, достигнув клетка B4,
    • а затем взять область 2 × 2, начиная с этой точки. что приводит нас к диапазону B4:C5, который
      Австралия Эми
      Америка Сара
      который является всемирным списком продавцов свеклы. Обратите внимание, что нам нужен регион шириной в два столбца, потому что мы хотим связать страны с продавцами, но высота должна быть числом стран (в данном примере это две). Если бы было семь стран, мы бы изменили это на (хотя, если бы было семь стран (и три товара), вводный блок имел бы высоту 21 ряд, поэтому мы будем использовать диапазоны от строки 2 до строки 22).OFFSET(B$2:C$7, MATCH(A9,A$2:A$7,0)-1, 0, 7, 2)
  • VLOOKUP(B9, OFFSET(B$2:C$7, MATCH(A9,A$2:A$7,0)-1, 0, 2, 2) , 2, 0)
    VLOOKUP(и его братья, LOOKUPи HLOOKUP), по сути, сокращение от INDEX+ MATCH. Этот поиск первого столбца (то Vвыступает за об ertical) от продавцов свеклы региона / массива ( B4:C5) для B9( Australia) , а затем возвращает значение из 2 - го столбца строки, соответствующего значению подстановки ( Australia).  Australiaнаходится в строке 4. Так как мы говорим о столбцах Bи C, столбец Cв этом контексте является «вторым столбцом», так что это приводит нас к ячейке C4, которая содержит Amy.

… Что является желаемым результатом для строки 9, так как Эми является австралийским поставщиком свеклы.

Скотт
источник
Фантастика, спасибо за помощь, а также объяснение. Работает очень хорошо, я не могу вас отблагодарить :)
Stacker
С удовольствием. Я извиняюсь за то, что так долго опубликовал объяснение.
Скотт