驚いたことに、Googleの回答であるをこのサイトと同様に検索すると、この問題に対する明らかな答えが得られなかったので、Excelで2dの範囲を1dの範囲に変換して機能に使用する
2次元セル範囲(A1:C3など)を1次元範囲(A1:A10のような列または行)に変換するマクロ(おそらくUDF)を作成しようとしています。これは、2次元アレイが必要とされるときにMATCH()
のような関数で使用するためである。 A1:C3の特定の値を検索します。しかし、この機能を汎用性のあるものにしたいので、2D配列を丸めて1Dにすることができます。 =INDEX(ARRAYDIMENSION(A1:C1),4)
または=MATCH("hello",ARRAYDIMENSION(A1:C1),0)
のように私はすでに厄介なアプローチを作ってみました。私は新しいシートに互いに下(A1:A3
だA1:C3
、B1:B3
、C1:C3
ため)私のアレイの各列を平手打ち(SO A2は、新しいシートのA2にコピーされ、C3はA9、A4等のB1にコピーされる)
私は新しい配列(Sheet2!A1:A9
)の参照を返すので、代わりにMATCH()
またはINDEX()
と表示されます。
これは機能しますが、明らかな欠陥があります。新しいシートを追加することはマクロには時間がかかり、醜いので、個々の列を積み重ねることは最も効果的な方法ではありません。しかし、特に、マクロはシートを編集するので、UDFにはなり得ません(私は思っていません)。それは、それが必要な式に入れるだけでなく、自己完結型のWorksheet_Calculate Subとして使用する必要があります。
私はそれが比較的明確だと思う、助けてください/最善のアプローチに助言、私はので、私はまだスーパースリックないんだけど、数週間VBAingされています。
あなたは何をしたいですか?配列式はオプションですか? –