Я хочу сделать vlookup (или аналогичный) для столбца, который представляет собой список значений. Это прекрасно работает для поиска значения из одной строки, но я хочу иметь возможность искать несколько строк, суммировать результаты и делить на количество строк, на которые ссылаются.
Например:
АБВГДЕЖ [---- заданные значения ----------------] [Работа / Автор] [сумма (vlookup (каждая (G), таблица, 5)) / count (G)] [данные значения] 1 пункт Авторизовано OnHand Работает Оперативная% Зависимость или% Зависимости 2 A 1 1 1 1 .55 B 3 B 10 5 5,50 .55 C, D 4 C 100 75 50,50,60 D 5 D 10 10 6,60 1
Я хочу показать операционную скорость и операционную скорость систем, от которых зависит каждая система (F). Чтобы получить значение для F, я хочу суммировать по каждому значению в column-E, на которое ссылалась зависимость в column-G, а затем делить на количество зависимостей в G. Column-G может иметь переменную длину и будет быть разделенным запятыми списком значений из столбца-A.
Есть ли способ сделать это в Excel?
источник
=AVERAGE(IF(COUNTIF(Table1[[#This Row],[Dependencies]],"*"&[Asset]&"*")*([Asset]<>""),[EquipReadiness]))
не должно быть разницы между ссылками на ячейки и ссылками на таблицы, но ... эта формула сообщает обо всех нулях.=AVERAGE(IF(COUNTIF(Table1[[#This Row],[Dependencies]],"*"&Table1[Asset]&"*")*(Table1[Asset]<>""),Table1[EquipReadiness]))
. Это подходит для меня. Это формула массива, поэтому вам нужно подтвердить с помощью CTRL + SHIFT + ENTER, чтобы фигурные скобки, такие как {и}, появлялись вокруг формулы в строке формулN,
добавлю столбец G вместо того,N
где N является ссылкой. В противном случае это работает.так как у вас есть переменное количество значений, самый простой способ - использовать UDF (пользовательскую функцию)
Это должно получить ваш ответ:
Если у вас есть значение, которое не найдено, функция вернется,
#NUM!
используя вашу электронную таблицу в качестве примера, F1 будет иметь
=CSVAverage(G1,A2:E5,5)
источник
Application.WorksheetFunction.VLookup(FindList(I), DataRange, NumberColumn, False)
я не установил часы это никогда не возвращает значение.vlookup
функции VBA . Для каждого из значений, разделенных запятыми, он будет искать значение в столбце 1 вашего диапазона и возвращать совпадающее значение в столбцеNumberColumn
этого диапазона. если вы хотите попробовать эту функцию вручную, то вы можетеVLookup("A", Range("A1:B5"), 2, False)
найти A в области A1: B5 и вернуть значение во 2-м столбцеfoo= Application.WorksheetFunction.VLookup("3",Range("Table1"),8,False)
может быть, я пытаюсь передать ему таблицу вместо диапазона ячеек? В моем настоящем файле я пробовал оба пути:=CSVAverage(Table1[[#This Row],[Dependencies]],Table1,9)
и=CSVAverage(L3,$A$3:$I$55,8)
ни в коем случае не повезло.