| オートフィルター使用して検索 | |
|---|---|
[196321] オートフィルター使用して検索- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ みい -(2024/11/15(10:52)) □U R L/ お世話になります。
図面のタイトルの検索にてオートフィルターを使用してます。
一応R字とカナの半角・全角の検索はできました。
Dim myName As String
myName = Range("c3").Value
If myName = "" Then
Else
With Sheets("リスト").Range("A1")
.AutoFilter Field:=5, Criteria1:="*" & StrConv(myName, vbNarrow) & "*", Operator:=xlOr, Criteria2:="*" & StrConv(myName, vbWide) & "*"
上記だとひががな・カナの検索ができないので
Dim myName1, myName2
myName1 = Range("c3").Value
myName2 = Range("c3").Value
If myName1 = "" Then
Else
If myName2 = "" Then
Else
With Sheets("リスト").Range("A1")
.AutoFilter Field:=5, Criteria1:="*" & StrConv(StrConv(myName1, vbWide), vbHiragana) & "*", Operator:=xlOr, Criteria2:="*" & StrConv(StrConv(myName2, vbWide), vbHiragana) & "*"
上記だと 反対にR字・カナに対応しません。
全部に対応するコードはありますでしょうか?この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 | |
[196322] Re[1]: オートフィルター使用して検索- ■記事引用/メール受信=OFF■ □投稿者/ kazuo -(2024/11/16(15:34)) □U R L/ E列の文字列を全角・ひらがなに変換した作業列を作り、それを検索対象とするか
または全角・ひらがなに変換するユーザー定義関数を作成し、数式を使用したフィルター詳細を利用することが考えられます
検索する文字列がWorksheets("Sheet2")のC3セルにある場合の例です。
Sub Macro1()
Const 検索条件シート = "Sheet2"
Const 検索条件セル = "C$3"
Dim cr As Range
Set cr = Worksheets(検索条件シート).UsedRange
Set cr = cr.Offset(, cr.Columns.Count).Resize(2, 1)
' cr(1).Value = "検索条件"
cr(2).Formula2 = "=IFERROR(SEARCH(WideHiragana(" & _
検索条件セル & "),WideHiragana(リスト!E2)),FALSE)"
Worksheets("リスト").Range("A1").CurrentRegion.AdvancedFilter xlFilterInPlace, cr
cr.ClearContents
End Sub
Function WideHiragana(s As String) As String
WideHiragana = StrConv(s, vbHiragana + vbWide)
End Function
この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 ++++++++++++++++++++ OS ⇒Windows 11 Version⇒Excel 2021 ++++++++++++++++++++ | |
[196324] Re[2]: オートフィルター使用して検索- ■記事引用/メール受信=OFF■ □投稿者/ みい -(2024/11/19(16:58)) □U R L/ kazuo様
お忙しいなかコードを書いていただきありがとうございます。
cr(2).Formula2 = "=IFERROR(SEARCH(WideHiragana(" & _
検索条件セル & "),WideHiragana(リスト!E2)),FALSE)"
上記で「アプリケーション定義またはオブジェクト定義のエラーです。」
とでました。
Functionでちょっと調べてもおぼつかなく、またそれだけの技量もなく
わかりませんでした。申し訳ありません。
もう少し自分で調べて
Sub これで検索w()
'以前の検索を削除
Sheets("検索シート").Activate
Rows("10:65536").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete
Dim myName As String
myName = Range("c3").Value
If myName = "" Then
Else
With Sheets("リスト").Range("A1")
.AutoFilter 5, Array("*" & StrConv(myName, vbNarrow) & "*", "*" & StrConv(myName, vbWide) & "*", "*" & StrConv(myName, vbHiragana) & "*"), xlFilterValues
.CurrentRegion.SpecialCells(xlVisible).Copy Worksheets("検索シート").Range("A9")
.AutoFilter
'検索シートの10〜200列まで高さを【20】にした
Worksheets("検索シート").Range("10:200").RowHeight = 20
End With
End If
End Sub
こちらだと カタカナは半角で入力すればひらがなとかたかなが混じった「ふれあいセンター」で検索すれば出ますが
できたら「ふれあいセンター」で検索出来るといいのですが。また「フレアイセンター」でも検索できるとなおいいのですが
【vbHiragana】を足して4個の検索しましたがこちらは上手くいきませんでした。
なにぶん建物名の検索なので元の文字を直すの事はありません。
よろしくお願いします。
この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 | |
[196327] Re[3]: オートフィルター使用して検索- ■記事引用/メール受信=OFF■ □投稿者/ kazuo -(2024/11/20(09:05)) □U R L/ >Rows("10:65536").Select
ということは、Excel2003以前ですか?
今後質問するときはOS選択、Excelのバージョン選択を必ずしてください。
環境ないので試せませんが、
> cr(2).Formula2 = "=IFERROR(SEARCH(WideHiragana(" & _
> 検索条件セル & "),WideHiragana(リスト!E2)),FALSE)"
Range.Formula2プロパティの動作に不安がありますし、ワークシート関数IFERRORも使えそうもありませんので、
>なにぶん建物名の検索なので元の文字を直すの事はありません。
作業列方式を採用ください。
一例
なお、複数の検索値を使用する場合は、リストが変更になるまでは作業列を一々消さずに検索するよう考慮してみてください。
Sub Macro作業列方式()
Dim myName As String
Dim myData
Dim myRange As Range
Dim 作業列 As Range
Dim i As Long
'以前の検索をクリア
With Worksheets("検索シート")
.Activate
.Rows("10:" & .Rows.Count).Delete
myName = .Range("c3").Value
End With
If myName <> "" Then
With Worksheets("リスト").Range("A1")
If .Worksheet.FilterMode Then .AutoFilter 'フィルター解除
Set myRange = .CurrentRegion
myData = myRange.Resize(myRange.Rows.Count + 1).Columns(5) '2行以上を担保
Set 作業列 = myRange.Offset(, myRange.Columns.Count).Resize(, 1)
End With
For i = 2 To UBound(myData)
myData(i, 1) = StrConv(myData(i, 1), vbWide + vbHiragana) '全角・ひらがなに変換
Next
With 作業列
.Value = myData
.AutoFilter 1, "*" & StrConv(myName, vbWide + vbHiragana) & "*" '全角・ひらがなでフィルター
myRange.Copy Worksheets("検索シート").Range("A9")
.AutoFilter
.ClearContents
End With
'検索シートの10〜200列まで高さを【20】にした
Worksheets("検索シート").Range("10:200").RowHeight = 20
End If
End Sub
この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 | |
[196333] Re[4]: オートフィルター使用して検索- ■ □投稿者/ みい -(2024/11/22(15:06)) □U R L/ kazuo様 再度コードを書いていただきありがとうございます。 一旦 列を作って「全角・ひらがな」に統一にして検索するんですね 確かにこれだと半角ののカナとR字も検索できます。 >Rows("10:65536").Select 上記についてはだいぶん昔に教えていただいたコードが 動いてるので使い回しで未だに使用していました。 あまりEXCELのVBAが作る事ないので今回考え方も含め勉強に なりました。 ありがとうございました。 | |
[196420] Re[5]: オートフィルター使用して検索- ■記事引用/メール受信=OFF■ □投稿者/ kazuo -(2025/01/13(12:34)) □U R L/ 質問です。 >Aファイルを保存時にAバックアップ.xlkのみ *.xlkファイルは保存前のデータおよびプロパティを持つファイルですが、それでよろしいのでしょうか 単に保存ししたブックと同じファイルを名前を変えて別フォルダに保存したいのではないですか? "Aファイル.xlsx"にて作成されるバックアップファイルの規定名はxl2021の場合"Aファイル のバックアップ.xlk"となりますが、"Aバックアップ.xlk"として保存させるのですか? >Aファイルを保存時に Aファイルとは"Aファイル.xls" "Aファイル.xlsx" "Aファイル.xlsm" のどれですか? コンスタント文で定義して良いですか? 保存時にということは保存前のイベントに記載しなければならないと思われますが、何というマクロブックに記載させますか? >別のフォルダ(例:バックアップ用)に 別のフォルダはどのように指定しますか? コンスタント文で定義して良いですか? なお、 >OS ⇒OTHER と有りますが、Windows 11はOSの選択肢にあります。選択してください。 | |
[196421] Re[6]: オートフィルター使用して検索- ■記事引用/メール受信=OFF■ □投稿者/ kazuo -(2025/01/13(12:35)) □U R L/ 間違えました。 | |
| このトピックに書きこむ |
|---|