
次の 2 つの配列があります。
{a,b,c}
{d,e,f}
この配列を取得するにはどうすればよいですか?
{a*d,b*e,c*f}
たとえば、1 つの配列は {0,1,1} で、もう 1 つは {255,122,0} です。必要なのは次の配列です。
{0,122,0}
本当にこれだけ簡単です。
これはこのスレッドに関連しています:Excel: フィルターされた範囲内の最後のゼロ以外の空でないセルを検索する
この数式 SUBTOTAL(2,OFFSET(R5,ROW(R5:R200)-ROW(R5),0)) では、フィルターされたデータ (表示) には 1 が、フィルターされていないデータ (非表示) には 0 が返されることがわかりました。つまり、これは 0 または 1 の要素が 196 個ある配列です。
別の配列 OFFSET(R5,ROW(R5:R200)-ROW(R5),0) は、基本的に R5:R200 だけです。
ある配列の各要素を別の配列の対応する要素で乗算して新しい配列を取得できる場合、次の LOOKUP は、フィルター処理されたデータ内の最後のゼロ以外の数値を返します。
=LOOKUP(2,1/新しい配列,R5:R200)
これは、SUBTOTAL 配列がフィルターされた (表示されている) セルごとに 1 を返し、セルの内容と掛け合わせると、内容が 0 の表示セルが新しい配列で 0 になるからです ({0,1,1} の 2 番目の 1 と {255,122,0} の 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
そして、それぞれ A3、B3、C3 に流し込まれる {4,10,18} の配列が生成されます。