パソコンから恋愛まで、みんなの知識、みんなで教えて!

OKWave

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

範囲内で対となった数字を検索して場所を特定し計算

恐れ入ります、グーグルスプレッドシートで指示した範囲で対となった数字を検索して場所を特定し計算することは可能でしょうか。
自分で解決しようと調べてみたのですが、複雑すぎて今の自分では解決できないと思いましてご相談させて頂きました。

具体的には、同じシート内で
A群のM2:U3(9列2行)の間に「3」という数字がどこかにいくつかあります(A群の中には3以外の数字もあります)。
B群のD2:L3(9列2行)の間にはいろいろな数字があります。

A群とB群の位置は対の関係にあります。
(M2とD2は、U3とL3の対象関係です。)

A群で「3」があるセル(複数)を検索して位置と個数を調べて、
B群で対となる場所の数字を足して、個数で割るという計算がしたいです。


参照イメージの場合、
「3」を検索してP2,S2,O3,R3に4つあることが分かります。
対の関係にある、G2,J2,F3,I3にある数字を足して4(3が4つあったので)で割りたいです。
(G2,J2,F3,I3)/4
参照イメージの例の場合、最後に2.75という数字が出ると思います。

こういった範囲内で対となった数字を検索して場所を特定し、計算するような複雑な計算はグーグルのスプレッドシートではできるものでしょうか。

投稿日時 - 2018-02-19 15:55:41

QNo.9430612

困ってます

質問者が選んだベストアンサー

赤で塗りつぶされてよく見えませんでしたが、もしかしてF3に入っているのは「2」?
ならこんな感じで2.75が計算できます。
=SUMPRODUCT(D2:L3*(M2:U3=3))/COUNTIF(M2:U3,3)

投稿日時 - 2018-02-19 17:37:05

お礼

mt2015さま

いつも大変お世話になっております。
まさに私がしたいことがこの式に凝縮されておりました。
おっしゃるとおりF3に入っているのは「2」です。
見えづらく大変申し訳ありませんでした。
こんなに素早く回答くださり、本当にありがとうございました!
めぐみ

投稿日時 - 2018-02-19 18:06:14

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

Google Apps Scriptで計算すればどうですか?
function mySumFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var GroupA = sheet.getRange("M2:U3");
var GroupB = sheet.getRange("D2:L3");
var nr = GroupA.getNumRows();
var nc = GroupA.getNumColumns();
var vGroupA = GroupA.getValues();
var vGroupB = GroupB.getValues();
var sum = 0;
var num = 0;
for(var i=0;i<nr;i++)
for(var j=0;j<nc;j++)
{
{
if (vGroupA[i][j] == 3) {
sum += (vGroupB[i][j]+0);
num += 1;
}
}
}
sheet.getRange("D4").setValue(sum);
sheet.getRange("D5").setValue(num);
sheet.getRange("D6").setValue(sum/num);
}

投稿日時 - 2018-02-19 17:24:43

ANo.1

3を4つ足してそれを4で割ると3です。
(3+3+3+3)/4=12/4=3

2.75にしたいと言うことは何か致命的な説明不足がありませんか?

投稿日時 - 2018-02-19 16:31:24