Chcę wykonać vlookup (lub podobny) na kolumnie, która jest listą wartości. Działa to dobrze w przypadku wyszukiwania wartości z pojedynczego wiersza, ale chcę mieć możliwość wyszukiwania wielu wierszy, sumowania wyników i dzielenia przez liczbę wierszy, do których się odwołuje.
Na przykład:
ABCDEFG [---- podane wartości ----------------] [Praca / Auth] [suma (vlookup (każda (G), tabela, 5)) / count (G)] [podane vals] 1 Pozycja Autoryzowana OnHand Operational Operation% Dependencyor% Dependencies 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
Chcę być w stanie pokazać wskaźnik operacyjny i szybkość działania systemów zależnych od (F). Aby uzyskać wartość F, chcę zsumować każdą wartość w kolumnie-E, do której odwołuje się zależność w kolumnie-G, a następnie podzielić przez liczbę zależności w G. Kolumna-G może mieć różne długości i będzie być rozdzieloną przecinkami listą wartości z kolumny-A.
Czy jest jakiś sposób, aby to zrobić w programie Excel?
źródło
=AVERAGE(IF(COUNTIF(Table1[[#This Row],[Dependencies]],"*"&[Asset]&"*")*([Asset]<>""),[EquipReadiness]))
Nie powinna różnicować odniesień do komórek i odniesień do tabeli, ale ... ta formuła zgłasza wszystkie zera.=AVERAGE(IF(COUNTIF(Table1[[#This Row],[Dependencies]],"*"&Table1[Asset]&"*")*(Table1[Asset]<>""),Table1[EquipReadiness]))
. To działa dla mnie. Jest to formuła tablicowa, więc musisz potwierdzić klawiszami CTRL + SHIFT + ENTER, aby nawiasy klamrowe, takie jak {i}, pojawiły się wokół formuły na pasku formułyN,
kolumnę G zamiastN
gdzie N jest referencją. W przeciwnym razie działa.ponieważ masz zmienną ilość wartości, najłatwiej jest użyć UDF (funkcja zdefiniowana przez użytkownika)
To powinno dać ci odpowiedź:
Jeśli masz wartość, która nie została znaleziona, funkcja powróci
#NUM!
przy użyciu przykładowego arkusza kalkulacyjnego, F1 miałaby
=CSVAverage(G1,A2:E5,5)
źródło
Application.WorksheetFunction.VLookup(FindList(I), DataRange, NumberColumn, False)
nie ustawię zegarka to nigdy nie zwraca wartości.vlookup
funkcji przez VBA . Dla każdej wartości oddzielonej przecinkami będzie szukać wartości w kolumnie 1 zakresu i zwróci pasującą wartość w kolumnieNumberColumn
tego zakresu. jeśli chcesz wypróbować tę funkcję ręcznie, możesz użyćVLookup("A", Range("A1:B5"), 2, False)
A do znalezienia A w obszarze A1: B5 i zwrócić wartość w drugiej kolumniefoo= Application.WorksheetFunction.VLookup("3",Range("Table1"),8,False)
Może próbuję przekazać do niego tabelę zamiast zakresu komórek? W moim prawdziwym pliku próbowałem go w obie strony:=CSVAverage(Table1[[#This Row],[Dependencies]],Table1,9)
i=CSVAverage(L3,$A$3:$I$55,8)
nie ma szczęścia w żaden sposób.