[[20250330215157]] 『TTEST関数とOFFSET関数の組み合わせ』(トノトノ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『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 >


素直に要らないセルを消したり整理する
(まじめな人) 2025/03/30(日) 22:41:53

 >データシートの出力の都合上、複数回データを取るとシート上で複数の場所にデータが出るため、
 >特定のセル番地を指定できず、OFFSET関数を使って位置を指定しようとしていました。

 特定のセル番地を指定できない理由が理解できませんが、
 仮に直接セル位置を指定してもエラーになりますか?

(xyz) 2025/03/30(日) 23:45:00


XYZさんありがとうございます。

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.