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

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

VBAで,特定の漢字が入っている行のみ,下のほうに

ExcelのVBAでのソートについて教えていただきたいと思います。 行を並べ替える(2行目が見出し行なので,3行目以降)のですが, 或る列(C列)に特定の漢字が入っている行を, 一番下にしたいのですが, どのようにすればよろしいでしょうか? 3行目以降のイメージとしては: あい う   え和えええ おか きき  くけこ さし すすす せそ和 たち つて  和となにぬねの はひ ふへ  ほ ↓ おか きき  くけこ はひ ふへ  ほ あい う   え和えええ さし すすす せそ和 たち つて  和となにぬねの 上記の例のように, 「和」という文字がC列に含まれている行のみを下のほうに集め, 入っていない行を上のほうに集めたいのです。 上記はイメージなので, 実際は, 「特定の文字だけが漢字で,他はすべて平仮名」なんてことはありません。 「和」という文字がC列に含まれている行のみを下のほうに集めるという並べ替え前の 行の順序は, 必ずしも保たれている必要はありません。 Excel2000ですが,回答は他のバージョンでもいいです。 どのバージョンか断っていただくとこちらとしても参考になります。

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

  • ベストアンサー
  • 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

  • 重複抽出して片方を削除

    A列  B列  C列  D列  E列 ・・・ 1234  あい  うえ  おか   0 ・・・ 5678  かき  くけ  こさ  さし ・・・ 9123  すせ  そた  たち  つて ・・・ 4567  とな  にぬ  ぬね  のた ・・・ 1234  あい  うえ  おか  はま ・・・ 8912  はひ  ふへ  ほま  やら ・・・ 4567  とな  にぬ  ぬね   0 ・・・          ↓↓↓ 重複を取り出す A列  B列  C列  D列  E列 ・・・・・・・・・・・ 1234  あい  うえ  おか   0  ・・・・・・・・・・・ 1234  あい  うえ  おか  はま  ・・・・・・・・・・・ 4567  とな  にぬ  ぬね  のた  ・・・・・・・・・・・ 4567  とな  にぬ  ぬね   0  ・・・・・・・・・・・ 上記のように重複を取り出しE列に『0』と表記されている方を削除したいのですが、やり方がわかりません。 重複の抽出法と、削除方を教えてください。 列項目はかなり有り、行も5000以上あるデータです。

  • エクセルで特定の文字列が入った行を非表示にしたい

    エクセル(97)で特定の列のセルに特定の文字列が入った行を非表示にする機能はありますでしょうか? 例えばC列の3行目以降から「無し」という文字列が入ったらその行を非表示にしたいのですが・・・

  • セル内で改行された文字列を1行ずつ他のセルに移す

    excelで、こんなことできますか? book1で、セル内に下のような改行した文字列があり、それを入力したら、 book2に、文字列を1行ずつ他のセルに取り出したいのですが…できますか? book1 (セルは折り返して全体を表示する) book2 (仕上げの画面) A         A あいうえお                    1 あいうえお 1 かきくけこ                    2 かきくけこ さしすせそ                    3 さしすせそ → 4 たちつてと 2 たちつてと                    5 なにぬねの なにぬねの                     6 はひふえほ 3 はひふへほ 教えていただけると助かります。(ただしマクロはよくわからないのですが…)

  • エクセルで特定の文字が含まれる行から特定の文字が含まれる行の削除方法

    エクセルで特定の文字が含まれる行から特定の文字が含まれる行の削除方法 表題のとおりですが、エクセルで特定の文字が含まれる行から特定の文字が含まれる行の削除方法について教えてください。 特定の文字(C列にあります)が含まれている行から5行下の先ほどとは違う文字(これもC列にあります)までを削除したいのです。 それがたくさんあり大変困っております。 エクセルを起動してマクロの記録を行い手作業で5回削除し記録終了としたのですが、 5回以上削除したい場合は操作が行われませんでした。 これをマクロで行うにはどういう式を作ればいいでしょうか? 宜しくお願いします。

  • エクセルVBAで特定の文字を含まない行を削除する

    エクセルVBAで特定の文字列(たとえば” りんご ”)を含まない行を削除するものを作成したいです。 ” りんご ”がB列だけにしかない場合は作成できたのですが、 ” りんご ”がB列とC列にも含まれていて どちらかに含まれていたら、その行を残して、それ以外の行を削除したい場合にはどうしたらいいのかわかりませんでした。 教えてください。 

  • VBA 特定の文字列を含む行を削除する方法

    特定の文字列を含む行を削除する方法が知りたいです。 行を削除する方法はWebで見つけたのですが↓ ---------------------------------------------------- Sub 特定の文字列を含む行を削除() Dim c As Range Dim myRow As Long With Range("A:A") Set c = .Find("特定の文字列") Do While Not c Is Nothing Rows(c.Row).Delete shift:=xlUp Set c = .Find("特定の文字列") Loop End With End Sub ---------------------------------------------------- ↑行を指定している箇所のRowsを Columns  RowをColomn に変更して以下の様にしてみました、   Columns(Colomn,c).Delete shift:=xlUp だめでした、、、。 VBAの知識が乏しく、組み立て方について理解が無いため、どうすればよいかさっぱりわからず、、 こちらで質問させて頂きました。。。 何卒宜しくお願い致します。

  • 2つのセルが重複しているものをすべて抽出

    A列 B列 C列 あい うえ 0 かき くけ こ さし すせ そ たち つて と あい うえ お 上記の重複でC列だけが異なっているがA、B列は同じものを抽出することは可能ですか? A列 B列 C列 あい うえ 0 あい うえ お 又、上記のように抽出したうちC列に『0』となっているのをすべて削除したいのですが。 アドバイスお願いします。

  • 複数行を特定の列の各セルの中にある特定の文字列でソートする

    複数行を特定の列の各セルの中にある特定の文字列でソートしてその特定の文字のみが含まれる行のみ取り出す方法って簡単にできますか? たとえばA1からF100までのセルでC列のセルに特定の文字列が含まれる場合その行を集めて残りはそのしたの行に置き換えるとか。 特定の文字列はセルの文字列の中のどの部分にあるかは任意とします。よろしくおねがいします。 イージス

  • Excelで特定の文字を抜き出す

    Excelで関数を使い、特定の文字列を自動で抜き出し、二つの列に分けたいです。 あいうえお0X =AAA= かきくけこ00 =BBBB= さしすせそ000 =CCC= たちつてと0 =DD= なにぬねの00X =EEE= はひふへほ000 =F= 上記のようにA1~A6に、文字数も文字もバラバラのセル列があったとします。 これを以下のように分解したいです。 例: A1:あいうえお0X =AAA= A2:かきくけこ00 =BBBB=    ↓ 「B1:あいうえお0X」と「C1:AAA」 「B2:かきくけこ00」と「C2:BBBB」 関数を教えて下さい。

  • javaScriptで、テキストエリアのある文字列を見つけて、

    javaScriptで、テキストエリアのある文字列を見つけて、 その行から、1行目と2行目を消すという処理を行いたいのですが、 コーディングがわかりません。 教えて下さい。 (例) 下記のテキストエリアから、「<ターゲット文字列>」を見つけて、 その行から1行目と2行目、つまりは、「さしすせそ」と「たちつてと」を削除したいです。 -----textarea----- あいうえお かきくけこ <ターゲット文字列> さしすせそ たちつてと

専門家に質問してみよう