teratail header banner
teratail header banner
質問するログイン新規登録

質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

377閲覧

スプレッドシートのシート関数で特定の累計を計算したい

Oni_hiro

総合スコア5

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

2クリップ

投稿2024/07/26 11:10

編集2024/07/30 00:10

0

2

実現したいこと

「按分率累計」列の数字が100になるたびに、それまでの按分粗利の合計を出したいです。
100以外の箇所は空白にします。
ただし、2回目の100の時の累計は、一回目の100が登場した時の累計(=41,200)を差し引きます。
それを繰り返す処理を行いたいです。

イメージ説明

発生している問題・分からないこと

累計は出せるのですが、その上までの累計を差し引いて表現する方法がわかりません。

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

イメージ説明
累計の差し引きでなくても、回答としてChatGPTで出したH列のような結果が得られればやり方は問いません。

下記の計算式では希望の結果は得られませんでした。

H2セルの数式(H列の最初のセル):
=IF(F2=100, SUM(FILTER(G$2:G2, ROW(G$2:G2) <= ROW())) - SUM(FILTER(G$2:G2, F$2:F2 = 100)), "")

H3セル以降の数式:
=IF(F3=100, SUM(FILTER(G$2:G3, ROW(G$2:G3) <= ROW())) - SUM(FILTER(G$2:G2, F$2:F2 = 100)), "")

補足

質問内容を補足します

要望としては、取引先のプロジェクト別の累計(合計?)を出したいです。

下の画像(※上記の詳細・結果に掲載した画像)では、取引先Aの売上が20万円となっていますが、実際には取引先別のプロジェクトは一個ではなく、複数あります。

例えば、
取引先A プロジェクト甲 200,000円 担当社員:佐藤、鈴木、山本、加藤(※按分率=20:30:25:25) 
取引先A プロジェクト乙 100,000円 担当社員:田中、山田(50:50)
取引先A プロジェクト丙  50,000円 担当社員:佐藤(100)

ここで分かっているのは、
①取引先Aのプロジェクト合計額が350,000円であること
②各プロジェクトでの担当社員の売上金額と比率

つまり、200,000円、100,000円、 50,000円という各プロジェクトの売上が判明していないという前提です。

なので、比率の合計が100になるごとに累計を出す=プロジェクト別の売上を表示したいと思いました

当然、担当者の比率と売上がわかっているので、手動で計算すればいいだけなのですが、取引先数が膨大なので、自動でできないかと考えた次第です。

素人考えでやろうとしているので、なにかもっとシンプルな方法に心当たりなどございましたらご助言いただけますと幸いです。よろしくお願いいたします。


~~いただいたコメントで希望にかなり近いものができました。【2024-07-29 追加添付】
~~


私が回答を理解できていませんでした。今確認したら上手く機能しました。失礼しました。【2024-07-30 追加添付】

※「プロジェクト売上」の列(=D8セル)に下記を入力しています

=IF(B8<>100,"",SUM(offset(C8,1-MATCH(100,SORT(B$2:B7,ROW(B$2:B7),0),0),0):C8))

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YellowGreen

2024/07/28 02:54

ご質問の意図がよくわかりませんが、 G列の値が、D列の金額に対する100分のE列の値で求まるのであれば、 H列には、=IF(F列の値=100, D列の値, "")としておけば、ご提示の画像のような結果になりますが、 おそらくそれを望んでいるのではないのでしょうね。
Oni_hiro

2024/07/29 00:11 編集

YellowGreen様 ご回答ありがとうございます。質問の意図がわかりずらく申し訳ないです。 要望としては、取引先のプロジェクト別の累計(合計?)を出したいです。 下の画像(※上記の詳細・結果に掲載した画像)では、取引先Aの売上が20万円となっていますが、実際には取引先別のプロジェクトは一個ではなく、複数あります。 例えば、 取引先A プロジェクト甲 200,000円 担当社員:佐藤、鈴木、山本、加藤(※按分率=20:30:25:25)  取引先A プロジェクト乙 100,000円 担当社員:田中、山田(50:50) 取引先A プロジェクト丙  50,000円 担当社員:佐藤(100) ここで分かっているのは、 ①取引先Aのプロジェクト合計額が350,000円であること ②各プロジェクトでの担当社員の売上金額と比率 つまり、200,000円、100,000円、 50,000円という各プロジェクトの売上が判明していないという前提です。 なので、比率の合計が100になるごとに累計を出す=プロジェクト別の売上を表示したいと思いました 当然、担当者の比率と売上がわかっているので、手動で計算すればいいだけなのですが、取引先数が膨大なので、自動でできないかと考えた次第です。 素人考えでやろうとしているので、なにかもっとシンプルな方法に心当たりなどございましたらご助言いただけますと幸いです。よろしくお願いいたします。
YellowGreen

2024/07/29 09:44

前回までの累計額を控除するのではなく、 それ以降の累計を計算する数式ですが、 最初の100の行まではこの式は使えません F列で100の行があったら、 その前の100の行を探索して、 その次の行以降のG列の合計額を計算する式です 例えば10行目の数式 それ以降の行にはコピペしてください =IF(F10<>100,"",SUM(offset(G10,1-MATCH(100,SORT(F$1:F9,ROW(F$1:F9),0),0),0):G10))
Oni_hiro

2024/07/29 11:06 編集

YellowGreen様 ご回答ありがとうございます。 いただいた式は細かいところまでは理解できませんでしたが、補助列を使ってズレた行の分を下げてコピペをすると希望通りのものができました。 これは式の関係上、赤字の100の横に最初から(=補助列①に)集計結果を表示することは難しいのですよね? ともあれ、完全に行き詰っていたところを助けていただきまして、ありがとうございました。 明日、改めて回答を整理し、ベストアンサーとさせていただこうと思います。感謝です。 結果は画像を添付しております。
codemaker

2024/07/29 20:55 編集

もう少し丁寧に説明しないと伝わらないのでは? > 補助列を使ってズレた行の分を下げてコピペをすると希望通りのものができました。 なにがどうずれているのか説明がないとわからないと思います 補助列①は何のために必要なのか 説明を加えてみてください
YellowGreen

2024/07/29 23:29

お示しした数式は、10行目に記入することを前提にしたもので、 ほかの行にはオートフィルやセルからのコピーアンドペーストで 行番号が正確に変化することを前提としています。(行番号が変わらないのはF$1だけです) 式を移植する際にどこか間違えていませんでしょうか?
Oni_hiro

2024/07/30 00:14

>atlanticSalmon様 ご指摘ありがとうございます。 おかげで正しい結果が得られました。 【2024-07-30 追加添付】で上手く伝われば幸いです。 >YellowGreen様 私の理解不足でご迷惑をおかけしました。 おかげさまで希望通りの機能が実装できました。 この後ベストアンサーを設定したいと思いますので、 コメントのコピペでも構いませんので、お手すきで回答をいただくことは可能でしょうか? どうぞよろしくお願いいたします。
YellowGreen

2024/07/30 03:19

解決されたのであればよかったです。 プログラミングに関する質問ではなかったので、 コメントだけで済ませておりました GASではなく数式での対応なので データ数が多いとシートが重くならないかと心配しておりました 自己解決として閉じていただけたらと思います
Oni_hiro

2024/07/30 03:23

ご丁寧にありがとうございました。 それでは、自己解決としてクローズさせていただきます。大変助かりました。
guest

回答1

0

自己解決

実行結果は追記画像を参照ください。

=IF(B8<>100,"",SUM(offset(C8,1-MATCH(100,SORT(B$2:B7,ROW(B$2:B7),0),0),0):C8))

投稿2024/07/30 03:24

Oni_hiro

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問