[[20180906151104]] 『【マクロ】可視セルのみを合計してその結果を行の』(トイレの女神) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『【マクロ】可視セルのみを合計してその結果を行の最下部に入力』(トイレの女神)

こんにちはm(_ _)m
本日連投失礼します。

またマクロでエラーが起こってしまったので
力を貸してもらえると助かります!

 
やりたいこと
・列の最下行に可視セルのみを足し算した結果を入力

エラーになったコード

  Dim dondon As Variant '型もどれにすればよいかわからず、とりあえずVariant型にしました...
  dondon = Cells(Rows.Count, "A").End(xlUp).Row + 1
  Range(dondon) = WorksheetFunction.Subtotal(9, Columns(1))'ここが黄色になります

エラー
・rangeクラスのメソッドは失敗しました globalオブジェクト

シートを指定してあげてないからかと思って
シート指定を頭にRangeのまえにくっつけてみたのですが
エラーになってしまいました。。
どなたかまたお力添えください(;_;)  

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 Rangeでセル指定は
 Range("A1")
 Range("A1:A10")
 のようにセルアドレスを文字列で与えるか
 Range(Cells(1,1),Cells(1,5))
 のように始端セルと終端セルを与えるかになる。

(ねむねむ) 2018/09/06(木) 15:17


 で
 Cells(Rows.Count, "A").End(xlUp).Row + 1
 はA列の最終行の次の行番号(数値)を意味するので
 Range(dondon)
 は
 Range(10)
 のような指定を行っていることになり、エラーとなっている。
(ねむねむ) 2018/09/06(木) 15:19

 そもそも
 Cells(Rows.Count, "A").End(xlUp)
 でA列で最終行のセルを求められるのでその下のセルは
 Cells(Rows.Count, "A").End(xlUp).Offset(1,0)
 となるのでここに 
 WorksheetFunction.Subtotal(9, Columns(1))
 を代入すればいい。
(ねむねむ) 2018/09/06(木) 15:22

これだと非表示セルも足し算しますよね、、
(TAKA) 2018/09/06(木) 15:43

ねむねむさんの言うとおり一行で済みますね。
可視セルのみの足し算です。参考にしてください。

 Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) = _
 WorksheetFunction.Subtotal(9, Columns(1).SpecialCells(xlCellTypeVisible))

(TAKA) 2018/09/06(木) 15:46


 非表示行というのがオートフィルタで非表示になっているのであればこれでOK。
 もし、オートフィルタではなく行を非表示にした場合も計算対象外にする場合は
 >Subtotal(9, Columns(1))
 の9を109に。

(ねむねむ) 2018/09/06(木) 15:48


 これでOKというのはもともとの
 WorksheetFunction.Subtotal(9, Columns(1))
 で。
(ねむねむ) 2018/09/06(木) 15:54

ねむねむさん TAKAさん
回答ありがとうございます!!

なんだか理解がいまいち追いついてないですが
まとめると
Cells(Rows.Count, "A").End(xlUp).Offset(1,0) = WorksheetFunction.Subtotal(9, Columns(1))
こんな感じですかね!!
エラー出なくなりました!ありがとうございます(^O^)

実はお察しいただいている通り、
直前に手動でオートフィルタをかけてまして、、、
実データがA列はA1641まで入っているので
マクロを使うとA1642に数を入れてくれるようになりましたが
オートフィルタがかかっている状態だと
可視セルが4709行目になっていたので4710行目に合計が入るように調整してあげたいです...
(変動するかもしれないので常に可視出来ているA列の最下セルにデータが入ると助かります!!)
なにかいい方法はないでしょうか??
(トイレの女神) 2018/09/06(木) 16:08


あ、オートフィルタなんですね。
オートフィルタのとこまで手動なら、
A列選択 して、 Ctrl + ↓ して、 最終行の一つ下のセルを選択して オートサム
まで手動でやっても大した手間じゃないと思いますけど、どうなんでしょう。。
(TAKA) 2018/09/06(木) 16:16

ちなみに一回でも↑の作業をやれば
 =SUBTOTAL(9,A2:A4709)
の式が入るので次からはフィルタをかけるだけで合計もかわります。
(TAKA) 2018/09/06(木) 16:21

TAKAさん

おはようございます☀

実はこのあとオートフィルタもマクロ化する予定でして、、、

一旦、結果をメッセージボックスで出して、
手動でコピペすることにしましたm(_ _)m

ありがとうございました♪
(トイレの女神) 2018/09/07(金) 10:04


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.