目下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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) AdvancedFilterについての質問 2 2022/07/02 22:58
- Excel(エクセル) 列の最終行に新たに入力されたらその値を自動参照 1 2023/01/21 09:59
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Excel(エクセル) Formulaプロパティーを使ってセルに数式を組んだのですが簡潔にしたい。 3 2022/08/21 20:51
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
ExcelのVBAコードについて教え...
-
1日に1人がこなせるプログラム...
-
Exel VBA 別ブックから該当デ...
-
VB6のComboBox関連の書き方をVB...
-
HTML電卓で1文字消す方法
-
VLookup関数を使ってラベルに表...
-
access2003 クエリSQL文に...
-
Excel VBA素人です。VBAで図形...
-
pythonにてseleniumを使うも、...
-
ExcelVBAで「Shift_JIS(MS932)...
-
エクセルに見えない文字(JISX0...
-
レポートでグループレベルの変...
-
chatgptでつくってもらったコー...
-
JANコードとPOSコードは同じ?
-
ACCESSで、履歴事項を管理する...
-
1、Rstudioで回帰直線を求める...
-
videopadについて
-
VBAでファイルオープン後にコー...
-
CheckBoxのコントロール配列に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
access2003 クエリSQL文に...
-
1日に1人がこなせるプログラム...
-
Exel VBA 別ブックから該当デ...
-
pythonにてseleniumを使うも、...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
chatgptでつくってもらったコー...
-
欠番の抽出について
-
JANコードとPOSコードは同じ?
-
JavaScriptの定数名が取り消し...
-
1、Rstudioで回帰直線を求める...
-
特定行の背景色を変えたいのですが
-
変数名「cur」について
-
PreviewKeyDownイベントが2回...
-
将来AIが進歩してくるにつれて...
-
ACCESSユニオンクエリでORDER B...
-
COBOLの文法
-
VBAでファイルオープン後にコー...
-
Nullの使い方が不正です。
おすすめ情報