[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『可視セルでのSumIF』(Taro)
VBAでオートフィルタがかかったあとに表示セル範囲でのSUMIFを 実行したくて下記コードにしましたが WokseetFunction.SumIFのところで エラーになってしまいます。 可視セル範囲でのSumIfはどのように記述すればいいのでしょうか? ご教授 お願いします。(XP_2003)
Private Sub Worksheet_Change(ByVal Target As Range) Set MyWk = ThisWorkbook.Sheets("Sh1") With MyWk EndRw = .Cells(Rows.Count, 3).End(xlUp).Row If Intersect(Target, .Range("P9:P" & EndRw)) Is Nothing Then Exit Sub Application.EnableEvents = False '表示データ合計(K_Flg) .Range("L7").Value = WorksheetFunction.SumIf(.Range("P9:P" & EndRw).SpecialCells(xlCellTypeVisible), "K", .Range("L9:L" & EndRw).SpecialCells(xlCellTypeVisible)) Application.EnableEvents = True End With End Sub
SumIfで複数範囲は出来ませんよね。 ワークシート関数なので、セルに書く関数で出来ない事はほとんど出来ません。 SubTotalにしてもSumIfはできませんので。
データがどのようなデータかわからないので確実な事は言えませんが P列が"K"かどうかのSUMIFをするのなら、せっかくオートフィルタが掛かっているのだから P列がKの条件で絞り込んだ状態でSUBTOTALのSUM(非表示除く)で集計してみては?
あとは、VBAですからループ処理で足しこんで行く事でも可能ですし SpecialCellsのAreaごとにSumIfでも良いかもしれません。 方法は色々あると思います。 (momo)
素直に P列で "K" をオートフィルタで抽出してからSUBTOTAL関数でL列を集計すれば よいのではないでしょうか。 表示されている行だけ集計だから、とくに最終行も求める必要はないだろうし。 (みやほりん)(-_∂)b
みやほりんさんへ。 ryu○○○do 覗いて下さい。
業務連絡失礼しましたm(__)m (純丸)(o^-')b
まずお礼が遅くなって申し訳ありません。 (momo)さま >SumIfで複数範囲は出来ませんよね。 言われてみればそうですよね。 .SpecialCells(xlCellTypeVisibleで一つの範囲と勝手に 思い込んでいました。指摘していただいて本当に感謝です。 Loopで足しこんでいく方法に切り替えます。
(みやほりん)さま このシートはある任意のKeyでユーザがフィルタをかけ 表示した範囲の中からさらに 必要なレコードに対しユーザが [K]をセットしていくという使い方をしています。 そのとき[K]が入力されたレコードのL列の値を累積しながら エクセル上に 表示していくという仕組みなものですから最初から[K]を フィルターで 抽出するという方式では だめなんです。言葉足らずですみません。 いずれにしてもお二方の ご丁寧なご指導に感謝いたします。 ありがとうございました。 (Taro)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.