Excel VBA 質問スレッド №2028 (未解決)
フィルターをM列に昇順でかけたいのですが、昇順になりません。
投稿者 : VBA見習い中 投稿日時 : 2024/10/18(Fri) 15:28:06 OS : Windows 11 EXCEL : Office 365
どなたか教えてください。私は素人で、AIに聞きながら作成しております。
以下のVBAで、フィルターをM列に昇順でかけたいのですが、昇順になりません。
フィルターの設定まではうまくいきます。
どこに問題があるか、どのように修正したら良いか、どなたか教えてください。
どなたか教えてください。私は素人で、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でなく、「マクロの記録」に聞くべきでしょう。
こんにちは。
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-12-17 16:14:24 )