好きな和訳タイトルを教えてください

お世話になります。
行数が変動する製品一覧に対して、フィルタの詳細設定で絞込をしたいと考えております。
製品一覧は、EXCELシートを開く際外部のDBから読み込んでいます。

ありえない行数を記述する方法でなんとかいきましたが、もっときちんとした方法があるのではないかと思い質問させていただきます。

案1: 駄目
可変範囲の名前を定義してやって駄目(フィルタが働かない)

名前: △製品一覧
=OFFSET(製品一覧!$B$5,0,0,COUNTA(製品一覧!$B:$B),COUNTA(製品一覧!$5:$5))

Range("△製品一覧").Resize(RCnt, CCnt).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("$D$1:$E$3"), Unique:=False


案2: 駄目
VBA内で行数をカウントしてRangeをResizeしてみましたが駄目(フィルタが働かない)

RCnt = WorksheetFunction.CountA(Sheets("製品一覧").Rows(5)) '
CCnt = WorksheetFunction.CountA(Sheets("製品一覧").Columns(2)) '
Range("$B$5").Resize(RCnt, CCnt).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("$D$1:$E$3"), Unique:=False


案3: OK
これは無いだろうという行数を固定で記述してOK

Range("$B$5:$P$99999").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("$D$1:$E$2"), Unique:=False

A 回答 (1件)

VBAで、データの入っている最終行の取得方法です。


Range(”B" & Rows.Count).End(Xlup).Row
という方法があります。B列のシートの一番下から
上へ移動して、空白でなくなった行番号です。
Range("$B$5:$P$"& Range(”B" & Rows.Count).End(Xlup).Row).AdvancedFilter Action:=・・・
とかでは如何でしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございました。
教えていただいた通りやってみましたが、新たな不具合があります。
一つの項目でフィルタした状態で、別の項目でもフィルタをして
フィルタを一つづつ解除しても、全体が表示されない。
一つ目のフィルタで絞られた以降の列が表示されないという状況です。

お礼日時:2015/05/21 16:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報