質問番号:1440684528

Excelの質問です。一番右端の半角スペース以降の文字列をすべて削除するような関数やマクロはないでしょうか。
今、B列に次のようなデータが、4万行近く並んでおります。

                                            • -

らくだ 動物 アフリカ
らくだ 動物 特徴
らくだ 生息地 アジア
らくだ 生態 進化の過程
・・・

                                            • -


といった感じです。
この状態から、一番右端の半角スペース以降の文字列全てを削除したいので、

                                            • -

らくだ 動物
らくだ 動物
らくだ 生息地
らくだ 生態
・・・

                                            • -

のようにしたいのですが・・・データが膨大で、手作業で行うのは途方もない作業です。
関数やマクロを用いて、何とか効率的に文字列を削除する方法はないでしょうか。

よろしくお願い致します。

回答

Option Explicit

Sub main()

    Dim MAXROW As Long
    Dim SPCount As Integer
    Dim lp As Long
    Const SPChar As String = " "

    MAXROW = Me.Range("A" & Rows.Count).End(xlUp).Row
        
    If MAXROW < 1 Then
       Exit Sub
    End If
              
    For lp = 1 To MAXROW

        ' 文字列後ろからスペースを探す
        SPCount = InStrRev(Cells(lp, 1), SPChar)
        If SPCount > 0 Then
            Cells(lp, 2) = Left(Cells(lp, 1), SPCount - 1)
        Else
            Cells(lp, 2) = Cells(lp, 1)
        End If
    Next lp

End Sub

出力結果

http://officetanaka.net/excel/vba/function/InStrRev.htm
InStrRev関数(Office Tanaka)