Sub FilterByLastDigit()
Dim askDigit As Variant ' ユーザー入力値
Dim cellItem As Range ' ループ用セル
Dim dataRange As Range ' 抽出対象範囲
Dim wsTarget As Worksheet
Set wsTarget = ActiveSheet
Set dataRange = wsTarget.Range("InvoiceList") ' 名前付き範囲を取得
'--- 末尾数字をユーザーに入力してもらう ---
askDigit = Application.InputBox( _
Prompt:="抽出したい末尾の数字を入力してください。", Type:=2)
' キャンセル時は処理を終了
If askDigit = False Or Len(askDigit) = 0 Then Exit Sub
'--- 数値セルを文字列化し、ワイルドカード検索を有効化 ---
For Each cellItem In dataRange.Columns(1).Cells
If IsNumeric(cellItem.Value) Then
cellItem.Value = "'" & cellItem.Value
End If
Next cellItem
'--- フィルターで末尾一致を抽出 ---
dataRange.AutoFilter Field:=1, _
Criteria1:="=* " & askDigit, _
Operator:=xlFilterValues
End Sub
コードのポイント
行
説明
9
InvoiceList は列 A を含む表全体の名前付き範囲です。シート状況に合わせて変更してください。