- ベストアンサー
【EXECEL】 配列定数の使い方について
配列定数が入力されたセルを、配列定数として、他のセルに挿入した数式から参照することは可能でしょうか? もし、可能だとすれば、どのようにすれば良いのか教えて下さい。 例えば、今やろうとしていることは以下のとおりです。 A1セルに、={1,2,3,4,5,6,7,8,9,10}、と入力し、 A2セルに、=AVERAGE(A1)、と入力する。 これにより、A2セルに平均値5.5を表示させたい。 このままやっても、A1セル参照値は1となるのか、 表示される平均値は、1になります。 参照の仕方が異なるのでしょうか...
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 二つの方法があるかと思います。 1つは、以下のようにユーザー定義関数で行うことです。 '<標準モジュール> Function myAverage(myRange As Range) myAverage = WorksheetFunction.Average(Evaluate(myRange.FormulaLocal())) End Function もう1つは、マクロ関数を使う方法です。 A1 に={1,2,3,4,5,6,7,8,9,10} があるとします。 A2 にセルポインターを起き、 挿入-名前-定義 名前(W) ARR (任意) 'Array=配列の略 参照範囲(R) =EVALUATE(GET.FORMULA(!A1)) +NOW()*0 (相対参照になりますから、今回は、セルは隣り合った上下の関係です) A2 に =AVERAGE(ARR) とします。 注意:マクロ関数を利用した名前定義は、シートやブックをまたがってコピーしては絶対にいけません。できれば、シートを限定してお使いください。 私個人としては、もう少し式の入力を工夫した使い方をしたほうがよいと思います。できれば、最初から、VBAで、パラメータ配列で処理したほうが、安全かつ便利だと思います。パラメータ配列というのは、Choose()関数の第二引数などのタイプを指します。
その他の回答 (3)
- banker_U
- ベストアンサー率21% (17/78)
いわばExcelのシート自体2次元の配列ですよねえ。 今やろうとしていることを、シートにうまく落とす方向で考えた方が解決は早いと思いますが・・・ あとはマクロを使うぐらいでしょうか。
補足
どのマクロを使えば、単一セルに入力した配列定数の各要素が参照できるようになるのでしょうか?
名前を定義付けすればできるんじゃないですか? [挿入]→[名前]→[定義] 名__前:適当 参照範囲:={1,2,3,4,5,6,7,8,9,10} →[OK] =AVERAGE(適当) こんな感じです。
補足
過去に一度試みたことがありますが、結果は同じでした。
- mu2011
- ベストアンサー率38% (1910/4994)
配列定数をA1セルに定義しても1セル分の値しかありませんので配列になりません。 因みに=AVERAGE({1,2,3,4,5,6,7,8,9,10})なら期待値がでますが如何でしょうか。
補足
参照内容を動的に変更させたいので、そうすると範囲指定でないとできないということになるのですね。 EXCEL以外だと期待した処理が可能なツールがあるのでしょうか?
お礼
ありがとうございました。がんばってみます。