Может ли ключ поиска соответствия быть строкой значений?

#google-sheets

#google-таблицы

Вопрос:

Я хотел бы использовать значения в столбце name (search key) и посмотреть их в таблице с заголовками [name, regular, overtime] .

Формула, которую я использую, является:

 =ArrayFormula(index(rateTable, match(formName,workers,0),match(formType,rateTypes,0),0)*{formHours})
  

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

Пытаюсь ли я использовать эту формулу за пределами ее возможностей? Я хотел бы знать, должен ли я прекратить поиск. Спасибо.

Вот ссылка на копию моего листа: https://docs.google.com/spreadsheets/d/1sovuTB4zSTpl0RUHciYltr-pf8g4KPTgkYVE5lB4Ifk/edit?usp=sharing

 =ArrayFormula(index(rateTable, match(formName,workers,0),match(formType,rateTypes,0),0)*{formHours})
  

Комментарии:

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

2. Упс, я изменил настройки ссылки. Спасибо, что упомянули об этом.

3. @JoelReid Спасибо, что дали мне знать. Это исправлено.

4. Все еще приватный. Попробуйте щелкнуть правой кнопкой мыши по вашей ссылке и выбрать открыть ее в новом приватном окне / инкогнито. Когда это сработает, вы будете знать, что каждый может скопировать его.

5. @JoelReid извините, сейчас это работает, и я это протестировал. Переместил его с teams на мой личный диск и изменил настройки.

Ответ №1:

для этой задачи лучше всего использовать VLOOKUP формулу. вставить в I2 ячейку:

 =ARRAYFORMULA(IF(LEN(formName), IFERROR(VLOOKUP(formName, rateTable, 
 IFS(formType="Regular",  2, 
     formType="Overtime", 3), 0)) * formHours, ))
  

0

демонстрационная электронная таблица

Ответ №2:

INDEX не работает с массивами, как это необходимо для ARRAYFORMULA . Либо…

используйте скопированные формулы, а не одну ARRAYFORMULA , например
=IF(NOT(LEN(A2)),"",index(rateTable, match(C2,workers,0),match(G2,rateTypes,0))*H2)
и перетащите-скопируйте его в столбец I,

или измените свое INDEX(,MATCH( использование, чтобы вместо этого полагаться на VLOOKUP s и HLOOKUP s.

Комментарии:

1. Спасибо Джоэлу. Это то, что мне нужно было знать.