
下記のコードは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も見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
access2021 VBA メソッドまたは...
-
JANコードとPOSコードは同じ?
-
1日に1人がこなせるプログラム...
-
COBOLの文法
-
access2003 クエリSQL文に...
-
Access2000のレポートで条件付...
-
SQL
-
とある条件でIntelliSenseが使...
-
エクセルに見えない文字(JISX0...
-
【VB6】実行ファイルとした後、...
-
Pythonで指定時間までスリープ...
-
access でエラーを回避するには?
-
Exel VBA 別ブックから該当デ...
-
画像を最背面にし、ブックを後...
-
プログラムの記法 インラインコ...
-
ActiveReportの改ページ不具合...
-
VB2010体験版でShockwaveFlash...
-
ExcelVBAで「Shift_JIS(MS932)...
-
AccessでReplace関数を使うときに…
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
access2021 VBA メソッドまたは...
-
1日に1人がこなせるプログラム...
-
JANコードとPOSコードは同じ?
-
1、Rstudioで回帰直線を求める...
-
access2003 クエリSQL文に...
-
Exel VBA 別ブックから該当デ...
-
JavaScriptの定数名が取り消し...
-
COBOLの文法
-
VBAでファイルオープン後にコー...
-
変数名「cur」について
-
エクセルに見えない文字(JISX0...
-
オートフィルタで抽出結果に 罫...
-
Nullの使い方が不正です。
-
PreviewKeyDownイベントが2回...
-
【VB6】実行ファイルとした後、...
-
Javaの改行について
-
C# コードビハインドについて
-
Excelシート上で右クリックがで...
-
木偏に「久」
おすすめ情報
ありがとうございます。
教えて頂いたAdvancedFilter を使用し、ググってみたり、例のコードを改良して
コードを実行してみたのですがうまくいきません。
例のコード見たいなものをご提示頂く事はできますでしょうか?