下記のコードはArrayが2つですが、Arrayの部分に別シートのC1からC30セルを参照したい場合
どのようなコードにすればいいですか?
またそのようにした場合
ActiveSheet.Range("A2").AutoFilter Field:=6, Criteria1:= _
"*" & Target_Word(0) & "*", _
Operator:=xlOr, Criteria2:="*" & Target_Word(1) & "*"
の部分はどのように変更すればいいですか?
Sub オートフィルタで複数条件を含むリスト抽出()
Dim Target_Word() As Variant
Target_Word = Array("川", "福")
ActiveSheet.Range("A2").AutoFilter Field:=6, Criteria1:= _
"*" & Target_Word(0) & "*", _
Operator:=xlOr, Criteria2:="*" & Target_Word(1) & "*"
End Sub
No.4ベストアンサー
- 回答日時:
No3です。
たびたび申し訳ない。(また、やってしまった)
No3は破棄してください。以下に入れ替えてください。
Sub Sample()
Dim cRange As Range
Dim c As Long, r As Long
Dim fTitle As String, v
fTitle = "@" & Chr(27) & "@"
Const conditionRange = "Sheet2!C1:C5" ' 条件文字群範囲
Const filterRange = "Sheet1!F1:F20" ' フィルター対象範囲(キー列)
With Range(filterRange).Worksheet
c = .UsedRange.SpecialCells(xlCellTypeLastCell).Column + 1
For r = 1 To Range(conditionRange).Rows.Count
.Cells(r + 1, c).Value = "*" & Range(conditionRange).Cells(r, 1).Value & "*"
Next r
Set cRange = .Cells(1, c).Resize(r)
End With
With Range(filterRange)
.AutoFilter
v = .Cells(1, 1).Value
If .Cells(1, 1).HasFormula Then v = .Cells(1, 1).Formula
cRange.Cells(1, 1).Value = fTitle
.Cells(1, 1) = fTitle
.AdvancedFilter xlFilterInPlace, cRange
.Cells(1, 1).Value = v
End With
cRange.EntireColumn.Delete
End Sub
No.5
- 回答日時:
ご質問の要件で、AdvancedFilter は、凝り過ぎでしょ!!
こんなので、十分なのでは・・・。
Sub オートフィルタで複数条件を含むリスト抽出()
Dim Target_Word() As Variant
Dim i As Long
Target_Word = WorksheetFunction.Transpose(Range("C1:C30"))
For i = 1 To UBound(Target_Word)
Target_Word(i) = "*" & Target_Word(i) & "*"
Next i
ActiveSheet.Range("A2").AutoFilter Field:=6, _
Criteria1:=Target_Word, Operator:=xlFilterValues
End Sub
No.3
- 回答日時:
No2です。
ちょっとミスりました。
(ActiveSheetへの処理が残って、混在してしまっていました。)
以下に、訂正してください。スミマセン。
Sub Sample()
Dim cRange As Range
Dim c As Long, r As Long
Dim fTitle As String, v
fTitle = "@" & Chr(27) & "@"
Const conditionRange = "Sheet2!C1:C5" ' 条件文字群範囲
Const filterRange = "Sheet1!F1:F20" ' フィルター対象範囲(キー列)
With Range(filterRange)
c = .Worksheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column + 1
For r = 1 To Range(conditionRange).Rows.Count
.Cells(r + 1, c).Value = "*" & Range(conditionRange).Cells(r, 1).Value & "*"
Next r
Set cRange = .Cells(1, c).Resize(r)
.AutoFilter
v = .Cells(1, 1).Value
If .Cells(1, 1).HasFormula Then v = .Cells(1, 1).Formula
cRange.Cells(1, 1).Value = fTitle
.Cells(1, 1) = fTitle
.AdvancedFilter xlFilterInPlace, cRange
.Cells(1, 1).Value = v
End With
cRange.EntireColumn.Delete
End Sub
No.2
- 回答日時:
No1です。
>例のコード見たいなものをご提示頂く事はできますでしょうか?
条件がよくわからないので、以下は、勝手に想定した内容で作成したものです。
●セル範囲等は、とりあえず直接アドレスで指定する方式にしてあります。
●conditionRange は条件の語彙群があるセル範囲。
必ず「含む」及びOrで抽出しますので、範囲内に空白セルがあると全てが抽出されます。
●filterRange は抽出対象のセル範囲。ただし、抽出対象列を指定してください。
(行の表示/非常時なので、比較対象列だけを指定しても、行全体が表示/非表示になります)
●フィルタオプションの場合、タイトル項目が必要になりますが、空白だったり重複していたりする可能性を考慮して、一時的に処理用のタイトルを設定し元に戻すといった処理などをしていますので、若干長い記述になっています。
●サンプルなので、指定範囲や対象シートのチェック等は一切行っていません。
(おかしな指定をすれば、エラーになる可能性があります)
Sub Sample()
Dim cRange As Range
Dim c As Long, r As Long
Dim fTitle As String, v
fTitle = "@" & Chr(27) & "@"
Const conditionRange = "Sheet2!C1:C5" ' 条件文字群範囲
Const filterRange = "Sheet1!F1:F20" ' フィルター対象範囲(キー列)
c = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column + 1
For r = 1 To Range(conditionRange).Rows.Count
Cells(r + 1, c).Value = "*" & Range(conditionRange).Cells(r, 1).Value & "*"
Next r
Set cRange = Cells(1, c).Resize(r)
With Range(filterRange)
.AutoFilter
v = .Cells(1, 1).Value
If .Cells(1, 1).HasFormula Then v = .Cells(1, 1).Formula
cRange.Cells(1, 1).Value = fTitle
.Cells(1, 1) = fTitle
.AdvancedFilter xlFilterInPlace, cRange
.Cells(1, 1).Value = v
End With
cRange.EntireColumn.Delete
End Sub
No.1
- 回答日時:
こんにちは
単純にリストを並べるだけならば、Criteria1に配列をそのまま指定すれば数の制限はありませんけれど、ご提示の例の場合はワイルドカードで「含む」指定になっているので、手操作でいう所の「カスタムフィルター」に当たります。
残念ながら、こちらの場合は条件指定が2種類までしかできない仕様のようです。
Andのフィルターであれば、フィルター操作を繰り返すことでも可能ですが、Orの場合はそうもいきませんね。
・・ということで、ご質問内容を実現する方法として思いつく対応法を以下に。
1)エクセル機能のフィルターオプションを利用する
VBAで言えば AdvancedFilter を利用する方法です。
https://learn.microsoft.com/ja-jp/office/vba/api …
こちらであれば、Orで3つ以上の条件を指定することも可能です。
ただし、CriteriaRange はRangeオブジェクト以外を受け付けないようですので、配列を直接指定することはできません。
シート上のどこかの空き列に条件を作成する必要があります。
(不要であれば、フィルター後に削除することは可能です)
2)フィルター機能を利用せずに自前で実装する
普通に対象範囲内をループで処理する考え方です。
フィルターをかけたい範囲に対して、1行ずつ「条件に合うか否か」を判断し、その行を表示/非表示の処理をすることで、お望みのフィルターをかけた場合と同様の結果を得ることができるでしょう。
こちらであれば、全てメモリ内で処理できるので、一時的な空き列の利用のようなことはしなくても済みます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
「平成」を感じるもの
「昭和レトロ」に続いて「平成レトロ」なる言葉が流行しています。 皆さんはどのようなモノ・コトに「平成」を感じますか?
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
vba フィルター 複数条件 3つ以上 完全一致除外
Visual Basic(VBA)
-
Excelオートフィルタで複数のセルの値を参照して抽出したい
Excel(エクセル)
-
VBAのautofilter、criteriaの配列指定について(Excel2016)
Excel(エクセル)
-
-
4
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
5
array関数で格納した配列の型を変更する
Visual Basic(VBA)
-
6
マクロ オートフィルタの検索値を所定のセルから参照
Excel(エクセル)
-
7
オートフィルターをかけ、#N/A以外で絞込みするVBA記述をご教示ください
Excel(エクセル)
-
8
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
9
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
10
ExcelのVBAでGoToの代わりに…
Excel(エクセル)
-
11
表にフィルターをかけ、絞ったデータ(可視化セルのみ)を一次元配列として変数に入れるという動作を書きた
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
1日に1人がこなせるプログラム...
-
JANコードとPOSコードは同じ?
-
1、Rstudioで回帰直線を求める...
-
Exel VBA 別ブックから該当デ...
-
Nullの使い方が不正です。
-
access2003 クエリSQL文に...
-
Excel VBA素人です。VBAで図形...
-
COBOLの文法
-
PreviewKeyDownイベントが2回...
-
ACCESSユニオンクエリでORDER B...
-
文字コード変換(Unicode To KS...
-
マクロ 連続印刷
-
ASP.NETのSiteMapPathについて
-
エクセルに見えない文字(JISX0...
-
過剰なオブジェクト指向脳から...
-
【VB6】実行ファイルとした後、...
-
Javaの改行について
-
Excel VBAでOpenTextのFieldInf...
-
VBA 現在のセル番地を記憶、復...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
JANコードとPOSコードは同じ?
-
1日に1人がこなせるプログラム...
-
JavaScriptの定数名が取り消し...
-
access2003 クエリSQL文に...
-
Nullの使い方が不正です。
-
sinカーブの表示のさせ方
-
access2021 VBA メソッドまたは...
-
IF文、条件分岐の整理方法
-
COBOLの文法
-
変数名「cur」について
-
【VB6】実行ファイルとした後、...
-
Exel VBA 別ブックから該当デ...
-
ペンダントライトのコードの色...
-
VBAでファイルオープン後にコー...
-
Excel VBA素人です。VBAで図形...
-
PreviewKeyDownイベントが2回...
-
ACCESSユニオンクエリでORDER B...
-
VB6のComboBox関連の書き方をVB...
-
Access DCountでの連番について
おすすめ情報
ありがとうございます。
教えて頂いたAdvancedFilter を使用し、ググってみたり、例のコードを改良して
コードを実行してみたのですがうまくいきません。
例のコード見たいなものをご提示頂く事はできますでしょうか?