该函数所做的是转置一组ids和一行不断变化的数量。作为回报,具有数量的行将与id一起返回,其余的数组用于查询定价范围。最后,将所有id和它们各自的数量的总价相加。最后的总价乘以CT中相应的行。
现在,我在CW4:CW列的每一行都有一个函数,因为我似乎无法得到计算数据的数组公式。
电子表格(隐藏不必要的列和页):https://docs.google.com/spreadsheets/d/1E5p0WPQg6F8ZlBDWpKrJKHoXIlfQOOYYs7491Mr-EIA/edit?usp=sharing
如果我的解释不是最好的,现在已经很晚了,我已经花了很多时间在这个问题上,我对此表示歉意。如果您需要澄清或示例说明,请随时发表评论。
功能:
=ARRAYFORMULA(IFERROR(IFNA(
QUERY(
{VLOOKUP(QUERY({SPLIT(TRANSPOSE(CX$3:EO$3 & " " & CX4:EO4), " ", 1, 0)}, "SELECT Col1 WHERE Col2 IS NOT NULL", 0), EP$4:ER, 3) *
QUERY({SPLIT(TRANSPOSE(CX$3:EO$3 & " " & CX4:EO4), " ", 1, 0)}, "SELECT Col2 WHERE Col2 IS NOT NULL", 0)},
"SELECT sum(Col1) LABEL sum(Col1) ''", 0) / CT4, ""), ""
))我需要作为数组工作的引用:
CX4:EO4
CT4数据图:


发布于 2022-03-18 22:21:23
尝试:
=ARRAYFORMULA(IFERROR(MMULT(IFERROR(INDIRECT("I4:AZ"&MAX(ROW(A4:A)*(A4:A<>"")))*
HLOOKUP(IF(INDIRECT("I4:AZ"&MAX(ROW(A4:A)*(A4:A<>"")))="",,I3:AZ3),
TRANSPOSE(BA:BC), 3, ), 0), SEQUENCE(COLUMNS(I:AZ), 1, 1, ))/E4:E))

或更短:
=INDEX(IFERROR(MMULT(IFNA(INDIRECT("I4:AZ"&MAX(ROW(A4:A)*(A4:A<>"")))*
VLOOKUP(IF(INDIRECT("I4:AZ"&MAX(ROW(A4:A)*(A4:A<>"")))="",,I3:AZ3),
BA:BC, 3, ), 0), FLATTEN(COLUMN(I:AZ))^0)/E4:E))更短但更慢(不建议使用):
=INDEX(IFERROR(MMULT(IFNA(I4:AZ*VLOOKUP(IF(I4:AZ="",,I3:AZ3),
BA:BC, 3, ), 0), FLATTEN(COLUMN(I:AZ))^0)/E4:E))https://stackoverflow.com/questions/71476654
复制相似问题