- ベストアンサー
エクセル、この関数の意味は?
以前、質問をして、いただいた関数ですが よくみると、理解できないところが 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」をつけているのか 理解できません よろしくお願いいたします
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
(1){1,2,3,4,5,6,7,8,9,0}がなぜ配列になっているのか A1の中から数値を見つけるためですね。{0-9}のような書き方でもOKです。 上記の場合、MIN関数を使うことで初めの数値のある桁数を抽出できます。 (2)ASC(A1)&1234567890はなぜ「&1234567890」をつけているのか FIND関数は文字列の中に対象の文字がない場合エラーが表示され計算が中断されます。 文字列の後方に検索する文字をつけることでエラーを回避しているのです。
その他の回答 (3)
(1){1,2,3,4,5,6,7,8,9,0}がなぜ配列になっているのか 全ての数字を一度で次々と検索するため。結果も配列となる。 (2)ASC(A1)&1234567890はなぜ「&1234567890」をつけているのか 全ての数字をエラーなしで検索可能とするため
お礼
回答ありがとうございます 的確で大変わかりやすく 助かります
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")) 「全部ダミーをくっつけちゃえ!」ということでしょう。
お礼
回答ありがとうございます 例が大変わかりやすくて助かります どういった意味でのエラー回避なのか 理解できました
- cafe_au_lait
- ベストアンサー率51% (143/276)
1.1から0をそれぞれFINDで探しているのでは?その中の最小値が先頭の数字の位置になります。 2.エラー回避(末尾に付けておけば必ず値が返るので)だと思います。
お礼
早速の回答ありがとうございます 大変助かります
お礼
ありがとうございます 別例【{0-9}のような書き方でもOKです】まで 教えていただいて 大変助かります