プロが教える店舗&オフィスのセキュリティ対策術

先日同じ質問をし、回答をいただき助かったのですが、
違うパターンが出てきてしまったので、分かる方にご教授いただきたいと思います。
添付のエクセルで、黄色の部分に、りんご・みかん・バナナのそれぞれのTotal数を入れたいのですが、たまに人が増えるため、行の挿入がある場合があります。(例:りんごで人が1人増え9行目に1行挿入される・・など)
なので、Sumの対象行を計算時に認識してからTotalを出してほしいと思います。
やり方は何でもいいです。(たとえばD列は計算対象に「*」を入れているので、「*」の次の空白までを認識して、G列で計算するなど・・)
どなたか是非教えてください。ソースをいただければ細かい説明はいただかなくても大丈夫です。
どうかよろしくお願いいたします。

「EXCELマクロを使い、空白行ではさまれ」の質問画像

A 回答 (3件)

#2です。

補足抜けました
SpecialCellsは前回回答されていますので使わないべたコードを書きましたが
ママチャリ様の回答のアドレス数値を変更すれば、簡単に出来ると思いますよ
もっとも、*が入っていなければ数値が有っても計算しないなんて言わなければ、ですけれど。
    • good
    • 0
この回答へのお礼

>*が入っていなければ数値が有っても計算しないなんて言わなければ、ですけれど。
こちら大丈夫です。色々私も試行錯誤している最中だったので、*を入れた方が分かりやすいかと念のため入れていました。

お礼日時:2021/07/26 18:17

こんにちは


前回のご質問、閉じられていないようなので 前回のご質問に補足質問するか、閉じられるか、した方がよろしいと思います。
2度目のご質問のようなので、そのあたりは、確認してくださいね。

前回 https://oshiete.goo.ne.jp/qa/12471561.html
で、コードが欲しいのと短いコードが良さそうなので 下記を記しますが、
コードの処理内容などはご自身で理解するようにしてください。
少し変わると又質問、を繰り返すと良くないと思いますので、、

ご質問の場合、数値の行に空白が出来た時に困っていると言う事でしょうか?
りんご、みかん、バナナ C列の値を頼りに処理すれば良いのではないかと思います。

掲示画像でのサンプルです
Sub sample()
Dim r As Range, st_r As Range, ed_r As Range
Dim i As Long
Set st_r = Range("C6")
For i = 1 To Application.CountIf(Range("C6", Cells(Rows.Count, "C").End(xlUp)), "<>")
Set ed_r = st_r.End(xlDown).Offset(-1)
st_r.Offset(, 4) = " 計(" & Application.Sum(Range(st_r.Offset(1, 4), ed_r.Offset(, 4))) & ")"
Set st_r = ed_r.Offset(1)
Next
End Sub
    • good
    • 0
この回答へのお礼

Qchan1962さん、前回に引き続きありがとうございました!教えてGooを前回初めて使ったので、使い方が良くわからず、わかりにくい質問になってしまいましたが、答えていただいて助かりました!

お礼日時:2021/07/26 18:17

こんにちは



>回答をいただき助かったのですが、
>違うパターンが出てきてしまったので、~~
前の回答がどのようなものなのか不明だし、修正が出るたびに人頼みというのもどうしたものかと思いますので・・・


ご質問の直接の回答にはなりませんけれど、関数で行う方法をご参考までに以下に。
(まぁ、関数だから修正できるってもんでもないかも知れませんが…)

>やり方は何でもいいです。(たとえばD列は計算対象に「*」を入れて
>いるので、「*」の次の空白までを認識して、G列で計算するなど・・)
とのことなので、その通りの計算方法にしてあります。
ご提示のレイアウトで、G6セルに
=SUM(OFFSET(G6,1,,AGGREGATE(15,6,ROW($A$1:$A$99)/(OFFSET(D6,1,,99)=""),1)-1))
の式を入力します。
G6セルをコピーして、G9、G14セルなどにペーストすれば、ご質問の結果になりますけれど・・・
    • good
    • 0
この回答へのお礼

ありがとうございます。教えてGooの使い方をきちんと把握していなかったため、前回の質問に追加すればいいという事を知らずわかりにくい質問になっておりました。失礼いたしました。

お礼日時:2021/07/26 18:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!