- ベストアンサー
値が変わるまでの合計を算出したい(Excel)
項目1 項目2 A 10 A 20 B 20 A 20 次の"B"までの合計=30 「項目1」の値が、"A"から"B"に変わるまでの、「項目2」の合計(次の"B"までの合計)を自動で抽出するには、どのような方法があるでしょうか? 出来れば「小計機能」以外での対応を教えていただけると助かります。 離れたセルに結果を算出するような、都合の良い関数とかないでしょうか? 宜しくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
この課題は、結構むつかしい問題と思う。 質問者は、既出の回答で判りましたと言っているようだが、質問者の現在のエクセル力を越えていると思う。そもそも質問の課題の特徴が十分文章で表現で来てない。 Aは第2行、第3行のほかに第5行にも出ているようだし。BもA列で続いた行があれば、その合計を出したいのだろうな。 「A列の連続した行で、同じ値が続いていれば、その同じ値の行のB列合計を出したい」という表現になるのかな。 ーー A列の項目1の値(AやBやC・・)が連続して出現している行の合計を出したいのだろう。 VBAなどでやれば、たやすいが(参考下記)、関数でやると、どこへ答えを持ってくるか (どのセルに関数を入れるか)も含め難しいと思う。 >離れたセルに結果を算出するような ってどういうことかな? >小計機能」以外での対応を教えていただけると助かります こういう注文を付けて、考えられるのは、エクセルのスキルが、中級以上になってからだと思う。いつのことやら。1つのやり方(操作などでも)で、満足すべき。エクセルは基本的にまず、「操作の学び」と思う.関数はその次。 (参考 注) 標準モジュールに Sub test01() s = 0 r = 0 lr = Range("A10000").End(xlUp).Row MsgBox lr '--- For i = 2 To lr If Cells(i - 1, "A") = Cells(i, "A") Then '前行と同じ場合 s = s + Cells(i, "B") 'sに足し込み k = k + 1 '続き件数に+1 Else '上行と変わった場合 If k >= 2 Or i = 1 Then '今までの続き1件は対象外 Cells(i - 1, "C") = s 'sをC列に書き出し End If k = 1 s = 0 s = s + Cells(i, "B") '自身をとりあえず加算 End If Next i End: Cells(i - 1, "C") = s '最終分C列に書き出し End Sub ーー データ例 A列 B列 C列(結果) 項目1 項目2 結果 A 10 A 20 30 B 15 A 5 A 15 A 10 30 C 20 B 25 B 5 30 A 15 ーー C列が結果。
お礼
imogasiさん ありがとうございます。 おっしゃる通り、まだまだExcel初心者です。VBAなんて全然扱えません・・・汗。 いろいろ勉強させていただきます。まずは基本ですね。 頑張ります。
- msMike
- ベストアンサー率20% (364/1804)
[No.2お礼]へのコメント、 「関数の意味」も分らないのに、出来たと欣喜雀躍して戴けるとは望外の仕合せにござりまする。
お礼
いや~、どれだけ考えても、全然検討もつかなかったので、本当にうれしかったです。 もっと関数の勉強いたします・・・汗。 感謝、感謝~☆
- kon555
- ベストアンサー率51% (1842/3559)
if関数でいけますよ。 「項目1」と書かれた表題がA1、「項目2」がB1として、C3セルに『=IF(A3=A2,B3+B2,"!")』と入力し、必要なだけ下にコピーします。 項目1が継続する限り項目2を加算していき、項目1が変化すると「!」が出ます。 あとは条件付き書式なりフィルタなり何なりで対応可能です。
お礼
ありがとうございます。 列の追加が出来ないため、C3セルに追加ができないのですが、ちゃんと算出できました。 参考にさせていただきます。
- sknbsknb2
- ベストアンサー率38% (1158/3030)
AからBに変わるのが1回だけなら方法はありますが、多分そうではないですよね? もう少し条件を詳しく書いていただくのがいいと思います。
お礼
ありがとうございます。 無事、解決することができました。
補足
sknbsknb2さん 返答ありがとうございます。 もう少し条件を追加させていただきます。 ・項目1はA,B,Cの3種類です。 ・最初は必ずAとは限りません。項目1の値が変化するまでの項目2の合計を算出したいです。 ※算出するのは、一番上の行から 項目1が変化するまでの1回の値(合計)だけでいいです。 ・B,Cは含まれない可能性もあります。 かなりややこしい条件になってしまいましたが、ご教授頂けると助かります。 どうぞよろしくお願いいたします。 以上
お礼
ありがとうございます。 完璧です。イメージしていた通りの値を算出することができました。 関数の意味は分かりませんが・・・笑 本当に助かりました。