0

別の場所に移動したいテーブルがあり、データの大部分を削除したいと考えています (あまり気にしない空白や 0 がかなりあります)。これまでのコードは次のとおりです。

Dim srcRange As Range
Dim copysheet As Worksheet

Set copysheet = ActiveSheet

Set srcRange = copysheet.range("B1:D1598")
srcRange.AutoFilter Field:=3, Criteria1:=Array("#VALUE!", "Count", 0, Empty)
srcRange.Delete

このセットアップでは空白のみが削除されるため、次のバリエーションで数回テストしました。

'this code will return only the 0's
Dim srcRange As Range
Dim copysheet As Worksheet

Set copysheet = ActiveSheet

Set srcRange = copysheet.range("B1:D1598")
srcRange.AutoFilter Field:=3, Criteria1:=Array("#VALUE!", "Count", 0)

'this code will return only the "count"'s
Dim srcRange As Range
Dim copysheet As Worksheet

Set copysheet = ActiveSheet

Set srcRange = copysheet.range("B1:D1598")
srcRange.AutoFilter Field:=3, Criteria1:=Array("#VALUE!", "Count")

したがって、私が到達した結論は、何らかの理由で、AutoFilter ツールは、criteria1 に入力した最後の基準によってのみフィルタリングされているということです。理由についての洞察を私に与えることができる人はいますか?

参考までに、私の一時的な回避策は、1 つではなく 4 つのフィルター/削除コマンドを実行することであり、問​​題なく動作しています。これの原因について少し学びたいと思います。

ありがとう!

4

1 に答える 1

1

Operator:=xlFilterValuesAutoFilter 呼び出しに追加する必要があります。

srcRange.AutoFilter Field:=3, Criteria1:=Array("#VALUE!", "Count"), Operator:=xlFilterValues

これにより、Criteria1 で提供されるすべての要素がフィルタリングされます

于 2013-02-15T23:27:54.477 に答える