![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
目下VBA学習中の初心者です
現在取り組んでいるエクセルのマクロで、フィルターオプションを使いたいところがあるのですが、以下の点でうまくできず困っています。
どなたかアドバイスや別の方法などがあれば、ご指導願えないでしょうか
下記の記述にある「CriteriaRange:=Range("e3:g5")」のrange("e3:e5")の「e3:e5」の部分を条件変化に対応できるように、変数(例query-1)に置き換えたいと思いました。
そこで、同じシートのe7にquery-1という範囲名をつけe7にe3:g5を入力した後、上記の部分をRange("=query-1")としたり、
Range("=cell("contents",query-1)")などいろいろ試しましたが、いずれもうまくいきません
Sheets("data1").Range("D10:Q510").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("e3:g5"), CopyToRange:=Range("D10:Q10"), Unique:= _
False
このような場合の、もっとよい方法や、解決法についてどなたか、ご指導願えないでしょうか。よろしくお願いします
tomosato-t
No.2ベストアンサー
- 回答日時:
AdvancedFilterの例。
コードは短くを目指しました。Criteria部分の相対化を図っています。
<テストデータ>
A1:B5に下記を入れる。
コード値
110
230
115
310
4 13
4 19
D1:E4に
コードコード
23
コードコード
14
と入れる。
コマンドボタンを1つ貼り付ける。
<操作>
(1)Criteriaに当たるセルを範囲指定
(2)コマンドボタンをクリック
<結果>
D1:D2を範囲指定して、ボタンをクリックすると
結果はA10:B11に
コード値
230
----
E1:E2を範囲指定して、ボタンをクリックすると
結果はA10:B11に
コード値
310
となる。
<コード>
Sheet1のボタンのイベントプロシジュアーに
Private Sub CommandButton1_Click()
Dim s As String
s = Selection.Address
Call Macro1(s)
End Sub
----------
Module1に
Sub Macro1(s As String)
Range("A1:B5").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range(s) _
, CopyToRange:=Range("A10:B14"), Unique:=False
End Sub
を入れておく。その後上記操作をすること。
imogasiさん
具体的で丁寧なご指導ありがとうございました
おかげさまで、無事問題が解決しました
いろいろな本をみても出ていないことが多く、このような具体的なご指導をいただけることは、初心者にとって心強いかぎりです
心より感謝します
tomosato
No.3
- 回答日時:
こんばんは
>上記の部分をRange("=query-1")としたり、
を
Range(Range("query-1").Value)
とすると?
Enfantさん
早速のアドバイスありがとうございました
おかげさまで、いろんな解き方を知ることができました
いろいろな本をみても出ていないことが多く、このようなご指導をいただけることは、初心者にとって心強いかぎりです
心より感謝します
tomosato
No.1
- 回答日時:
こんにちは。
maruru01です。あまりスマートなやり方ではありませんが。
検索対象範囲がD10:Q510で決まっていて、検索条件範囲を選択しておいて、マクロを実行します。
検索条件範囲の左上と右下のセルの行・列番号を取得するやり方です。
Sub 抽出()
Dim StartRow As Long
Dim StartCol As Long
Dim EndRow As Long
Dim EndCol As Long
StartRow = Selection.Row
StartCOl = Selection.Column
EndRow = Selection.Rows(Selction.Rows.Count).Row
EndCol = Selection.Columns(Selction.Columns.Count).Column
Sheets("data1").Range("D10:Q510").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range(Cells(StartRow, StartCol), Cells(EndRow, EndCol)), _
CopyToRange:=Range("D10:Q10"), Unique:=False
End Sub
maruru01さん
丁寧なご指導ありがとうございました
おかげさまで、無事問題が解決しました
いろいろな本をみても出ていないことが多く、このようなご指導をいただけることは、初心者にとって心強いかぎりです
心より感謝します
tomosato
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
JANコードとPOSコードは同じ?
-
JavaScriptの定数名が取り消し...
-
ペンダントライトのコードの色...
-
コンボボックス3つを連動させたい
-
特定行の背景色を変えたいのですが
-
pythonにてseleniumを使うも、...
-
wechatアプリについての質問で...
-
1日に1人がこなせるプログラム...
-
変数名「cur」について
-
access でエラーを回避するには?
-
PreviewKeyDownイベントが2回...
-
Excel VBAについて
-
C# コードビハインドについて
-
VBA リストボックス(複数条件...
-
レポートでグループレベルの変...
-
Nullの使い方が不正です。
-
Accessでの抽出で完全一致。
-
IF文、条件分岐の整理方法
-
VBA For文でチェックボックスの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
JANコードとPOSコードは同じ?
-
access2003 クエリSQL文に...
-
1日に1人がこなせるプログラム...
-
オートフィルタで抽出結果に 罫...
-
変数名「cur」について
-
JavaScriptの定数名が取り消し...
-
ACCESSユニオンクエリでORDER B...
-
Exel VBA 別ブックから該当デ...
-
UWSCでMOUSEORG関数が上手く処...
-
COBOLの文法
-
PreviewKeyDownイベントが2回...
-
1、Rstudioで回帰直線を求める...
-
VBAでファイルオープン後にコー...
-
【VB6】実行ファイルとした後、...
-
Nullの使い方が不正です。
-
特定行の背景色を変えたいのですが
-
◾️Excel VBA 統合について Cons...
-
アルファベットに付いて質問し...
-
Excel VBAでOpenTextのFieldInf...
おすすめ情報