お世話になっております。
掲題の通り、飛び飛びのセルを計算しているIF条件があります。
具体式は以下
=ARRAYFORMULA(IF($H$9:$H$608=BR8,$G$9:$G$608,"")+IF($K$9:$K$608=BR8,$J$9:$J$608,"")+IF($N$9:$N$608=BR8,$M$9:$M$608,"")+IF($Q$9:$Q$608=BR8,$P$9:$P$608,"")+IF($T$9:$T$608=BR8,$S$9:$S$608,"")+IF($X$9:$X$608=BR8,$W$9:$W$608,"")+IF($AB$9:$AB$608=BR8,$AA$9:$AA$608,"")+IF($AF$9:$AF$608=BR8,$AE$9:$AE$608,"")+IF($AJ$9:$AJ$608=BR8,$AI$9:$AI$608,"")+IF($AN$9:$AN$608=BR8,$AM$9:$AM$608,"")+IF($AR$9:$AR$608=BR8,$AQ$9:$AQ$608,"")+IF($AV$9:$AV$608=BR8,$AU$9:$AU$608,"")+IF($AZ$9:$AZ$608=BR8,$AY$9:$AY$608,"")+IF($BD$9:$BD$608=BR8,$BC$9:$BC$608,"")+IF($BH$9:$BH$608=BR8,$BG$9:$BG$608,"")+IF($BL$9:$BL$608=BR8,$BK$9:$BK$608,"")+IF($BP$9:$BP$608=BR8,$BO$9:$BO$608,""))
【やりたいこと】
以下のようなセルが複数個所にあります。
漢検第1回 漢検第2回 第三回…続く
受験日 受験級 預り金額 受取月
日付 2級 2000円 3月
具体的には検定各種+回数のセルが横並びになっている状態で、受取月(受験日と異なる場合があります)を参照して、預り金を別の受取計算式セルにSUMしたい、といった状態です。
計算自体は上手くいっているのですが、全体シートの重さから考えて、もう少し短い式にしたいです。
このような式をもう少し短くする方法はありませんでしょうか?
有識者の方いらっしゃいましたらよろしくお願いします。
どのあたりの関数を使った方がいいよ~などありましたらヒントをいただけるとこちらでこねくり回せたりするので、関数のヒントだけでも構いません。(具体式だとめんどくさそうなのは明らかなので…)
スプレッドシートの投稿カテゴリがありませんので、エクセルカテゴリで出題させていただいております。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
確認させてください。
各列の項目名は、受験日、受験級、預り金額、受取月の5種類が横方向に隙間なく並んでいると?
列G、列J、列M、… の項目名は何ですか?
列H、列K、列N、… の項目名は何ですか?
セル BR8 のデータは何ですか?
Excel での手法で回答したら、貴方はそれを“スプレ”に応用できますか?
No.2
- 回答日時:
[No.1補足]へのコメント、
「各列の項目名は、受験日、受験級、預り金額、受取月の5種類が横方向に隙間なく並んでいると」として(何故なら私のその問に対する回答なしだったから。ただし、「5種類」は「4種類」の間違いでした)、かつ、「列G」が「預り金」額なら、列記号は此処の添つまり、「列G、列J、列M…の項目名は預り金」と仰ったのはデタラメでしょ?
なのに、提示された式が「計算自体は上手くいっている」のはアリエナーイ筈では?
No.3
- 回答日時:
こんにちは
スプレッドシートの関数は全く知らないのと、今、手元にエクセル環境がないので確認ができませんので、以下アイデアだけの回答になってしまいますが・・・
>第三回…続く
となっている列のセットがいくつあるのか不明ですが、少ない数であるなら、各セット毎の集計を加算するのが簡単そうに思えます。
例えば、最初のセットがA~D列として、D列を条件にC列の和を求めるなら、
SUMPRODUCT((D:D=指定月)*C:C)
のような計算で得られますので、これをセットの数だけ連記して加算すれば良いことになります。
しかし、ご提示の式を見てみると、どうやら同じ考え方の式のようにも思えますので、セット数が多いのでこれを何とかしたいというご質問なのでしょうか?
式を簡単にするだけであれば、上記の式をセット数分(列方向に)一般化することで可能と考えられます。
エクセルの場合でも、配列計算の場合、2次元に対応してくれる関数とそうでないものがあるので、確認しないとどのような関数を選択するのが良いのかはっきりとしないのですが・・・
例えば、対象範囲がA1:P100とするなら
SUM((MOD(COLUMN(D1:P100),4)=0)*(D1:P100=指定月)*C1:O100)
のような式(使用関数は変わるかも知れません)で算出できると思います。
簡単に説明するなら、4の倍数列でかつ指定月と同じセルの左隣の値を合計するという意味です。(条件に合致しないセルの場合は値が0を返す)
これにより、計算式自体はかなり短く簡潔にできるとは思いますが、計算が軽くなるかと言えば、むしろ逆効果となる可能性が高いです。
大抵の場合、式を一般化するほど計算量が増加する傾向にあり、無駄な計算が増加するからです。
計算効率を下げずに、かつ、式を簡略化したいのであれば、エクセルで言うところのユーザ関数的なものを作成して、それを利用する方法があったように思います。(確信がありませんが、できたような記憶があります)
スプレッドシートの制御はjavascriptで可能なはずですので、専用の関数を(効率よく)作成しておいてこれを利用する方式にしておけば、セル内の式も関数呼びだしだけの短い式ですむはずです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- ノートパソコン パソコン(windows11)とICカードリーダ(IC-608)でマイナンバーカードのアクセスをして 2 2023/04/06 13:17
- PHP PHP MySql ページング 2 2022/09/20 06:38
- ノートパソコン パソコン(windows11)とICカードリーダ(IC-608)でマイナンバーカードのアクセスをして 1 2023/04/06 13:26
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- Excel(エクセル) Excelで睡眠時間をもとに判定したい 6 2022/08/19 13:47
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
はがきについて。
-
エクセル 文字を増やしたい。
-
セルの内容表示が邪魔になる
-
Microsoft365に変えたのですが...
-
エクセルの計算
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
Excel ピボットテーブルで日付...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
Excelのチェックボックスの使い...
-
エクセル 白黒印刷で白線を印刷...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの条件付き書式につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報
一緒に考えて下さりありがとうございます。
補足しますと
列G、列J、列M…の項目名は預り金です。受取月で横に足し算をしています。
列H、列K、列N…の項目名は受取月です。(ここを後述のBR8のデータで集計して各月の合計としています)
セルBR8のデータは別テーブルの受取月です。別テーブルがあり、受取月ごとに集計されます。
Excelの手法でも構いません。
もしかしたらスプレッドシートに実装されていない可能性もありますが、試してみる価値はあると思います。
補足が分かりづらいようでしたので再補足です。
受験日(F列) 預り金(G列) 受取月(H列)…
と並んでいるのが5種類、
受験日(U列) 受験級(V列) 預り金(W列) 受取月(X列)…
と並んでいるのが3種×3種類です。
また、各受取月の計算式合計として
3月(BR列) 4月(BS列)……
としてテーブルを用意しています。
計算式用受取月(BR列:3月)を参照してH列などを見に行き、左隣にあるG列などを取ってくるIF文を一つずつ書きました。計算式用受取月と一致しない場合は空欄を返して、それぞれのIF文を足し算しているのが質問に書いた実例の式です。
ですので、うまくいってないのがあり得ない、という回答自体があり得ないのですが…
Excel上では動かない式なのでしょうか?グーグルスプレッドシートでは動いています。
この記事の趣旨は「動くかどうか」ではなく「省略できるかどうか」です。
アイデアありがとうございます!
ExcelでいうところのVBA、スプレッドシートでいうところのGASですね。
私も少しその方面で考えていました。
アイデアをもとにいろいろ弄ってみます!