![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
エクセルのオートフィルタ機能について、フィルタの要素を配列を用いて指定、適用させようとしているのですが、うまく適用されません。
古いバージョンだとこれでいけたのですが、現在の環境(表題のとおりExcel2016)だと配列の最終要素のみでフィルタリングされたような状態になってしまいます。私の記述に誤りがあるのか、Excelのバージョンアップに伴って不可になったかが分からず質問する次第です。
プロシージャは以下の通りです。なお、動作範囲はActivesheet(sheets(1))のみです。
Sub Macro1()
Dim trng As Range, frng As Range, i As Long
ReDim mx(0) As Variant
Set frng = Sheets(1).Range("A1").CurrentRegion '適用範囲
Set trng = frng.Resize(frng.Rows.Count - 1, 1).Offset(1, 0) 'フィルタ対象列
frng.Cells(1, 1).AutoFilter '適用前に一度フィルタ解除
For i = 0 To trng.Rows.Count - 1
ReDim Preserve mx(0 To i)
mx(i) = trng.Cells(i + 1, 1)
'Debug.Print "・", mx(i)
Next i
frng.AutoFilter Field:=1, Criteria1:=mx
End Sub
本来はfor文の後ろで配列の要素を要不要に応じて修正してから適用するつもりだったのですが、テストランで上記を実行すると配列の最終要素(上記の場合A列の行の値)のみのフィルタがかかってしまいます。なお、配列に格納しているtrngの値はすべて数値です。
以上、ご教示いただけると助かります。よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
こんばんは。
コードをみると2つ問題点がありますね。
格納しているのが数値だそうですが、索は文字列ですから、文字列に変えなくてはいけません。
だから、
>mx(i) = trng.Cells(i + 1, 1)
↓
mx(i) = CStr(trng.Cells(i + 1, 1))
>frng.AutoFilter Field:=1, Criteria1:=mx
↓
rng.AutoFilter Field:=1, Criteria1:=mx, _
Operator:=xlFilterValues ' ←これを加える
これで試してみてください。
ありがとうございます。お陰様で解決できそうです。
なるほど、つまり配列変数(Variant型)であっても要素に格納する時には文字列に変換しておく必要があるのですね。Excelのバージョンのせいと疑った自分が恥ずかしい…
とても助かりました。どうもありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) ExcelVBAで質問です。離れた二次元配列を一つにしたい 4 2022/07/26 19:06
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
array関数で格納した配列の型を変更する
Visual Basic(VBA)
-
Excelオートフィルタで複数のセルの値を参照して抽出したい
Excel(エクセル)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
-
4
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
vba フィルター 複数条件 3つ以上 完全一致除外
Visual Basic(VBA)
-
7
表にフィルターをかけ、絞ったデータ(可視化セルのみ)を一次元配列として変数に入れるという動作を書きた
Visual Basic(VBA)
-
8
Excelのオートフィルタで抽出したものを配列で取得したい
Excel(エクセル)
-
9
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
-
10
VBAのフィルター操作
Visual Basic(VBA)
-
11
【Excel VBA】ネットワーク上の共有フォルダにあるExcelを開く
Excel(エクセル)
-
12
VBA 1つの列を3つ以上の条件で絞り込みたいです。
Excel(エクセル)
-
13
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
14
Excel VBA Collection.add で Range型を格納したい
Visual Basic(VBA)
-
15
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
16
マクロ オートフィルタの検索値を所定のセルから参照
Excel(エクセル)
-
17
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
18
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
19
オートフィルターをかけ、#N/A以外で絞込みするVBA記述をご教示ください
Excel(エクセル)
-
20
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
組み合わせについての質問です...
-
Excel VBA ユーザーフォームの...
-
チェックデジットについて
-
ループを回すという意味は何で...
-
アセンブラによるウェイト(WAIT...
-
【VBA】全て空白のセルの列の非...
-
DoEventsが必要な理由について
-
ループ内での条件処理
-
VBA for i=1 to lastrow
-
一巡伝達関数と開ループ伝達関数
-
perlで配列名を動的に作り出したい
-
JSを使ったタブの別ページから...
-
UWSCに制限時間を付けたいです
-
Java 南京錠
-
範囲指定したセルを1つずつ飛...
-
素数であるかどうかを判定する...
-
乱数と順列と組み合わせ
-
UTF-8で書かれたJSPの日本語文...
-
テキストボックスの名前に変数...
-
ハッシュ検索はなぜ速い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dim flag(4) as boolean で配列...
-
VBAのautofilter、criteriaの配...
-
二次元配列のインデックスについて
-
二次元配列における要素数のは...
-
エクセルVBAでTransposeの不思議
-
クラスに配列を渡す方法
-
リストボックスに縦スクロール...
-
マクロ Publicでの配列定義
-
Excel VBA ユーザーフォームの...
-
文字の整列(printf)
-
perlで配列の要素が空なのを知...
-
perl 配列の要素数について
-
Strawberry Perl for Windows ...
-
VBA 二次元配列の1つ目を増...
-
チェックボックスのperlでの値...
-
perl 初等プログラミングについて
-
DBIを使ってSelect文 複数のカ...
-
複数のキーで配列をソートする...
-
Excel(VBA)で配列の要素数を...
-
newで個別に生成した配列にNULL...
おすすめ情報