前提
E列とAJ列の項目は重複しているものが多数あります。
2つのコードを載せますが1つ目のコードは動作は問題ないです。
関係あるかわからないので載せてます。
実現したいこと
こんな感じの表があります
- AJ列を一つのキーでソート
- ソートされた状態でE列に出てきている内容(以下の例だとE000113,E000114,E000115,E000116)を配列に入れる
-
いったんフィルタを解除
-
配列の内容で(OR条件で)E列をソートしなおす
発生している問題
- ソートされた状態でE列に出てきている内容(以下の例だとE000113,E000114,E000115,E000116)を配列に入れる
↑配列には入っている様子…かとおもいきやE000113,E000114,E000115,E000116のあと空で5回msgboxがでます
- 配列の内容で(OR条件で)E列をソートしなおす
↑エラーはおきないですがフィルタがかかっていない状態です
エクセルVBA
Sub 共通親抽出() 'マクロ実行画面の凍結 Application.ScreenUpdating = False '変数宣言 Dim zuban As Variant Dim endRow As Long ' 最下行の取得 endRow = Cells(Rows.Count, 36).End(xlUp).Row '抽出キーの入力指示 zuban = InputBox("変更する図番を版数抜で入力して下さい。") 'キャンセルした場合の処理 If zuban = Empty Then Exit Sub End If 'オートフィルタがかかっていなかったらかける 'かかっていたら念の為一度解除し再設定 If ActiveSheet.AutoFilterMode = False Then Range("A1:AS" & endRow).Select Selection.AutoFilter Else Selection.AutoFilter Range("A1:AS" & endRow).Select Selection.AutoFilter End If Range("E1").Select '「図番」の列(36列目)で、抽出キーを含むものを抽出 Selection.AutoFilter Field:=36, Criteria1:="=*" & zuban & "*", Operator:=xlAnd 'Range("E1").CurrentRegion.Offset(1, 0).Resize(Range("E1").CurrentRegion.Rows.Count - 1).Interior.Color = 65535 End Sub
Sub 図番でのソート後配列に格納して再度フィルタ() Dim d(100) '配列の数 Dim Buff As Variant Range("E1").CurrentRegion.Select Set Buff = Range("A2:AS48").SpecialCells(xlCellTypeVisible) For Each Cl In Buff If Cl.Column = 5 Then d(k) = Cl k = k + 1 MsgBox Cl ’ここで確認すると配列には入っている様子…かとおもいきやE000113,E000114,E000115,E000116のあと空で5回msgboxがでます End If Next Range("A2:AS48").AutoFilter 'フィルタ解除 Dim MaxRow As Long MaxRow = Cells(Rows.Count, 36).End(xlUp).Row Range(Cells(1, 5), Cells(MaxRow, 45)) _ .AutoFilter Field:=5, _ Criteria1:=Cl, _ Operator:=xlFilterValues End Sub
補足情報(FW/ツールのバージョンなど)
エクセル2013です
修正①
改めて動作させたらすこし現象が違いました。
発生している問題書き換えしました
修正②
★②Cells(1,5)→Cells(1,1)に修正 不要な修正でした…。
回答1件
あなたの回答
tips
プレビュー