Excel VBA 質問スレッド №2028 (未解決)

フィルターをM列に昇順でかけたいのですが、昇順になりません。

投稿者 : VBA見習い中     投稿日時 : 2024/10/18(Fri) 15:28:06     OS : Windows 11     EXCEL : Office 365
どなたか教えてください。私は素人で、AIに聞きながら作成しております。
以下のVBAで、フィルターをM列に昇順でかけたいのですが、昇順になりません。
フィルターの設定まではうまくいきます。
どこに問題があるか、どのように修正したら良いか、どなたか教えてください。

Sub フィルタで順位付けと結果入力()
    Dim wsDataMerge As Worksheet
    Dim lastRow As Long
    Dim i As Long

    ' シート「データ結合」を設定
    Set wsDataMerge = ThisWorkbook.Sheets("データ結合")
    
    ' 最終行を取得
    lastRow = wsDataMerge.Cells(wsDataMerge.Rows.Count, "A").End(xlUp).Row
    
    ' M列のデータを数値として認識させ、カンマ付きの形式に変換
    For i = 2 To lastRow
        If IsNumeric(wsDataMerge.Cells(i, "M").Value) Then
            wsDataMerge.Cells(i, "M").Value = CDbl(wsDataMerge.Cells(i, "M").Value)
            wsDataMerge.Cells(i, "M").NumberFormat = "#,##0"
        End If
    Next i
    
    ' フィルターを設定
    wsDataMerge.Range("A1:DX" & lastRow).AutoFilter Field:=13
    
    ' M列を昇順に並べ替え
    wsDataMerge.Sort.SortFields.Clear ' 並べ替えの設定をクリア
    wsDataMerge.Sort.SortFields.Add Key:=wsDataMerge.Range("M2:M" & lastRow), Order:=xlAscending
    With wsDataMerge.Sort
        .SetRange wsDataMerge.Range("A1:DX" & lastRow)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

スポンサーリンク
[返信 1] Re : フィルターをM列に昇順でかけたいのですが、昇順になりません。
投稿者 : tkit     投稿日時 : 2024/10/18(Fri) 15:51:43
コードは見てません。
単純にソートしてからフィルタを掛ければいいのでは?

[返信 2] Re : フィルターをM列に昇順でかけたいのですが、昇順になりません。
投稿者 : てらてら     投稿日時 : 2024/10/18(Fri) 19:43:26
こんにちは。

AIでなく、「マクロの記録」に聞くべきでしょう。


Sub フィルタで順位付けと結果入力()
    Dim wsDataMerge As Worksheet
    Dim lastRow As Long
    Dim i As Long

	'--- 省略 ---
    
    ' フィルターを設定
    'wsDataMerge.Range("A1:DX" & lastRow).AutoFilter Field:=13
    wsDataMerge.Range("A1:DX" & lastRow).AutoFilter
    
    ' M列を昇順に並べ替え
    'wsDataMerge.Sort.SortFields.Clear ' 並べ替えの設定をクリア
    wsDataMerge.AutoFilter.Sort.SortFields.Clear ' 並べ替えの設定をクリア
    'wsDataMerge.Sort.SortFields.Add Key:=wsDataMerge.Range("M2:M" & lastRow), Order:=xlAscending
    wsDataMerge.AutoFilter.Sort.SortFields.Add Key:=wsDataMerge.Range("M2:M" & lastRow), Order:=xlAscending
    'With wsDataMerge.Sort
    With wsDataMerge.AutoFilter.Sort
        '.SetRange wsDataMerge.Range("A1:DX" & lastRow)     //削除
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-05 18:00:41 )
タイトルとURLをコピーしました