1

Excel でセル数式を使用して、参照セル内の最初の非アルファ文字のインデックスを見つける方法はありますか?

次のような列を持つ Excel にデータをインポートしました。

<some text I don't want in the derived cell><some text that prepends the text I want and is always constant>TheTextIWant<Some non-alpha character><some other characters that may be alpha or not>

これまでのところ、次のような式を作成しようとしています。

=MID(<cell reference>, SEARCH("<prepended text>, <cell reference>) + <length of prepended text>, ??)

どこ ??"TheTextIWant" の後の最初の非アルファ文字を見つけるサブ式です。

これは可能ですか?

4

2 に答える 2

1

配列数式がどのように機能するかについてもう少し詳しく説明します (@Jacob の数式は、「A1A」の場合は 0 など、いくつかのケースでは少し間違っているようです)。読む。うまくいかない例があれば教えてください。

=IF(
    LEN(A1)=0
    ,0
    ,MIN(
        IF(
            ISNUMBER(
                1*MID(
                    A1,
                    ROW(INDIRECT("A1:A"&LEN(A1))),
                    1
                )
            ),
            ROW(INDIRECT("A1:A"&LEN(A1))),
            LEN(A1)+1
        )
    )
)
  1. この中心にあるのは row() 関数です。配列モードでは、範囲 a1:a*n* のセルごとに 1 回評価されます。ここで、nはセル A1 の文字列の長さであり、配列 { 1,2,..., n }.
  2. 配列は MID 関数に渡され、配列 {*char_1*,*char_2*,...,*char_n*} が生成されます。
  3. 配列は 1 で乗算され、以降の手順で数字がテキストとして解析されるのを防ぎます。これは、VALUE() を使用して行うこともできます。
  4. 次に、論理値の配列を出力する ISNUMBER() 関数に渡されます。

これは、 IF に渡される条件の配列です。次に、手順 1 を繰り返して、各文字の位置を含む 2 番目の配列を作成します。配列モードの IF 関数は、出力の配列を生成します。条件が TRUE であるケースは、文字位置の配列から対応する値に設定され、残りはすべて LEN(A1)+1 に設定されるため、数値文字の可能な位置の値よりも大きくなります。

次に、MIN 関数は IF による配列出力を評価し、セル A1 の文字列の最初の数字の位置である最小値を返します。最も外側の IF 関数は、セルにテキストがない場合、数式が 1 ではなく 0 を返すように強制します。それ以外の場合、INDIRECT は #REF を返します。上方に伝播するセル A0 を検索するとエラーが発生し、IF によって FALSE 条件が返され、0 + 1 = 1 が返されます。

代わりに最初の非数値文字の位置を検索するには、IF の 2 番目の 2 つの引数の順序を逆にするだけです。

=IF(
    LEN(A1)=0
    ,0
    ,MIN(
        IF(
            ISNUMBER(
                1*MID(
                    A1,
                    ROW(INDIRECT("A1:A"&LEN(A1))),
                    1
                )
            ),
            LEN(A1)+1,
            ROW(INDIRECT("A1:A"&LEN(A1)))

        )
    )
)
于 2012-03-04T22:48:50.697 に答える
0

このページには、「文字列の最初の桁の位置」を見つけるための配列式があります。「T」関数を使用して(文字がテキストかどうかを判断するために)それを変更し、少し減算を組み込んで、探しているものに到達できるはずです。

于 2009-10-01T21:29:26.203 に答える