• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで,特定の漢字が入っている行のみ,下のほうに)

Excel VBAで特定の漢字が含まれる行を下にソートする方法

このQ&Aのポイント
  • ExcelのVBAを使用して特定の漢字が含まれる行を一番下にソートする方法について教えてください。
  • セルの特定の列(C列)に特定の漢字が含まれる行を下にソートする方法について教えてください。
  • Excelの特定の列に特定の漢字が含まれる行を一番下にソートする方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

記録マクロでは細かいところは、ちょっと思うように行かないかもしれませんが、基本的にはには、並べ替えで出来るかと思います。 特定のバージョンのクレジットは付けませんが、その機能があればどのバージョンでも問題ありません。検索は、InputBox を取り付けてもよいと思います。 Sub Test1()  Const sWORD As String = "和"  Dim rng As Range  Set rng = Range("A2", Cells(Rows.Count, 1).End(xlUp)).Resize(, 3)  Application.ScreenUpdating = False  With rng.Columns(3).Cells.Offset(, 1)   .Insert xlShiftToRight   .Offset(, -1).Formula = "=ISERROR(FIND(""" & sWORD & """,RC[-1]))"  End With  rng.Resize(, 4).Sort Key1:=rng.Cells(1, 4), _  Order1:=xlDescending, _  Header:=xlYes  rng.Resize(, 4).Columns(4).Delete  Application.ScreenUpdating = True End Sub

kkk1002
質問者

お礼

ご回答ありがとうございます。

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! すでに回答は出ていますので、参考程度で・・・ 一例です。 「特定の文字」が変わってもいいように、INPUTBOXを使ってみました。 Sub test() Dim i As Long Dim str As String str = InputBox("特定文字を入力してください。") For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 3) Like "*" & str & "*" Then Range(Cells(i, 1), Cells(i, 3)).Cut Cells(Rows.Count, 1).End(xlUp).Offset(1).Select ActiveSheet.Paste End If Next i For i = Cells(Rows.Count, 1).End(xlUp).Row To 3 Step -1 If Cells(i, 1) = "" Then Rows(i).Delete (xlUp) End If Next i End Sub こんな感じではどうでしょうか?m(__)m

kkk1002
質問者

お礼

ご回答ありがとうございます。

  • hananoppo
  • ベストアンサー率46% (109/235)
回答No.1

次のようなマクロでよいと思います。 Sub DataSort() Dim PasteRow As Long Dim LastRow As Long Dim MatchCell As Range Dim CutRow As Long Application.ScreenUpdating = False PasteRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 For LastRow = PasteRow - 1 To 3 Step -1 Set MatchCell = Range("C3:C" & LastRow).Find(What:="和", After:=Range("C" & LastRow), LookAt:=xlPart) If MatchCell Is Nothing Then Exit For Else CutRow = MatchCell.Row Rows(CutRow).Cut Rows(PasteRow) Rows(CutRow).Delete End If Next LastRow Application.ScreenUpdating = True End Sub このマクロはExcel 2000で作成しました。また、並び替え後も元の並び順が保たれるようにしています。

kkk1002
質問者

お礼

ご回答ありがとうございます。

関連するQ&A