[[20020626153610]] 『VBAでのオートフィルターについて』(hisao) ページの最後に飛ぶ

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

 

『VBAでのオートフィルターについて』(hisao)

エクセルVBA について 教えてください。

元の表を(A)とします。

オートフィルターをかけて 抽出した表をコピー(B)とします。

(B)に改変を加えて(A)に戻したいのですが、コピーすると 非表示の行にもコピーされて

元の行にうまく収まりません。何か方法はないでしょうか。

また オートフィルターをかけた表の表示行の行数をカウントする方法を教えてください。


 無理をしないように、オートフィルタで篩いに掛けたデータは非表示になります。

表示されているデータの行番号を確認して下さい。

表示されたデータを別の目的で表作成する場合は有効ですが、

コピー後改変し、元の表に戻すと、戻した行から連続貼り付けされますから、当然非表示行に貼り付けられてしまいます。

データを修正するのであれば、この表で変更すればよいのではないですか?

それとも、元の表と比較しながら、1行づつ貼り付けますか?

『オートフィルターをかけた表の表示行の行数をカウントする方法』

数値データのカウントはcount(範囲),文字列データのカウントはcounta(範囲)ですが、

オートフィルタで表示している行数をカウントする関数はsubtotal関数です。

数値データ列を対象にした場合は =SUBTOTAL(2,範囲) で求めます。

文字列データ列を対象にした場合は =SUBTOTAL(3,範囲) で求めます。

数値データ列の合計は =SUBTOTAL(9,範囲) で求められます。

詳しい説明は 200206171522 『集計方法を教えてください』(yukkey) を参考にして下さい。

 (シニア)


早速のお返事、有難う御座いました。

コピー後、改変、戻す意味は 原表からVBAで作成した 伝票に新しいデーターを入れ込み 

そのデーターを 元の表に戻すためなのですが やはり無理でしょうね。おっしゃるように

DO UNTILL LOOPで 一行づつ貼り付けるしかないようですね。そうすると 行数をカウントしたくなります。

そこで SUBTOTAL あるいは COUNTIF 関数で カウントした数字を 変数に代入する方法が

解らないのです。今は 適当なCELLに 関数を入れ それを 変数に拾っているのですが

なにか 野暮ったくて。関数で求めた数字を直接変数に代入したいのです。

FormuraR1C1も 使いづらいし 何か良い方法はないでしょうか ご教示ください。


 シニアさんからバトンタッチしましたkazu です。

 わたしもシニアさんと同じ考えで、フィルタをかけた結果は触らないように

 すごしてきました。

 オートフィルタで7行が非表示か表示かの判断はRows(7).Hiddenというプロパティ

 でできます。Rows(7).Hidden がtrue だったら非表示です。データ件数もこれを

 頼りに数えれば可能です。

 もしよかったらVBAをここへ出してください。

 (kazu)

コメント返信:

[ 一覧(最新更新順) ]


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