Подсчет элементов в товарной базе в Google Sheets - PullRequest
0 голосов
/ 28 января 2020

У меня есть таблица с базой продуктов, например:

product_name; element_name; element_quantity
product_1; element_1; 5
product_1; element_2; 10
product_2; element_1; 2
product_2; element_3; 1

И список продуктов, например:

product_name; product_quantity
product_1; 5
product_2; 10
product_1; 1

Какие формулы я должен использовать, чтобы получить элементы, и их количество используется сделать продукты в списке? У меня есть база данных продуктов, и после того, как я заполню список, я хочу составить список элементов, которые мне нужно купить Если это возможно, я не хочу использовать Google Query, потому что он медленный.

Я хочу создать список вроде:

element_name; element_quantity
element_1; 50
element_2; 60
element_3; 10

Моя оригинальная база содержит около 200 продуктов и 50 различных элементов.

Это было моё первое решение, но оно медленное и код беспорядочный, но работает только это:

=IFERROR(QUERY(
{
IF('LIST'!E2 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D2 &"'";1); {""\""\""});
IF('LIST'!E3 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D3 &"'";1); {""\""\""});
IF('LIST'!E4 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D4 &"'";1); {""\""\""});
IF('LIST'!E5 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D5 &"'";1); {""\""\""});
IF('LIST'!E6 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D6 &"'";1); {""\""\""});
IF('LIST'!E7 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D7 &"'";1); {""\""\""});
IF('LIST'!E8 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D8 &"'";1); {""\""\""});
IF('LIST'!E9 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D9 &"'";1); {""\""\""});
IF('LIST'!E10 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D10 &"'";1); {""\""\""});
IF('LIST'!E11 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D11 &"'";1); {""\""\""});
IF('LIST'!E12 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D12 &"'";1); {""\""\""});
IF('LIST'!E13 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D13 &"'";1); {""\""\""});
IF('LIST'!E14 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D14 &"'";1); {""\""\""});
IF('LIST'!E15 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D15 &"'";1); {""\""\""});
IF('LIST'!E16 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D16 &"'";1); {""\""\""});
IF('LIST'!E17 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D17 &"'";1); {""\""\""});
IF('LIST'!E18 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D18 &"'";1); {""\""\""});
IF('LIST'!E19 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D19 &"'";1); {""\""\""});
IF('LIST'!E20 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D20 &"'";1); {""\""\""});
IF('LIST'!E21 = FALSE; QUERY(furniture_accessories_base;"select B,C,E where A='" & 'LIST'!D21 &"'";1); {""\""\""})
};
"select Col1, Col2, SUM(Col3) where Col3 > 0 group by Col1, Col2 ORDER BY SUM(Col3) DESC LABEL SUM(Col3) 'QUANTITY'"); {"-"\"-"\"-"})

Ответы [ 2 ]

1 голос
/ 28 января 2020

Вот как я это сделал.

H1: =unique(E:E)

K1: =unique(B:B)

I2: =sumif(E:E,H2,F:F)

L2 : =sumproduct(filter(C:C,B:B=K2),arrayformula(iferror(vlookup(filter(A:A,B:B=K2),H:I,2,0),0)))

Я не смог получить I2 и L2 как arrayformulas. Поэтому вам нужно скопировать их вниз по столбцу.

screenshot

0 голосов
/ 28 января 2020

попробовать:

=ARRAYFORMULA(QUERY({B2:B, C2:C*VLOOKUP(A2:A, QUERY({E2:F}, 
 "select Col1,sum(Col2) where Col1 !='' group by Col1 label sum(Col2)''"), 2, 0)}, 
 "select Col1,sum(Col2) where Col1 !='' group by Col1 label sum(Col2)''"))

0

...