Превращение формулы в ArrayFormula Part2 - PullRequest
0 голосов
/ 18 мая 2019

Исходя из этого вопроса Превращение формулы в ArrayFormula

Мне не удалось объяснить, что ячейки значений могут также содержать несколько значений в формате CSV. Я попытался настроить его на:

=ARRAYFORMULA(IF(LEN(A4:A), IFERROR(VLOOKUP(SPLIT(A4:A,","), 
 QUERY(TRIM(TRANSPOSE(SPLIT($B$1, ","))), 
 "select Col1,count(Col1) group by Col1", 0), 2, 0), 0), ))

Но не повезло. Тестовый лист находится здесь. https://docs.google.com/spreadsheets/d/12xATTwuc-e6kXn_OF2Uibg6EgtSGbInI6Q_-vueknXg/edit#gid=0

Моя оригинальная формула в B4, которая работает, но нуждается в копировании, чего я хочу избежать.

1 Ответ

0 голосов
/ 18 мая 2019
=ARRAYFORMULA(IFERROR(VLOOKUP(A4:A, QUERY({QUERY(TRIM(SPLIT(TRANSPOSE(SPLIT(
 QUERY(TRANSPOSE(QUERY(TRANSPOSE(IF(LEN(A4:A), "♠"&A4:A&"♦"&TRIM(IFERROR(
 SPLIT(A4:A, ","))), )), , 999^99)), , 999^99), "♠")), "♦")), "select Col1", 0),
 ARRAY_CONSTRAIN(IFERROR(VLOOKUP(QUERY(TRIM(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(
 QUERY(TRANSPOSE(IF(LEN(A4:A), "♠"&A4:A&"♦"&TRIM(IFERROR(SPLIT(A4:A, ","))), ))
 , , 999^99)), , 999^99), "♠")), "♦")), "select Col2", 0), QUERY(IFERROR(VLOOKUP(
 QUERY(TRIM(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(IF(LEN(A4:A),
 "♠"&A4:A&"♦"&TRIM(IFERROR(SPLIT(A4:A, ","))), )), , 999^99)), , 999^99), "♠")), "♦")),
 "select Col2", 0), QUERY(TRIM(TRANSPOSE(SPLIT(B1, ","))), 
 "select Col1,count(Col1) group by Col1", 0), {1, 2}, 0)), 
 "select Col1,sum(Col2) group by Col1", 0), 2, 0), 0), COUNTA(QUERY(TRIM(SPLIT(
 TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(IF(LEN(A4:A),
 "♠"&A4:A&"♦"&TRIM(IFERROR(SPLIT(A4:A, ","))), )), , 999^99)), , 999^99), "♠")), "♦")),
 "select Col1", 0)), 1)}, "select Col1,sum(Col2) group by Col1" ,0), 2, 0)))

0

...