
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」だとします。
- 上の開発者タブをクリックしてマクロ(ない場合は開発者タブをクリックし、大きな丸をクリックMicrosoft Office ボタンウィンドウの左上にあるExcel オプションをクリックし、人気のあるをクリックし、リボンに開発タブを表示するチェックボックスをオンにします。
- ダイアログボックスが表示されます。マクロ名:テキストボックスにマクロの名前を入力します。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
それを閉めてマイクロソフト ビジュアル ベーシックウィンドウを開いてクリックマクロに開発者タブ。
- 作成したマクロを選択し、オプション...ボタン。
- 下ショートカットキーこの機能に使用するショートカット キーを選択し (この例では「t」キーを使用します)、そこに入力します。
- 押すわかりましたボタンを押して閉じます大きいダイアログボックス。
- 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 ヘルプ ファイルから開発タブを取得する方法の説明を変更しました。)