- ベストアンサー
エクセル。セルアドレスの型について
エクセルのことで質問があります。 <やりたいこと(イメージでありディテイルは違いますが)> とある関数y=f(x)があるとします。 そのパラメータxがA列に。解のyがB列に羅列されています。 ここでC1セルにxの値を一つ指定してあげる。 するとその点での傾きが計算されC2セルに表示される,というような ことを行いたい <分からないこと> ・関数内でセル領域を指定する際,その型は何である必要があるのか? Lookup関数などは勉強いたしました。 今,話の簡略化のためxだけで考えます。 検索して見つかったxの値をx1,そのセルのアドレスをA5 そのひとつ下のセルの値をx2,アドレスをA6とします。 x2の値を取り出す方法は? 当初Offset関数をつかおうと思いました。 =OFFSET(A5,1,0) にてx2値の抽出は実現いたしますが,今はこの「A5」というアドレスを 検索の結果によってもって来なければいけません。 そこで別のC3セルにAddress関数を使って 「A5」と表示いたしました。C3セル内の数式を仮に「α」と置きます。 =OFFSET(C3,1,0) =OFFSET(α,1,0) 以上2パターンの方法を試しましたが共にエラーが発生。 どうやら文字列をにてアドレスは指定できないようです。 では,アドレスの型とは何なのでしょうか?またその型にて値を返す 関数はあるのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
話を単純に、 A1セルに、参照式"=B1"が設定されている B1セルに、文字列"C1"が設定されている C1セルに、数値"123"が設定されている この条件のもとで、 =INDIRECT(A1) とすると、数値123が得られますが・・・。これで何とかなりませんか?
その他の回答 (4)
- FEX2053
- ベストアンサー率37% (7991/21373)
#1です。とりあえず疑問の件を。 >A1をはさむのには理由があるのでしょうか? ないです。ただ、INDIRECT関数のヘルプには =INDIRECT(B1) と同じ例 が載っていますので「出来る」ことは明白なんですが、このB1セルが 参照式だったらどうなるか、ヘルプを含めて簡単に検索できるような 場所に記述が無かったので、念のためもう一段実証をやっただけです。 >単純な疑問としてセル参照式を関数で表記できないか, 「引数としてセル参照式を持てる関数」は存在しません。Excelの関数 は「セル番地」か「文字列または数値」以外を引数として持ちません。 でも、VBAでマクロを記述するならその限りじゃないです。例えば、 SUB TEST() DAT = "=A1" RANGE("B1").FORMULA = DAT END SUB とやれば、B1セルに「=A1」という参照式が埋め込まれます。問題は そこまでやるか・・・という点ですけど。
補足
再度のご回答,ありがとうございます。 どうやらまた勘違いしちゃってたようです・・・ あれから自分なりに「戻り値にセル番地(セル参照)が帰る関数」を探していたのですが・・・ Indirect関数がまんま,そういう関数だったのですね! 具体的なセル内の値を表示されたため,勘違いしておりました。 http://www.civil-design.net/free/data/excel/function/04.html >「引数としてセル参照式を持てる関数」は存在しません。 む?そうなのでしょうか?例えばOffset関数は引数にセル参照をもっているような気がするのですが? なにか勘違いしていますでしょうか? http://www.clayhouse.jp/formula/formula02.htm
- yone_sk
- ベストアンサー率34% (58/167)
傾きを求めるだけなら =SLOPE(B1:B10,A1:A10) これだけで求まりますよ^^
お礼
ありがとうございます。 Slope関数は知っていたのですがこのままではx領域全体の傾きを求めてしまいます。 (B1:B10,A1:A10)の部分がどうなるかはC1セルの値によって決まるため四苦八苦しておりました。 イメージとしては「あるxに対する微分係数がパッと出せる」で伝わるでしょうか?
- ASIMOV
- ベストアンサー率41% (982/2351)
=OFFSET(INDIRECT(C3),1,0) で、どうでしょうか いずれにしても INDIRECT が、カギになると思います
お礼
まさに探し求めていた関数です。 「文字列をセル参照式に変換する関数ってありますか?」 と聞けば早かったかもです。 ありがとうございます。
- KURUMITO
- ベストアンサー率42% (1835/4283)
ご質問の意味がよくわかりませんがADDRESS関数は例えば=ADDRESS(5,1)と入力すれば$A$5と表示されるでしょう。これではA5のセルに例えば5が入力されている場合には=ADDRESS(5,1)で5を表示させることはできません。 5を表示させるのでしたら次のような式になります。 =INDIRECT(ADDRESS(5,1)) 参考になりましたらよいですね。
お礼
ありがとうございます。 質問の内容としては =OFFSET(ADDRESS(5,1),1,0) これは =OFFSET("$A$5",1,0) と等価なはずなのにエラーがでました。 セル参照の部分が文字列なためのエラーだと思ったのですがでは 「文字列でダメなら何ならいいのさ?!なんという型名なんよ?変換関数はあるの?」 と思った故の質問です。 解はまさにINDIRECTでした。ありがとうございます。 加えて言うなら,この参照するセルの位置「A5」というのが「C1」の値によって任意に変化するため件の問題が発生いたしました。
お礼
お早いご回答ありがとうございます。 Indirect関数で何とかなりそうです。 ちなみに・・ですが 上記の例だと =INDIRECT(B1) でも等価ですよね? A1をはさむのには理由があるのでしょうか? 非常に助かりました。 ・・・ですが,実は皆様にお礼を書いている間で気がついたのですが, この関数は 「文字列をセル参照式変換して返す」ものではなく 「文字列をセル参照式と見なしてそのセルの値を返す」 だったのですね。 とりあえず今回の件では,Indirect関数で解決できますので問題ないです。 単純な疑問としてセル参照式を関数で表記できないか,また質問するかも,ですのでその際は宜しくお願いいたします。 重ね重ね,皆様ありがとうございます。