[[20100906170207]] 『INDIRECT関数とOFFSET関数の違い』(勉強中) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『INDIRECT関数とOFFSET関数の違い』(勉強中)

 関数の勉強中で、解らない事があるので、教えて頂けないでしょうか?
 ネットで文章を読んでも、いまいち理解が出来ていません。
 INDIRECT関数とOFFSET関数の違いが、よく解りません。
 何行おきのデータを取るとかで、よくこの関数が出てきているようで、
 便利そうなので、使用したいのですが、
 どちらの関数が、どのような場合に適しているのでしょうか?
 よろしくお願いいたします。


 ご提示のOFFSET関数とINDIRECT関数は全く用途が違うと思いますよ。
 関数のヘルプを一度ご覧になってください。

 (川野鮎太郎)

 >INDIRECT関数とOFFSET関数の違いが、よく解りません。

 INDIRECT関数の式とOFFSET関数の式が同じように見えるということですか。
 たとえばどのような式で、それがどういう動作だと思うのか、
 例をいただけませんか。
 (semm)


 昨日帰り際に書き込もうと思ったやつ。
 そのまんま。

 簡単に書くと、

 OFFSET
 あるマンションの基準とする部屋(例えば管理室)から上に2階、左に3室に当たる部屋。

 INDIRECT
 あるマンションの○号室と直接指定できる。

 簡単でもなかったというか、すげえ解りにくかったかも。
 BJ

 BJさんの説明楽しいので便乗〜〜

 INDIRECTは「A10さんの言ってる部屋」という指定もできます。
 A10さんが「C2の部屋だよ」と言ってると、C2の部屋を指定します。

 指定先が文字列でOKなので、あとからいろいろ参照先を変えたいときに便利ですね。
 (すずめ)

 皆さん
 質問の仕方が悪くすみませんでした。ご回答有難うございました!
 どのように質問したら良いのかさえ、よく解りませんでした。
 ネットとかヘルプは読んだのですが、OFFSETもINDIRECTも下記を読んだら、
 両方、参照したセルを返すと思い、何が違うのかと思ったのです。
 またOFFSET関数は、指定した行数・列数分をシフトさせた位置にある高さと幅のセルやセル範囲を
 返すとの事ですが、何故、移動が必要なのかと。そのままのセルを指定をせず、何故、移動先のセルを
 参照するのか疑問に思ったのです。INDIRECTが直接指定できるのなら、なぜ、OFFSET関数のように、
 わざわざ移動してセルを参照する必要があるのでしょうか?

 OFFSET関数は基準のセル又はセル範囲から指定した行数・列数分をシフトさせた位置にある高さと幅のセルやセル範囲のオフセット参照を返します。

 INDIRECT関数は文字列で指定されるセル参照を返します。

 INDEX関数も見たりしていたのですが、ますます解らなくなってきてしまいました。

 BJさんとすずめさんの回答は、初心者の私にも解りやすかったです。
 勉強不足ですので、もっと色々検索してみます。
(勉強中)


 おまけ、
 A1からA?まで、続けて数値がが入っているとして、

 =SUM(OFFSET(A1,0,0,COUNT(A:A),1))
 =SUM(INDIRECT("A1:A" & COUNT(A:A)))

 自分にとって、解りやすい方を使えば良いです。
 BJ


 こんにちは。

 >INDIRECTが直接指定できるのなら、なぜ、OFFSET関数のように、わざわざ移動してセルを参照する必要があるのでしょうか?
 ユーザー側に、いろいろな指定方法のニーズがあるからではないでしょうか。

 例えば、以下のようなレイアウトで、B列とA列に入力されている値を、C列に出力したいような場合に、OFFSET関数を使うと、
下のように、すっきりとした数式でできますが、これをINDEXやINDIRECTで作ろうとすると、なかなか難しいですよね。
同じように、INDEXなら簡単にできる場合、INDIRECTがよい場合などがあるのだと思います。

  [R/C]  [A]  [B]   [C]
   [1]     1   B1  B1-1
   [2]     2    _  B1-2
   [3]     3    _  B1-3
   [4]     1   B4  B4-1
   [5]     2    _  B4-2
   [6]     3    _  B4-3
   [7]     4    _  B4-4
   [8]     5    _  B4-5
   [9]     1   B9  B9-1
  [10]     2    _  B9-2

  C1 =OFFSET(B1,1-A1,0)&"-"&A1 →C1:C10フィルコピー

 (コタ)

 OFFSET関数は組み合わせて使うことが多いですね。

 たとえば電車の運賃の見方を知っていますか?
 縦横に目的地がずらずらっと並び、たとえば東京から横浜までの運賃を探すのに、
 縦から東京を探し、横から横浜を探し、その交点の数字が運賃になりますよね?

 この東京のセルの場所がわかってれば、そのセルを直接指定してあげればいいです。
 でも「今日は東京」「明日は長野」と変わる場合、毎回式の中をいじるのはめんどくさくないですか?
 出発地「東京」、到着地「横浜」とどこかのセルに入力して、エクセルが勝手に毎回運賃を探してくれ れば便利じゃないでしょうか?

 そういうときにOFFSET関数とMATCH関数を使って運賃を探すことができます。
 MATCH関数で出発地と到着地の位置を探し、その位置を使ってOFFSET関数で運賃を探すのです。

 これはINDIRECT関数ではちょっと難しいですよね。だって「東京」を探さないといけませんから。

 こちらのホームページが勉強にオススメですよ。
 よねさんのWordとExcelの小部屋
http://www.eurus.dti.ne.jp/~yoneyama/
 関数一覧表というのがあるので、参考になさってください。

 (すずめ)

 BJさん、コタさん、すずめさん
 ご丁寧な回答を有難うございました!
 色々な使い方があるんですね。
 ネットで文章を読んでいるより、ずっと解りやすかったです。
 よねさんの小部屋でも勉強してみます。
 皆さん、有難うございました。。(勉強中)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.