ここには、のno-column-helperがあり、ゼロVBAが保証されています。
以下に示すように、私は配列数式を使用します。
= LEN(SUBSTITUTE(A2,",",""))
= SUM(
--ISNUMBER(
MATCH(
MID(
SUBSTITUTE(A2,",",""),
ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A2,",","")))),
1),
MID(
SUBSTITUTE(B2,",",""),
ROW(INDIRECT("1:"&LEN(SUBSTITUTE(B2,",","")))),
1),
0)
)
)
それが動作しない方法は?
まず、我々はそれに一致するものを一つずつ確認することができるように配列に、あなたの文字列中のすべての文字を取得する方法が必要です。我々は、以下の式を使用していることを行う:
MID(
SUBSTITUTE(A2,",",""),
ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A2,",","")))),
1)
一般的なロジックはなく<start_num>
に1つの数値を割り当てる、我々はROW(INDIRECT("1:"&LEN(SUBSTITUTE(A2,",",""))))
を使用して数値の配列を割り当てるMID(<text>,<start_num>,<num_chars>)
です。わかりやすい形式では、ROW([reference])
です(たとえば、ROW(1:10)
は1から10までの数字の配列、10個の要素からなる配列)。しかし、この式を有効にするには、配列のサイズが、作業中の文字数と等しく、,
カンマを除いていることを確認する必要があります。したがって、最初にSUBSTITUTE(A2,",","")
を使用してカンマを削除し、結果の文字列の長さをメモリに取得します。あなたはセルA2
にテキストA、Cを持っている場合たとえば、その後SUBSTITUTE
機能は、(メモリに)AC
をもたらすとLEN
戻ります。2.その後、我々は我々のアレイの境界として、その戻り値を使用を使用してその長さを取得します。 "1:"
と連結し、有効な参照を返すようにするには、INDIRECT
関数を使用します。我々は試合の検索文字列(例えば、セルB2
はA、B、Cは、我々はあまりにも、配列のそれを配置する必要があります含まれている)MATCH
機能を使用して
行動の検索のために上記繰り返し
。ここでは、上記の2つのステップを使用して生成した値の配列を使用します。 MATCH(<lookup_value>,<lookup_array>,[match_type])
は一般的な形式です。幸いにも、単一の値ではなく、<lookup_value>
の値の配列を使用することもできます。したがって、上記のステップ1で得られた配列をlookup_valuesとして使用します。
次に、ISNUMBER
を使用して一致数を確認します。 MATCH
関数は数値(配列内の一致した値の位置)を返します。したがって、単にISNUMBER
を使用して評価します。これはブール値の配列{TRUE,FALSE,TRUE}
を返しますが、何とかカウントする必要があるので、ダブルネゲート--
を使用して、{1,0,1}
の数値に変換します。
最後のステップは、一致の数を数えて、それをコンマなしの検索文字列の長さと比較するだけの、SUM
関数です。我々は
またCtrl + Shift + Enterキーを使用して式を確認し、あなたはすべての一致が見つかったかどうかを確認する最終段階でAND
機能を使用することができます。
EDIT1:すべての一致が見つかった場合は、直接評価するAND
を用いて式。セルA2
のすべての文字がセルB2
に設定されているすべての文字に発見された場合
= AND(
ISNUMBER(
MATCH(
MID(
SUBSTITUTE(A2,",",""),
ROW(INDIRECT("1:"&LEN(SUBSTITUTE(A2,",","")))),
1),
MID(
SUBSTITUTE(B2,",",""),
ROW(INDIRECT("1:"&LEN(SUBSTITUTE(B2,",","")))),
1),
0)
)
)
これはTRUE
を返します。これは、コンマで区切られた単一の文字列の場合にのみ機能します(例:A,K,E,G
)。A,B,C,D,E,F,G,H,I,J,K
で検索します。これは、コンマで区切られていない文字列(例:A,BC,D,EFG,H,I,J
BC,I
)です。私はこれがあなたになることを願っています。
'#VALUE! 'の代わりに期待される結果は何ですか?それを排除するだけなら、 'ISERROR'を使ってエラー値を扱うことができます。それ以外の場合、* A *と* C *がテキストに含まれているため、期待値が 'YES 'のままであれば、別の方法で式を書く必要があります。 – L42
配列にA、Cがあるので、私もyesの結果を得たいです。 – Mark
UDFを使用したVBAソリューションでも問題ありませんか? – Mrig