セルに部分文字列が含まれているかどうかを確認する


229

セルに特定の文字/部分文字列が含まれているかどうかを確認するための組み込み関数はありますか?

それはあなたがテキストの機能を適用することができますを意味しますようにLeft/ Right/ Mid区切り文字が存在しないときのエラーをスローせず、条件に基づき。

回答:


374

これを使ってみてください:

=ISNUMBER(SEARCH("Some Text", A3))

TRUEセルにA3が含まれてSome Textいる場合に返されます。


7
ずるい!ありがとうgwin003 :)まだ直感的な機能がないことにまだ少し驚いています。
地質学2013

18
ええ、私は同意します、もしCONTAINS("Text", cell)機能があればいいのですが。
gwin003 2013

20
このiは大文字と小文字を区別しないことに注意してください。大文字と小文字を一致させたい場合は、FIND()代わりに使用する必要がありますSEARCH()
Code Jockey

7
,代わりにを使用してエラーが発生しました;。提供された式を変更した後、=ISNUMBER(SEARCH("Some Text"; A3))それは機能しました。ありがとう!
renatov 2015

6
@renatovは、実際にはOS のロケールに依存します。具体的には、「リスト区切り文字」に使用される文字。
pepoluan 2015

22

次の数式は、セルC10にテキスト「CHECK」が表示されるかどうかを決定します。そうでない場合、結果は空白になります。もしそうなら、結果は作品「CHECK」です。

=IF(ISERROR(FIND("CHECK",C10,1)),"","CHECK")

行の先頭に4つのスペースまたはタブを使用して、コードブロックを強調表示できます。
NiematojakTomasz 2015年

@Steve、ありがとう;)
Dimitri

12

この式は私にとってより直感的に見えます。

=SUBSTITUTE(A1,"SomeText","") <> A1

これは、「SomeText」がA1に含まれている場合にTRUEを返します。

他の回答で述べられているIsNumber / SearchおよびIsError / Findの数式は確かに機能しますが、ヘルプを調べたり、Excelでこれらの数式を何度も試したりする必要が常にあります。


12

IFステートメント内の単一の関数を使用してこれを実行したい人のために、私は使用します

=IF(COUNTIF(A1,"*TEXT*"),TrueValue,FalseValue)

部分文字列TEXTがセルA1にあるかどうかを確認する

[注:TEXTの周りにはアスタリスクが必要です]


これは機能しますが、巨大なデータがあり、ファイルサイズが大きくなってもファイルが応答しなくなると、COUNTIF式を使用します
Gaurravs

8

FIND()Excelで関数を確認してください。

構文:

FIND( substring, string, [start_position])

#VALUE!部分文字列が見つからない場合に返します。


はい、ISNUMBERこれにネストされても機能します。大文字と小文字が区別される一致に対してのみです。
地質学2016年

1

私はRink.Attendant.6の答えが好きです。実際に複数の文字列をチェックしたいので、次のようにしました。

最初の状況:ホームビルダーまたはコミュニティ名にすることができる名前で、ビルダーを1つのグループとしてバケット化する必要があります。これを行うには、「ビルダー」または「建設」などの単語を探しています。

=IF(OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*builder*")),"Builder","Community")

SOへようこそ。あなたは良い答えをするものについて読んでおくべきです。
地質学2016年

私はこれが何をするつもりなのか理解していません。たぶん1回で十分だと思われるときに、ビルダーを2回チェックします。ビルダーが見つかった場合はビルダーを返し、見つからなかった場合はコミュニティを返します。建設という言葉はどこにも現れません。たぶん=OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*construction*"))
2016年

ありますCOUNTIFSCOUNTIFS(A1,"*builder*",A1,"*construction*")
vstepaniukは

1

古い質問ですが、まだ有効だと思います。

CONTAINS関数がないので、VBAで宣言してみませんか?以下のコードは、文字列内の部分文字列を検索するVBA Instr関数を使用しています。文字列が見つからない場合は0を返します。

Public Function CONTAINS(TextString As String, SubString As String) As Integer
    CONTAINS = InStr(1, TextString, SubString)
End Function

個人の効率を改善するための良い方法ですが、再現性を犠牲にして私は言います:)
地質学

0

これは古い質問ですが、Excel 2016以降を使用している場合の解決策は、新しいIFS( condition1, return1 [,condition2, return2] ...)条件を使用してネストされたif構造の必要性を取り除くことができるということです。

この質問のケースで使用する方法を視覚的に明確にするためにフォーマットしました。

=IFS(
ISERROR(SEARCH("String1",A1))=FALSE,"Something1",
ISERROR(SEARCH("String2",A1))=FALSE,"Something2",
ISERROR(SEARCH("String3",A1))=FALSE,"Something3"
)

SEARCH文字列が見つからない場合はエラーを返すのでISERROR(...)=FALSE、真偽をチェックして必要な値を返すようにラップしました。SEARCH読みやすさのためにエラーの代わりに0を返すのは素晴らしいことですが、それは残念ながらそれが機能する方法です。

重要なもう1つの注意事項は、IFS最初に検出した一致を返すため、順序が重要であることです。例えば、私の文字列があった場合Surf, Surfing, Surfsとして、String1,String2,String3上記と私の細胞列だったSurfingことが原因でサブストリングであることの第二のではなく、第一項に一致しますSurf。したがって、一般的な分母はリストの最後にする必要があります。私IFSSurfing, Surfs, Surf正しく動作するように注文する必要があります(スワッピングSurfingSurfsこの簡単な例でも動作します)が、Surf最後に動作する必要があります。


ほとんどの場合、if / else機能、つまりデフォルト値が必要です。この引用を追加すると、「すべてのテストがFALSE(つまり、falseの場合は値)を返す場合、デフォルトを設定する方法はありません。代わりに、最後のテストにTRUEを入力してから、値をデフォルト値がFALSEの場合」
ホイットニーランド、

-3

これが私が使っている式です

=IF( ISNUMBER(FIND(".",A1)), LEN(A1) - FIND(".",A1), 0 )


これにより、「。」かどうかが確認されます。A1に含まれている場合、A1に残っている文字数を返します。その追加の計算がここで関連しているかどうかはわかりません。
グレード「Eh」ベーコン

少なくとも、使用IFERROR(LEN(A1) - FIND(".", A1), 0)
Nigel Touch
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.