エクセルVBAのAdvancedFilterのついて教えてください
AdvancedFilterは検索条件をCriteriaRangeで指定するかと思うのですが、そのつど変更することは可能なのでしょうか
現在、B3からO3に検索するための「見出し」が入力されています
B4からO4に検索したい文字を入力しCriteriaRange:=Range("B3:O4")としてきたのですが、検索を増やし場合があります
B5からO5にも入力し、Range("B3:O5")とすればいいのでしょうが、そのつど検索範囲を変更するのは大変です
あらかじめRange("B3:O5")としてしまうと、4行目までしか入力しなかった場合に、5行目がORで検索されるので、余白行が検索されることになりすべてのデータを抽出してしまいます
最大でも10条件用意しておけば足りると思うので、Range("B3:O13")としたいです
"空白セルの場合は、上の行をコピーする"と命令させておけば、空白セルがなくなりすべてのデータを抽出してしまうということは回避できるのかな?と考えたのですが、どのように実現するか分かりませんでした
それか、"最終行を認識し、そこまでの範囲とする"とか"余白セルを無視する"ことも可能なのでしょうか
自分が思いついたやり方でなくでも構わないので、検索のつど範囲を変更できる方法があれば教えてください
よろしくお願いします
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
> B列に限ることなく、「B3からO13の表の中で、入力されているセルを含む行まで」
なるほど、失礼しました。
だとすると、#3さんの考え方を拝借して、
Range("フィルタをかける範囲").AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Intersect(Range("B3").CurrentRegion, Columns("B:O")), _
Unique:=False
としてやるのが早そうですね。
14行目以降にも何らかの(検索キー以外の)データがあるなら、
Intersect(Range("B3").CurrentRegion, Range("B3:O13"))
としてやっても良さそうです。
あ、言い忘れましたが、各Range・Columnsには
シート名の指定をお忘れなくなさってくださいね。
#3さま、ありがとうございます。
私も勉強させていただきました。
追加の返信ありがとうございます
No3さんの回答にも書きましたが、A4からA13まで1、2、3、・・・・、10と数字が振ってあり、教えていただいた2つの方法でやってもうまく抽出されません
sheet2に検索するめの表を作成しており、
Intersect(Worksheets("sheet2").Range("B3").CurrentRegion, ・・・といった感じでシートを指定しています
シートの指定方法が駄目なんですかね・・
No.4
- 回答日時:
こんにちは!
横からお邪魔します。
とりあえずB~O列の最終行取得だけ・・・
各列(他の列)に14行目以降にデータがない場合は(1行目には何らかのデータが入っているという前提)
Dim endRow As Long
endRow = ActiveSheet.UsedRange.Rows.Count
これでデータが入っている最終行が取得できると思います。
もし他列に14行目以降にデータがあったり、B~O列内で14行目以降にデータがある場合は
Cells(Rows.Count, 1).End(xlUp).Row
のような方法では3~13行目内の最終行取得はできませんので
Dim i As Long, endRow As Long
For i = 13 To 3 Step -1
If WorksheetFunction.CountA(Range(Cells(i, "B"), Cells(i, "O"))) <> 0 Then
endRow = i
Exit For
End If
Next i
のような感じで行えば
最終行は endRow に格納されます。
※ AdvancedFilter の直接の回答ではないので、
この程度でごめんなさいね。m(_ _)m
回答ありがとうございます
私は応用がきくほどVBAを詳しく分かっていませんが、ヒントになりそうですし、おそらく詳しい方が見たら応用できるんでしょうね。。。
ありがとうございました
No.3
- 回答日時:
No.1です。
列も範囲限定して
Intersect(Range("B3").CurrentRegion,Rows("3:13"),Columns("B:O"))
こんな感じでは無理かな?
追加の返信ありがとうございます
前回のn-junさんの回答を参考に、自分も同じコードを作成しました
A4からA13まで1から10の数字が振ってあるので
しかし、すべてのデータを抽出してしまっているので失敗だと思われます
なぜ駄目なのか・・・
試しにA4の1だけ残し、B4からO4の4行目のみ入力しなければ成功するので、1から10まで入力することで、BからOの列のみ限定できていないということなのだと思うのですが
No.2
- 回答日時:
スタートは3行目である・・と言うのは変わらないのでしょうか。
だとしたら、最終行を可変にしてやればOKと言うことでしょう。
なので、私からは「(ある列の)最終行を取得する」と言うやり方を提案します。
まぁ、このQ&Aでも良く見かけるやり方ですが、
応用が利きますから、覚えておいて損はありません。
例えば「B列(2列目)の最終行を知りたい」時には
Cells(Rows.Count, 2).End(xlUp).Row
としてやると取得できます。
つまり・・エクセル的にシートの最終行(B1048576セル、2003以前ならB65535セル)から
「Ctrl+↑」を押した時に止まる行番号を返してきます。
ちなみに「ある行(例えば3行目)の最終列」を取る場合は
Cells(3, Columns.Count).End(xlToLeft).Column
で出来ます。
応用として「B3セルから行方向に連続してデータがあり、その連続データの最終行」なら、
Range("B3").End(xlDown).Row
としてもOKです。
これを使って、
CriteriaRange:=Range("B3:O" & Cells(Rows.Count, 2).End(xlUp).Row)
あるいは
CriteriaRange:=Range("B3:O" & Range("B3").End(xlDown).Row)
※B3・B4セルにも必ずデータが入っている、と言うのが前提
としてやるといつでも最終行を指定してやることが出来ますね。
以上、参考まで。
さっそくの回答ありがとうございます
B3からO3まで見出しがあるのですが、4行目以降に入力する場合、それがB列からO列のどのセルに入力されるか分かりません
たとえば、4行目はB列(B4)に入力し、5行目はG列(G5)に入力することがあります
すると、B列のみの最終行を調べると4行目になりますが、ほかの行ほかの列にも入力されていることを見逃してしまうことになりませんか
なので、B列に限ることなく、「B3からO13の表の中で、入力されているセルを含む行まで」としたかったのですが、言葉足らずですみません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Excel(エクセル) エクセルのvlookupについて質問です 3 2023/01/05 15:15
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
あなたにとってのゴールデンタイムはいつですか?
一週間の中でもっともテンションが上がる「ゴールデンタイム」はいつですか? その逆で、一週間でもっとも落ち込むタイミングでも構いません。 よかったら教えて下さい!
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
EXCELのフィルタオプションで
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
Excel関数:「0」を除いた標準...
-
Excel関数で、範囲内の最後のセ...
-
値の入っているセルのうち、一...
-
【エクセル】区切り位置で分割...
-
SUMIFで数値が入力されているセ...
-
ピボットテーブル 0個の行を...
-
更新前と更新後の差分をVBAを使...
-
エクセルに入力された日付「S40...
-
エクセルVBA AdvancedFilterの...
-
エクセルの日付書式を一発置換...
-
エクセルで何種類のデータがあ...
-
correl関数の範囲指定
-
エクセルのSUMPRODUCT関数につ...
-
エクセル2007の表で自動的に点...
-
《エクセル2000》重複している...
-
【Excel】歯抜けデータの集約
-
エクセル、正数のみの集計[(負...
-
エクセルで別のシートに数行お...
-
excel vba 複数項目の集計
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
Excel関数:「0」を除いた標準...
-
Excel関数で、範囲内の最後のセ...
-
値の入っているセルのうち、一...
-
【エクセル】区切り位置で分割...
-
更新前と更新後の差分をVBAを使...
-
SUMIFで数値が入力されているセ...
-
ピボットテーブル 0個の行を...
-
エクセルに入力された日付「S40...
-
SUMPRODUCT関数 行が増えても...
-
correl関数の範囲指定
-
エクセル 8ケタの数字から日数...
-
【Excel】歯抜けデータの集約
-
エクセル、正数のみの集計[(負...
-
Excelのマクロでソートがうまく...
-
Excelで複数列かつ複数行分の一...
-
エクセルで何種類のデータがあ...
-
エクセルで別のシートに数行お...
-
Excelのマクロで行を間引きたい
-
エクセル2000で〇×の並び替えを...
おすすめ情報