[[20230131215413]] 『フィルタで型が一致しません』(きんちゃん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『フィルタで型が一致しません』(きんちゃん)

Worksheets("リスト用").Range("l3:l10")の範囲にある文字列だけを、オートフィルタで除外したいのですが、
以下の記述だと最終行で「型が一致しません」のエラーが出ます。
どの部分がいけないでしょうか。

Dim JOGAI As Range
Set JOGAI = Worksheets("リスト用").Range("l3:l10")
ActiveSheet.Range(Cells(5, 1), Cells(LASTROW, 32)).AutoFilter Field:=23, Criteria1:="<>" & JOGAI

< 使用 Excel:Excel2019、使用 OS:Windows10 >


JOGAI は配列ですが、それに"<>"を連k津するという演算はできません。(仕様です)

また、仮にその書き方が成功したとしても、
それはOR条件でしょうから「どれかに等しくない」という意味となり、
結果としてすべてが抽出されませんか?

列を追加して、COUNTIFか何かで、23列の値が "リスト用"シートの"l3:l10"セル範囲に含まれるかと
計算しておき、それを対象にAutofilterを掛けるのが手軽ではないですか?
(abc) 2023/01/31(火) 22:26:47


 被ったけどそのまま投稿します

 書き方も違いますが、除外を3つ以上はオートフィルターでは不可能です
 作業列を使った方法が解説されていましたので参考にしてください
https://excel-ubara.com/excelvba4/EXCEL259.html

 フィルタオプションなら、計算式を検索条件にできますが、作業列使ったやり方の方が
 後々管理しやすいです
(稲葉) 2023/01/31(火) 22:29:23

かなり雑ですが連想配列で除外リストの値を弾く例

 Dim JOGAI
 Dim AutoFilterRange As Range
 Dim filterList
 Dim filterColumn As Long
 Dim r

 '除外リストをつくる(配列)
 JOGAI = Worksheets("リスト用").Range("l3:l10")

 'オートフィルタ対象範囲を設定
 With ActiveSheet
   Set AutoFilterRange = .Range(.Cells(5, 1), .Cells(LASTROW, 32))
 End With

 'オートフィルタ対象列の値を配列で取り出す
 filterColumn = 23
 Set filterList = Intersect(AutoFilterRange, AutoFilterRange.Columns(filterColumn)).Value

 Dim dic As Object
 Dim v
 'オートフィルタ対象列の値を連想配列に入れる(重複削除)
 Set dic = CreateObject("Scripting.Dictionary")
 For Each v In filterList
   dic(v) = ""
 Next
 '除外リストの値を連想配列から削除
 For Each v In JOGAI
   If dic.exists(v) Then dic.Remove v
 Next
 '除外リストの値を削除したリストを一次元配列化
 filterList = dic.keys
 Set dic = Nothing

 オートフィルタ実行
 AutoFilterRange.AutoFilter Field:=filterColumn, Criteria1:=filterList, Operator:=xlFilterValues
(お邪魔します) 2023/02/01(水) 11:22:18

Sub Macro1()
    Dim Rng As Range

    Set Rng = Worksheets(1).Range("L3:L10") _
    .SpecialCells(xlCellTypeConstants, xlTextValues)

    Rng.Select
End Sub

こういうことかな?
(まっつわん) 2023/02/01(水) 15:55:03


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.