[[20060608113546]] 『非表示の列は計算されないようにしたい』(MG) ページの最後に飛ぶ

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

 

『非表示の列は計算されないようにしたい』(MG)
合計式の範囲に入っている列で、非表示にしている列の数字は反映されないようにしないのですが、どのようにすればいいでしょうか??

 =SUBTOTAL(109,範囲)
ではいかがですか?
(ROUGE)

さっそく行ってみましたが、行には反応しても列には反応されないような感じです。。

 行の非表示にしか対応していないようです。

 非表示でさらに合計もしないのであってもその列は必要なのでしょうか?他に使っているのでしょうか?
 もしかして、動的に列の表示非表示ということでしょうか。
 (やっちん)

 SUBTOTALって列方向には利かないんですなぁ。
そんなんで、ユーザー定義関数を作ってしまいました。
【使い方】
1)Alt+F11でVBEを起動
2)挿入→標準モジュール
3)下のコードを貼り付け
4)×でVBE画面を閉じる
5)=mg(範囲)
といった塩梅で式を入力してやります。
'----
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
(ROUGE)

ありがとうございます。さっそく試しましたが、またまた列には反応しないようです。。

え〜っ?
 そんな訳おまへんけどなぁ?
 あ、、、列を非表示にした段階では再計算されまへんので、F9を押して欲しいんですワ。
 これでしたいことはできますやろ?
 (ROUGE)

すごいです!出来ました!今日から使いたいと思います。ありがとうござました。

 ちなみに行には即座に反応しまっせ。
(ROUGE)

 SUBTOTALが列に非対応ということで、こんなもの作ってみました。
どうでしょうか?
'----
Public Function Sabutotal(cN As Integer, rng As Range)
Application.Volatile
Dim C As Range
Dim mA As Variant
ReDim mA(0)
If cN > 100 Then
    For Each C In rng
        If Not C.EntireColumn.Hidden And Not C.EntireRow.Hidden And _
        Not C.Formula Like "=Sabutotal(*" Then
            ReDim Preserve mA(UBound(mA) + 1)
            mA(UBound(mA)) = C.Value
        End If
    Next
Else
    For Each C In rng
        If Not C.Formula Like "=Sabutotal(*" Then
            ReDim Preserve mA(UBound(mA) + 1)
            mA(UBound(mA)) = C.Value
        End If
    Next
End If
Select Case cN
Case 1, 101: Sabutotal = Application.WorksheetFunction.Average(mA)
Case 2, 102: Sabutotal = Application.WorksheetFunction.Count(mA)
Case 3, 103: Sabutotal = Application.WorksheetFunction.CountA(mA)
Case 4, 104: Sabutotal = Application.WorksheetFunction.Max(mA)
Case 5, 105: Sabutotal = Application.WorksheetFunction.Min(mA)
Case 6, 106: Sabutotal = Application.WorksheetFunction.Product(mA)
Case 7, 107: Sabutotal = Application.WorksheetFunction.StDev(mA)
Case 8, 108: Sabutotal = Application.WorksheetFunction.StDevP(mA)
Case 9, 109: Sabutotal = Application.WorksheetFunction.Sum(mA)
Case 10, 110: Sabutotal = Application.WorksheetFunction.Var(mA)
Case 11, 111: Sabutotal = Application.WorksheetFunction.VarP(mA)
Case Else: Sabutotal = "種類が正しくありまへん"
End Select
End Function
'(ROUGE)

 なんか・・・ROUGEさんに 別の人格が乗り移ったような。

 ししょ〜の域に近づいた??     ((((;^^)逃げる〜

(ぷーのすけ)


出来ました!天才!ありがとうございました。

先のシンプルな方を使いました。

ymto4j



コメント返信:

[ 一覧(最新更新順) ]


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