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

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

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

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

3回答

2081閲覧

VBA 非表示列の値は保持するが集計しない

HISUI

総合スコア22

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2018/05/18 05:02

前提・実現したいこと

●現在、集計マクロを作成しようとしています。

○集計するのは表示されている日付の人数です。

他の日はセルを非表示にしていますが、値を保持しておいて集計には含めないようにしたいと考えています。
関数のSUMTOTALでは私が欲しい値が得られず悩んでいます。

試したこと

まだ作業を始めたばかりなのでソースコードは無いです。
今後、集計日が変わるかもしれないのでVBAが扱えない人でも簡単に修正が出来るようにしたいです。

案1  上記質問のように表示列のみ集計するマクロを作成

案2  表示列は色つきのセルにし、色つきセルだけ集計するマクロを作成

補足情報(FW/ツールのバージョンなど)

使用しているエクセルはExcel2013です。

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

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

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

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

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

sazi

2018/05/18 06:19

どのセルがどのような内容になっているのかのイメージを質問に追記して下さい
guest

回答3

0

自己解決

返事が遅くなり、申し訳ございませんでした。

上司から解決コードを連携していただいたのでそちらを参考に致します。
回答してくださった皆さんありがとうございました。

このソースコードなら来年以降の表示列(集計日)の変更にも対応できるとの事です。

Public Function MG(rng As Range) Application.Volatile '自動再計算 Dim C As Range For Each C In rng If Not C.EntireColumn.Hidden And Not C.EntireRow.Hidden Then MG = MG + C.Value End If Next End Function

追記

上記で回答頂いたSUBTOTAL関数ですが、質問をする前に調べて実際に動かしてみたのですが、非表示列の数値も集計してしまう上にオートフィルタを使わないと非表示列を集計してしまうようなので今回作るツールでは要件が変わってしまうのでSUBTOTAL関数の使用はやめました。

色での取得も出来たのですが上司から非表示列で取得できる方法があると思うからそっちで完成させろと言われたので色での取得はやめました。

投稿2018/05/23 00:19

HISUI

総合スコア22

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

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

0

関数のSUMTOTALでは私が欲しい値が得られず悩んでいます。

SUBTOTALで希望の結果になりませんか。下記参考。

可視セル・見えているセルだけ合計−SUBTOTAL関数:Excel(エクセル)の関数・数式の使い方-数学

ならないなら、具体的なデータ例、希望の結果を提示してください。

案2  表示列は色つきのセルにし、色つきセルだけ集計するマクロを作成

下記の方法ではだめですか。

色付きセルのみを合計する [SumColor]

色付きセルの集計はテーブルで | Excel2010 | 初心者のためのOffice講座

投稿2018/05/18 11:51

hatena19

総合スコア33699

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

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

0

セルと表現されているのでExcel用のVBAだと理解はできました。
しかし、どの様な表を集計したいのかという重要な点について全く想像が付きません。

また、

集計日が変わるかもしれないのでVBAが扱えない人でも簡単に修正が出来るようにしたい

とのことですが、集計日が変わることで何が問題なのか想像できません。
と前置きをした上で、考え方のヒントだけ書かせて頂きます。

VBAで集計プログラムを書くのでしたら。
下記のように表示されている事を判定すれば集計対象に絞り込むことができそうです。

if(Rows(対象の行).Hidden = false) then
end if

if(Columns(対象の列).Hidden = false)then
end if

投稿2018/05/18 05:41

n_takapyon

総合スコア443

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問