
我有以下兩個數組:
{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 將給出過濾資料中的最後一個非零數字。
=找出(2,1/新數組,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 中。