Excel - 各列の 4 番目の単語を削除する

Excel - 各列の 4 番目の単語を削除する

Excel スプレッドシートの各列の 4 番目の単語を削除するにはどうすればよいでしょうか。たとえば、「Mr. and Mrs Smith」という単語があるとします。Mr. and Mrs. は残して、Smith を削除したいのですが、4 番目の単語を見つけて削除する方法はありませんか。ご協力いただければ幸いです。

答え1

これは一種の回避策ですが、通常のテキスト(数式ではない)を扱う場合には機能します。

データが入ったシートの名前が「Sheet1」だとします。スプレッドシートに新しいワークシートを作成し(「Sheet2」と呼ぶことにします)、A1 に次のように入力します。

=IFERROR(LEFT(Sheet1!A1,FIND(" ",Sheet1!A1,FIND(" ",Sheet1!A1,FIND(" ",Sheet1!A1)+1)+1)-1),"")

削除したい場合のみ4番目の単語は次のように入力します。

=IFERROR(LEFT(Sheet1!A1,FIND(" ",Sheet1!A1,FIND(" ",Sheet1!A1,FIND(" ",Sheet1!A1)+1)+1))&RIGHT(Sheet1!A1,LEN(Sheet1!A1)-FIND(" ",Sheet1!A1,FIND(" ",Sheet1!A1,FIND(" ",Sheet1!A1,FIND(" ",Sheet1!A1)+1)+1)+1)),IFERROR(LEFT(Sheet1!A1,FIND(" ",Sheet1!A1,FIND(" ",Sheet1!A1,FIND(" ",Sheet1!A1)+1)+1)-1),""))

セルA1をコピーし、作業したいデータがあるSheet1のセルと一致するSheet2のセルに貼り付けます。(つまり、Sheet1のセルA1からD5にデータがある場合は、Sheet2のセルA1からD5に貼り付けます。)貼り付けたセルをすべてコピーし、Sheet1に切り替えて、値を貼り付ける一致する場所で、Sheet2 を削除できます。

答え2

これは突飛なアイデアかもしれませんが、ファイルをスペース区切りのファイルにして、Excel で開いてみてください。次に、4 番目の列を削除します。紙の上では良さそうですが...それ以外は分かりません。

答え3

Visual Basic マクロを貼り付けても問題ない場合は、よりエレガントで効率的な方法を以下に示します。

データが入ったシートの名前が「Sheet1」だとします。

  1. 上の開発者タブをクリックしてマクロ(ない場合は開発者タブをクリックし、大きな丸をクリックMicrosoft Office ボタンウィンドウの左上にあるExcel オプションをクリックし、人気のあるをクリックし、リボンに開発タブを表示するチェックボックスをオンにします。
  2. ダイアログボックスが表示されます。マクロ名:テキストボックスにマクロの名前を入力します。4番目の単語を削除働くでしょう。
  3. クリック作成するボタンをクリックします。(作成するボタンがまだ無効になっている場合は、マクロ名からスペースと句読点を削除してください。
  4. 表示されるウィンドウの「Sub DeleteFourthWord()」と「End Sub」の間のスペースに次のコードを貼り付けます。

     For Each c In ActiveCell.CurrentRegion.Cells
            If c.HasFormula = False Then
                Original_Cell_Text = c.Value
                Text_To_Parse = Original_Cell_Text
                Word1 = Left(Text_To_Parse, InStr(1, Text_To_Parse, " ", vbTextCompare))
                If Len(Word1) = 0 Then
                    Word1 = Text_To_Parse
                    Text_To_Parse = ""
                Else
                    Text_To_Parse = Right(Text_To_Parse, Len(Text_To_Parse) - Len(Word1))
                End If
                Word2 = Left(Text_To_Parse, InStr(1, Text_To_Parse, " ", vbTextCompare))
                If Len(Word2) = 0 Then
                    Word2 = Text_To_Parse
                    Text_To_Parse = ""
                Else
                    Text_To_Parse = Right(Text_To_Parse, Len(Text_To_Parse) - Len(Word2))
                End If
                Word3 = Left(Text_To_Parse, InStr(1, Text_To_Parse, " ", vbTextCompare))
                If Len(Word3) = 0 Then
                    Word3 = Text_To_Parse
                    Text_To_Parse = ""
                Else
                    Text_To_Parse = Right(Text_To_Parse, Len(Text_To_Parse) - Len(Word3))
                End If
                Word4 = Left(Text_To_Parse, InStr(1, Text_To_Parse, " ", vbTextCompare))
                If Len(Word4) = 0 Then
                    Word4 = Text_To_Parse
                    Text_To_Parse = ""
                Else
                    Text_To_Parse = Right(Text_To_Parse, Len(Text_To_Parse) - Len(Word4))
                End If
                Remaining_Text = Text_To_Parse
                If (Len(Word1) > 0 And Len(Word2) > 0 And Len(Word3) > 0 And Len(Word4) > 0) Then
                    If Len(Remaining_Text) > 0 Then
                        c.Value = Word1 + Word2 + Word3 + Remaining_Text
                    Else
                        c.Value = Word1 + Word2 + Word3
                    End If
                End If
            End If
        Next
    
  5. それを閉めてマイクロソフト ビジュアル ベーシックウィンドウを開いてクリックマクロ開発者タブ。

  6. 作成したマクロを選択し、オプション...ボタン。
  7. ショートカットキーこの機能に使用するショートカット キーを選択し (この例では「t」キーを使用します)、そこに入力します。
  8. 押すわかりましたボタンを押して閉じます大きいダイアログボックス。
  9. 4 番目の単語を削除するセルを選択し、ショートカット キー (Ctrl + t など) を押します。この手順は必要な回数だけ繰り返すことができます。

注記:3 番目の単語以降のすべてを削除する場合は、代わりにこれを貼り付けます。

For Each c In ActiveCell.CurrentRegion.Cells
    If c.HasFormula = False Then
        Original_Cell_Text = c.Value
        Text_To_Parse = Original_Cell_Text
        Word1 = Left(Text_To_Parse, InStr(1, Text_To_Parse, " ", vbTextCompare))
        If Len(Word1) = 0 Then
            Word1 = Text_To_Parse
            Text_To_Parse = ""
        Else
            Text_To_Parse = Right(Text_To_Parse, Len(Text_To_Parse) - Len(Word1))
        End If
        Word2 = Left(Text_To_Parse, InStr(1, Text_To_Parse, " ", vbTextCompare))
        If Len(Word2) = 0 Then
            Word2 = Text_To_Parse
            Text_To_Parse = ""
        Else
            Text_To_Parse = Right(Text_To_Parse, Len(Text_To_Parse) - Len(Word2))
        End If
        Word3 = Left(Text_To_Parse, InStr(1, Text_To_Parse, " ", vbTextCompare))
        If Len(Word3) = 0 Then
            Word3 = Text_To_Parse
            Text_To_Parse = ""
        Else
            Text_To_Parse = Right(Text_To_Parse, Len(Text_To_Parse) - Len(Word3))
        End If
        Remaining_Text = Text_To_Parse
        If (Len(Word1) > 0 And Len(Word2) > 0 And Len(Word3) > 0) Then
            c.Value = Word1 + Word2 + Word3
        End If
    End If
Next

(ソース注記: Excel ヘルプ ファイルから開発タブを取得する方法の説明を変更しました。)

関連情報