Excel 配列操作: この配列を取得するにはどうすればよいでしょうか?

Excel 配列操作: この配列を取得するにはどうすればよいでしょうか?

次の 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

この数式は、配列の要素を希望の形式で取得できます。

ここに画像の説明を入力してください

  • この数式をセルに入力しA44、必要になるまで入力します。

=A42*D42

必要に応じて数式内のセル参照を調整します。

答え3

セル A1、B1、C1 にそれぞれ 1、2、3 が入っているとします。また、セル A2、B3、C2 にそれぞれ 4、5、6 が入っているとします。

セル A3 に次の数式を入力できます。

= A1:C1 * A2:C2

そして、それぞれ A3、B3、C3 に流し込まれる {4,10,18} の配列が生成されます。

関連情報