我有以下两个数组:
{a,b,c}
{d,e,f}
我如何获取该数组?
{a*d,b*e,c*f}
例如,一个数组是 {0,1,1},另一个是 {255,122,0}。我需要这个数组:
{0,122,0}
真的就这么简单。
这与该主题相关:Excel:查找过滤范围内的最后一个非零、非空单元格
我发现这个公式 SUBTOTAL(2,OFFSET(R5,ROW(R5:R200)-ROW(R5),0)) 为过滤后的数据(可见)给出 1,为过滤掉的数据(不可见)给出 0。因此,这是一个包含 196 个 0 或 1 元素的数组。
另一个数组,OFFSET(R5,ROW(R5:R200)-ROW(R5),0),基本上就是 R5:R200。
如果我可以将一个数组的每个元素与另一个数组中对应的元素相乘并得到一个新数组,那么下面的 LOOKUP 将给出过滤数据中的最后一个非零数字。
=LOOKUP(2,1/NEW-ARRAY,R5:R200)
这是因为 SUBTOTAL 数组为每个过滤的(可见)单元格提供 1,当它与单元格内容相乘时,内容为 0 的可见单元格将在新数组中变为 0({0,1,1} 中的第二个 1 乘以 {255,122,0} 中的 0)。因此,LOOKUP 将选取最后一个非零单元格。
答案1
正如@Jeeped所述使用INDEX:
INDEX({0,1,1}*{255,122,0},0)
这会将数组 {0,122,0} 返回到另一个公式
正如你所见,如果我们把这些数字相加:
=SUM(INDEX({0,1,1}*{255,122,0},0))
返回 122
答案2
答案3
假设单元格 A1、B1 和 C1 中分别有 1、2 和 3。单元格 A2、B3 和 C2 中分别有 4、5 和 6。
在单元格 A3 中,您可以输入公式:
= A1:C1 * A2:C2
它将生成一个数组 {4,10,18},分别溢出到 A3、B3 和 C3。