『TTEST関数とOFFSET関数の組み合わせ』(トノトノ)
データ解析の一環で、すでに生データが存在しているシートに、関数の方をペーストすることで、ttestを行いたいです。
データシートの出力の都合上、複数回データを取るとシート上で複数の場所にデータが出るため、特定のセル番地を指定できすOFFSET関数を使って、位置を指定しようとしていました。
データは例えば、B3からB8まで6つのデータが並んでいて、上下3つずつをTTESTで比較する感じです。
試しに以下の関数をシート上のE3に張り付けることで、3つのデータの合計を出すことができました。
SUM(OFFSET((INDIRECT(ADDRESS(ROW(),COLUMN()))),0,3,3,1))
ただ、以下の関数は#NUM!のエラーが出ます。しかし値が小さすぎるということはなく、答えが1になるようなデータを比較しても#NUM!が出ます。
TTEST((OFFSET((INDIRECT(ADDRESS(ROW(),COLUMN()))),0,3,3,1)),(OFFSET((INDIRECT(ADDRESS(ROW(),COLUMN()))),3,3,3,1)),2,2)
TTEST関数とOFFSET関数の相性が悪いのか、そもそも根本間違っているのか、わかる方居ましたら教えて頂きたいです。よろしくお願いします。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
>データシートの出力の都合上、複数回データを取るとシート上で複数の場所にデータが出るため、 >特定のセル番地を指定できず、OFFSET関数を使って位置を指定しようとしていました。
特定のセル番地を指定できない理由が理解できませんが、 仮に直接セル位置を指定してもエラーになりますか?
(xyz) 2025/03/30(日) 23:45:00
OFFSET使わず、直接指定した場合であれば使えます。
特定のセル番地を指定できないのは、データシートを出力する装置で、データを1回しかとらない場合は、例えばB1からB10までしかデータが出力されないのですが、2回、3回、と連続でデータを取ると、同じB列の下方、例えばB21からb30までデータが出るのですが、測定条件によって、データの群数が異なるので、毎回定位置のセルに出るわけではないので、特定のセルを指定できません。
そのため、先に用意した関数をカットペーストで、そのデータの左3つとか4つ隣のセルに張り付けて解析する、ということをしたいです。
(トノトノ) 2025/03/31(月) 00:01:32
手間がかかるということなら理解できますが、指定できないということが理解できません。 マクロの利用は不可なんですか?
(xyz) 2025/03/31(月) 00:08:55
あとマクロは自分が勉強できていないので使えません。
(トノトノ) 2025/03/31(月) 00:17:51
>データ群がどこに現れても 100行目以内だとして =TTEST(OFFSET(INDEX(1:100,ROW(),COLUMN()),0,3,3,1),OFFSET(INDEX(1:100,ROW(),COLUMN()),3,3,3,1),2,2)
エラーにはならない。 これが求めている答えなのかどうか知らんけど。 (TI) 2025/03/31(月) 00:45:37
INDIRECT("RC",0)で自セル参照。 =TTEST(OFFSET(INDIRECT("RC",0),0,3,3),OFFSET(INDIRECT("RC",0),3,3,3),2,2) (んなっと) 2025/03/31(月) 07:27:54
解決策が出たようですが、一応メモしておきます。
>測定条件によって、データの群数が異なるので、 群数だけの違いなら、相対参照にしておけば単に計算式をコピーするだけで 手間に差はないと思いますが違いますか? 上記の3(データの大きさ)に相当するものがそのつど違うのなら 煩雑になるので、普通はマクロで一括計算でしょうね。 (xyz) 2025/03/31(月) 09:15:46
> エラーにはならない。
TIさんありがとうございます。確かにこれだと参照範囲を変えて対応可能でした!
> INDIRECT("RC",0)で自セル参照。
んなっとさんありがとうございます。こちらでも計算できました!
後学のために質問なのですが、私の式で上手くいっていなかったのは、自セルの参照をR1C1形式ではなくA1形式で行っていたためでしょうか。まだ見ていましたらお答えいただけると幸いです。
>解決策が出たようですが、一応メモしておきます。
xyzさん、引き続きありがとうございます。確かにそうでした。一度貼った式をコピーし直して貼り付ければ対応できますね。単純な所を見落としておりました。
(トノトノ) 2025/03/31(月) 12:33:52
offset関数は揮発性関数 https://thanaism.com/archives/281 (xyz) 2025/03/31(月) 13:27:35
もうご覧になっていないのかも知れませんが、説明を補足しておきます。
揮発性関数を使用すると、その関数で使用していないまったく無関係なセルが変化しても、 再計算が起きてしまいます。 ttest関数を使っているセルはすべて一斉に再計算が起きます。 t検定の値を取得する計算も決して軽い処理ではないでしょうから、 この場合はOffsetを使用するのは避けたほうがよいように思います。
単純な相対参照であれば、関係する親データが実際に変化したときにのみ、その部分の再計算が行われます。
(xyz) 2025/03/31(月) 22:43:47
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.