人生最悪の忘れ物

以前、質問をして、いただいた関数ですが
よくみると、理解できないところが
2箇所ありました
どなたかご教授願います

LEFT(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},ASC(A1)&1234567890))-1)
アルファベット(左側)と数字(右側)を分けるための関数ですが
上記は左側にあるアルファベットを取り出すためのものです

FIND({1,2,3,4,5,6,7,8,9,0},ASC(A1)&1234567890)の中の
(1){1,2,3,4,5,6,7,8,9,0}がなぜ配列になっているのか
(2)ASC(A1)&1234567890はなぜ「&1234567890」をつけているのか
理解できません

よろしくお願いいたします

A 回答 (4件)

(1){1,2,3,4,5,6,7,8,9,0}がなぜ配列になっているのか


A1の中から数値を見つけるためですね。{0-9}のような書き方でもOKです。
上記の場合、MIN関数を使うことで初めの数値のある桁数を抽出できます。

(2)ASC(A1)&1234567890はなぜ「&1234567890」をつけているのか
FIND関数は文字列の中に対象の文字がない場合エラーが表示され計算が中断されます。
文字列の後方に検索する文字をつけることでエラーを回避しているのです。
    • good
    • 0
この回答へのお礼

ありがとうございます
別例【{0-9}のような書き方でもOKです】まで
教えていただいて
大変助かります

お礼日時:2006/11/09 13:52

(1){1,2,3,4,5,6,7,8,9,0}がなぜ配列になっているのか



  全ての数字を一度で次々と検索するため。結果も配列となる。


(2)ASC(A1)&1234567890はなぜ「&1234567890」をつけているのか

  全ての数字をエラーなしで検索可能とするため
    • good
    • 0
この回答へのお礼

回答ありがとうございます
的確で大変わかりやすく
助かります

お礼日時:2006/11/09 13:53

A1=aaa1234567890



であれば、

=MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1))

は 4 になります。

が、

A1=aaa123456789

では、#Value! と表示されます。
これは、0 の検索に失敗したからです。

=MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1 & "0"))

で、この不具合は回避されます。

A1=aaa12345678

の9と0の検索に失敗する不具合を解消するには

=MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1 & "90"))

で、結局

A1=aaa

の場合の不具合対策として、

=MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1 & "1234567890"))

「全部ダミーをくっつけちゃえ!」ということでしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます
例が大変わかりやすくて助かります
どういった意味でのエラー回避なのか
理解できました

お礼日時:2006/11/09 13:53

1.1から0をそれぞれFINDで探しているのでは?その中の最小値が先頭の数字の位置になります。


2.エラー回避(末尾に付けておけば必ず値が返るので)だと思います。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます
大変助かります

お礼日時:2006/11/09 13:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報