スティーブンは、たくさんのテキストを含むワークシートを持っています。列Aのセルで、= XX =より前のすべてなど、特定の文字シーケンスの前に発生する可能性のあるすべてを削除したいと考えています。各セルにこれらの文字の複数のインスタンスが存在する可能性がありますが、スティーブンは最初の出現の前にすべてを削除したいだけです。

これを行う1つの方法は、数式を使用することです。たとえば、次の数式はセルA1にあるものをすべて評価し、= XX =文字までのすべてを返すだけです。セル内に文字が見つからない場合は、セル全体が返されます:

=RIGHT(A1,IF(ISERROR(FIND("=XX=",A1,1)), LEN(A1),LEN(A1)-FIND("=XX=",A1,1)+1))

代わりに、= XX =の最初のオカレンスを返さないようにする場合は、式の終わり近くの+1を-3に変更するだけです。

マクロベースのソリューションが必要な場合は、次のようなルーチンを使用できます。現在選択されているすべてのセルを調べてから、= XX =シーケンスの前のすべてを削除します。

Sub DeleteToSequence()

Dim rCell As Range     Dim sSeq As String     Dim x As Long

sSeq = "=XX="

For Each rCell In Selection         x = InStr(rCell.Value, sSeq)

If x > 0 Then             rCell.Value = Mid(rCell, x)

End If     Next

Set rCell = Nothing End Sub

このマクロは、特に検索対象が等号で始まる場合(= XX =のように)、いくつかのエラーを引き起こす可能性があることに注意する必要があります。

等号で始まる文字列がセルに詰め込まれると、#NAME?が表示されます。 Excelが数式を含むかのようにセルを解析しようとするため、エラーが発生します。

文字シーケンスまでのすべてを削除する場合は、ルーチンの途中で次の行を使用します。

rCell.Value = Mid(rCell, x + Len(sSeq))

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(8446)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。

link:/ excel-Deleting_Everything_Up_to_a_Character_Sequence [文字シーケンスまでのすべてを削除]