情報:IT
高校生
解決済み

質問です。
=RANK(SUM(D31:H31),(SUM(D$5:H$5),SUM(D$6:H$6),SUM(D$7:H$7),SUM(D$8:H$8),SUM(D$9:$H9),SUM(D$10:H$10),SUM(D$11:H$11),SUM(D$12:H$12),SUM(D$13:H$13),SUM(D$14:H$14),SUM(D$15:H$15),SUM(D$16:H$16),SUM(D$17:H$17),SUM(D$18:H$18),SUM(D$19:H$19),SUM(D$20:H$20),SUM(D$21:H$21),SUM(D$22:H$22),SUM(D$23:H$23),SUM(D$24:H$24),SUM(D$25:H$25),SUM(D$26:H$26),SUM(D$27:H$27),SUM(D$28:H$28),SUM(D$29:H$29),SUM(D$30:H$30),SUM(D$31:H$31),SUM(D$32:H$32),SUM(D$33:H$33),SUM(D$34:H$34),SUM(D$35:H$35),SUM(D$36:H$36),SUM(D$37:H$37),SUM(D$38:H$38),SUM(D$39:H$39),SUM(D$40:H$40),SUM(D$41:H$41),SUM(D$42:H$42),SUM(D$43:H$43),SUM(D$44:H$44)),0)
この式がエラーになる理由を教えて欲しいです!!
長くてごめんなさい(^^)

回答

✨ ベストアンサー ✨

=RANK(数値,参照,順序)なので、「,」で区切るとSUM(D$7:H$7),以降が何を示しているのかがわからないのでエラーが発生しています。

ニック

3日ほど前に質問されていた問題の続きかと思いますが、合計欄がないと厳しいのではと思います。

りーたん😎

そうですか~。
難しいですね。
コメントありがとうございました😆

りーたん😎

ちょっとだけ良いですか?
このSUM関数を&で繋げたらどうなりますか??

質問魔

割り込み失礼です!やってみましたが&で繋げてもダメですね。範囲扱いにならないのだと思います。

ニック

詳しい人に聞いてみたところ写真のようにすると、できるよと言われました。

質問魔

(・д・。)はぇー・・・すげぇ。思いつきもせんかった。

質問魔

参りました/(;-_-)奥が深いですな。

りーたん😎

ありがとうございます!!
すごいです😆
ニックさん、ありがとうございました!!!

りーたん😎

そして、質問魔さん、本当に本当にありがとうございました😆

ニック

どのような数式が入っていますか?

ニック

あとは、優と良はif文でいけると思います。

ニック

これの場合ですと、
=ROWS(D$5:D$44)-COUNT(1/(D$5:D$44+ E$5:E$44+ F$5:F$44+G$5:G$44+ H$5:H$44<D5+E5+F5+G5+H5))
になると思います。

りーたん😎

同じようにしてやってみたのですが、全部40になってしまって、、

りーたん😎

たぶん、同じだと思うのですが、、、

ニック

最終的には、

=IF(ROWS(D$5:D$15)-COUNT(1/($D$5:$D$15+$E$5:$E$15+$F$5:$F$15+$G$5:$G$15+$H$5:$H$15<D5+E5+F5+G5+H5))<=5,"優",IF(ROWS(D$5:D$15)-COUNT(1/($D$5:$D$15+$E$5:$E$15+$F$5:$F$15+$G$5:$G$15+$H$5:$H$15<D5+E5+F5+G5+H5))<=10,"良",ROWS(D$5:D$15)-COUNT(1/($D$5:$D$15+$E$5:$E$15+$F$5:$F$15+$G$5:$G$15+$H$5:$H$15<D5+E5+F5+G5+H5))))

ただし、15のところを44に変えて下さい

りーたん😎

=IF(ROWS(D$5:D$44)-COUNT(1/(D$5:D$44+E$5:E$44+F$5:F$44+G$5:G$44+H$5:H$44<D5+E5+F5+G5+H5))<=5,"優",IF(ROWS(D$5:D$44)-COUNT(1/(D$5:D$44+E$5:E$44+F$5:F$44+G$5:G$44+H$5:H$44<D5+E5+F5+G5+H5))<=10,"良",ROWS(D$5:D$44)-COUNT(1/(D$5:D$44+E$5:E$44+F$5:F$44+G$5:G$44+H$5:H$44<D5+E5+F5+G5+H5)))
間違ってますか??
何故かエラーが起きてしまって。

りーたん😎

)が足りなかったみたいです。
でも、やっぱりオートフィルすると全部40になってしまうのですが、、

りーたん😎

ニックさんの式をコピーして、数字だけ変えても、全部40になってしまいました(^^)
画像だと出来てるのに、できないってどういうことなんですかね、、、

ニック

同じ数字(打ち間違えをしてなければ)をいれてみたのですが、特に問題なく動作しました。

ニック

また、送ってもらった式を当てはめてみても、同様に問題なく動作しました。
ですので、もう一度打ち直して頂くか、写真を送ってもらえませんか?

りーたん😎

何度やっても何故か全部40になります(^^)
どうなってるんですかね...

ニック

なぜ40になるのかがわかりませんが、こちらで確認する分には問題が起きないのでなんとも言えないです。
判定のセルをダブルクリックして、セルに色がついた状態での写真を見せてもらえますか?

質問魔

あんまり変わらないと思いますがニックさんが判定の前に出席番号有りの状態で打ってみては?(学籍番号も含め)
出席番号が関係してるんですかね?
それとニックさんの判定の比較をしているセルの書式を写真で送って貰えばなにか気づくことがあるかもしれませんね…(部外者がすみません。どうしても自分もこの問題は解決したい派なので)

質問魔

出席番号は無論学籍番号から求める感じで。

質問魔

それか相対参照ではなく絶対参照で試してみるとかはいかがですか?

りーたん😎

コメントありがとうございます!!
嬉しいです😆
何処を絶対参照するんですか?

ニック

こうなるかなと思っていたのですが、スマホ版ではならないんですね。

りーたん😎

んー。
パソコンでもスマホでも、同じようにならないんですかね、、

ニック

>質問魔さん
仮に、出席番号ありの場合でも関数の中にはセルを参照していないので関係はないと思います。
絶対参照に変えても特に変わりませんでした。

ニック

タブレットでためした感じでは、できました。

りーたん😎

どういうことなんですかね(^^)

りーたん😎

間違ってないかまた確認してみたんですが、やっぱり同じなんですよね、

ニック

パソコンでエクセルは開けませんか?
もし開けるようであれば、パソコンでのみできる操作をしていただきたいので、、、

りーたん😎

パソコン持って無いです!!
でも、もしかしたら、月曜日なら学校でChromeBookを貸してくれるかもです。
ただ、月曜日が終わると高校が中学生の試験の関係で休みになってしまうので、先生たちが忙しくて、ChromeBookを貸してくれない可能性もなくはないです。

質問魔

たぶんまた関係ないとは思うんですけど、1回りーたんさんに学籍番号を元に昇順に直してもらったんですよ。また何故かバラバラの形になってますが…もしかしたらそれが関係してるんですかね?

りーたん😎

あ、ごめんなさい!!
色々試して考えてるうちに、戻るボタンとか押してて戻ってました!

質問魔

あっじゃあ。関係ないですか…ちょっと明日出来ればGoogleスプレッドシートでやってみます。

りーたん😎

ありがとうございます☺️

りーたん😎

私も、また何回でも試してみます。

ニック

パソコンは使えないのですね。
わかりました

質問魔

りーたんさん、どうしても出来なければ新しいシートを作成し、数値のみコピーし項目名や問題は手打ち出席番号の欄は空欄にしつつ先に順位を作成するのはどうでしょうか?

質問魔

僕のせいで色々いじったせいで上手く作成できないということも考慮し順位を作って完成したら出席番号を作成してみては?と思いまして。数値のみな理由は書式を貼り付けてしまうと元も子もないからです。

りーたん😎

今、やってみたんですけど、
やっぱり40に全部なってしまいました、、、
本当にどうなってるんですかね(^^)

りーたん😎

もし、半角になってないとかだったら、エラーになるはずですもんね。

質問魔

E5の数値がそもそも18にならない時点でおかしいですもんね…fxを使ってるなら手打ちでやって見るとか逆に手打ちならfxを使ってもダメですもんね…

質問魔

そもそもこれって課題ですか?

りーたん😎

はい!
課題なんですよ...(^^)

りーたん😎

この式がどういう意味か分かりますか??
例えば、SUM(D5:D12)だったらD5からD12までの合計、IF(...だったら、もし...なら みたいに、日本語訳するようにしてみたら何か分かることがあるのかなと思って。

りーたん😎

私、この式がどんなふうに求めているのか意味が分からずに式をセルに入力していたもので、、、

ニック

どう説明していいのかがわからないですが
rows()の部分で、行数を求めて
count()の部分で、五行目の5列分を合計した値が他の数値との大小でtrueと falseになり、trueの数がもとまり、行から引くことで、順位が求まります。

りーたん😎

説明ありがとうございます!
なんとなくわかった気がしました。ただ、COUNT(1/の意味が分からないです。教えて頂けたら嬉しいです☺️

ニック

後から思ったのですが、
=COUNT(1/($D$5:$D$44+$E$5:$E$44+$F$5:$F$44+$G$5:$G$44+$H$5:$H$44>=SUM(D5:H5)))
でもいけるかもしれません

ニック

1で割っているのは、trueは1falseは0として扱われるので、1/0でエラーを起こすのと、1/1で1で区別するためです

ニック

やっぱりそこが0になってるんですね。
ちなみに、さっきの不等号の向きを変えた数式ではどうですか

ニック

ちなみに、
=$D$5:$D$44+$E$5:$E$44+$F$5:$F$44+$G$5:$G$44+$H$5:$H$44<D5+E5+F5+G5+H5
を入れると、どうなりますか?

りーたん😎

さっきの式で不等号の向きを変えても、何故か全部0でした(^^)
その後の式をセルに入力してみたところ、全部FALSEになりました!

ニック

falseに全部なっているので、ここの式の部分が上手く機能してないみたいですね。
ただ、なぜ機能してないのかはわからないです

りーたん😎

自分で分かってるのかよくわからないですが、調べてみたところ、もしかしたらFALSEになるのは偽の時の値が決まってないから かもしれないです。

りーたん😎

そうだとしたら、全てFALSEになるということは、全てD5+E5+F5+G5+H5とかD6+E6+F6+G6+H6の値が$D$5:$D$44+$E$5:$E$44+$F$5:$F$44+$G$5:$G$44+$H$5:$H$44より小さい ということになってるかもです。

ニック

そういうことなんですが、trueとfalseが混ざるはずなのですがねぇ

ちなみに,エクセルですよね??googlespreadsheetではないですよね??

よければ、模範解答が出たときは教えてください。

りーたん😎

私が今使っているのはGoogleスプレッドシートです!! 何か、Excelとは違ったりしますか??
はい! もちろんです☺️
模範解答が出たら絶対教えます!!
こんなに一緒に考えていただいたのですから。

ニック

スプレッドシートは使ったことがないですが、関数とかは結構違うと思いますよ。

ニック

スプレッドシートで試してみたら、全部40になりました。

りーたん😎

学校で使っているのも、たぶんスプレッドシートの方です、、、

りーたん😎

ほんとにごめんなさい!!
申し訳ないのですが、最初の方に出てきた「詳しい人」に、スプレッドシートで出来る方法を聞くことは出来たりしますか??
ほんとにごめんなさい。

ニック

=ARRAY_CONSTRAIN(ARRAYFORMULA(IF(ROWS(D$5:D$44)-COUNT(1/($D$5:$D$44+$E$5:$E$44+$F$5:$F$44+$G$5:$G$44+$H$5:$H$44<D5+E5+F5+G5+H5))<=5,"優",IF(ROWS(D$5:D$44)-COUNT(1/($D$5:$D$44+$E$5:$E$44+$F$5:$F$44+$G$5:$G$44+$H$5:$H$44<D5+E5+F5+G5+H5))<=10,"良",ROWS(D$5:D$44)-COUNT(1/($D$5:$D$44+$E$5:$E$44+$F$5:$F$44+$G$5:$G$44+$H$5:$H$44<D5+E5+F5+G5+H5))))), 1, 1)

これだとどうですか?
エクセルからスプレッドシートに変換した際に出てきた式なので、上手くできるかわからないですが。

ニック

聞いてみますね。

りーたん😎

ありがとうございます!!
できれば、簡単な関数で出来たらいいのですが。
もしかしたら先生に、これどうやったらこの式出てきたの??
と言われたとき答えられるようにしたくて。
何度もほんとにごめんなさい(^^)

りーたん😎

ちなみに、さっきの式で出来ました😆
でもARRAYとかの関数を習ってなくて、、、
この関数を選んだ理由が説明出来ない気がします。
でも、何だか少し可能性が出てきて、嬉しいです。
ありがとうございます😆

ニック

聞いてみましたが、スプレッドシートはわからないって言われました。
情報の授業ですか?この宿題が出る前のあたりではどのような関数を習いましたか?

りーたん😎

SUM、AVERAGE、COUNT、RANK、IF、MINMAX、HLOOKUP、VLOOKUPとかです!
あとはこの上の関数のAがついたり、Sがついたりするものとかです。
はい!! 情報の授業です☺️

ニック

その辺りの関数でできないか考えてみましたがよくわかりませんでした。

今回は、配列数式という方法を使っているみたいなのですが、それをスプレッドシートで使うにはarrayfomulaがいるみたいですね。
なので、現状で出せる一番省略できる解答は、

=ARRAYFORMULA(IF(COUNT(1/($D$5:$D$44+$E$5:$E$44+$F$5:$F$44+$G$5:$G$44+$H$5:$H$44>=SUM(D5:H5)))<=5,"優",IF(COUNT(1/($D$5:$D$44+$E$5:$E$44+$F$5:$F$44+$G$5:$G$44+$H$5:$H$44>=SUM(D5:H5)))<=10,"良",COUNT(1/($D$5:$D$44+$E$5:$E$44+$F$5:$F$44+$G$5:$G$44+$H$5:$H$44>=SUM(D5:H5))))))
です。

同じような練習問題もないですか??
何か難しく考えすぎている気がしているので、、、

りーたん😎

そうですね、、同じような練習問題は無いです。
でも、私もそう思うんですよね、
何か難しく考えている気がするんですよね(^^)
そもそも、知らない関数を使わせる問題を出すような気がしないんですよね、、、

りーたん😎

ちなみに、さっきの式は、ROWS関数がなくなってますが、どうやって答えを求めているのか分かりますか??

ニック

前との違いは
・D5+E5+F5+G5+H5をSUM(D5:H5)に置き換えた
・countの関数の中の不等号の向きを逆向きにした
点ですね

あまり大きくは変わらないですが、
SUM(D5:H5)がそれぞれの横列の合計の式がtrueかfalseで trueの場合は1、falseは0になり、1の数が何個あるかをカウントすることで順位を求めています。

ニック

不等号の向きを変えることで、後ろから何番目に小さいかを求めて、そこに何人いるか(rows関数)から引くという部分を短縮しました。

りーたん😎

そうなのですね!
分かりやすいです☺️
ありがとうございます。

りーたん😎

そういえばなんですが、答え合わせが2/28以降なので、
模範解答が教えられるのが遅くなってしまうのですが、大丈夫ですか??

ニック

大丈夫ですよ

りーたん😎

なんか答え合わせみたいなのがないらしく、、
模範解答、分からなかったです、、、
ごめんなさい。
これまでのニックさんがしてくださった解答、
もう、本当に感謝しかないです
ありがとうございました😆

この回答にコメントする

回答

エクセルのRANK関数ですか?
もしそうだとすると第二引数には範囲を入力するはずなので、SUM関数で数値を入力するとエラーになると思います。

りーたん😎

コメントありがとうございます☺️
そうですね、、、
この式がエラーにならないように
変えるには、どうすれば良いのか分かりますか?

この回答にコメントする
疑問は解決しましたか?