[[20050228142534]] 『ROW(1:16)の意味』(めっち) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ROW(1:16)の意味』(めっち)

 こんにちわ。教えて下さい。
今、過去ログの[[20040629091848]]を試しているのですが、
 =LOOKUP(99^9,--LEFT(A1,ROW(1:16)))
 =LOOKUP(99^9,--RIGHT(A1,ROW(1:16)))
 こういう式がありました。
 意味は分かりませんが、そのとおりに入力すると、ちゃんと数字だけが取り出せました。
 でも、ROW(1:16)をROW($1:$10)とかROW($1:$100)に変えても取り出せるようなのです。
 この16には何か意味があるのでしょうか。16じゃないと都合が悪いことがあるのでしょうか。
 よろしくお願いいたします。


 ROW(1:16) は数値の桁数なので、ROW($1:$10)やROW($1:$100)でもかまいませんよ。

 ただ、10桁以上ある場合は不足しますし、エクセルで扱える数値は 42桁だっけ?(定かではない)
 ですから、100にしても処理が余計になるだけです。

 LOOKUPさんがそうされたのは、16桁もあれば十分だろうってことでしょう。

 (川野鮎太郎)

 以前同じような質問を↓で回答していただいています。参考になりませんか? (Hatch)
[[20040629091848]]『文字列を計算したい』(ひかる)


 上記の42桁って部分は間違いかも・・・(^_^A;

 (川野鮎太郎)

 川野さん、有難うございます。
 桁数なんですね。
 桁数にもROWを使うって不思議ですね?

 Hatchさん、有難うございます。
 それを見て疑問に思ったのでした。
 (めっち)

 ROWをCOLUMNにしても、動くような気がしますが気のせいでしょうか。
 (めっち)


 気のせいではないですよ。
 ROW関数やCOLUMN関数で配列を作っているだけです。
 こちらを一度見てください。なんとなく判ると思います。
http://skyblue123.hp.infoseek.co.jp/Excel/Hairetu.xls

 (川野鮎太郎)

 すでに川野鮎太郎さんHatchさんから、ご回答が出ていますが、簡単に補足させていただきます。
 (LOOKUP)

 A1:A16を選択し、数式バーに=ROW(1:16)と入力して、Ctrl+Shift+Enterとしご覧下さい。
 A1から下に1、2、…、…、16と表示するでしょう。
 =ROW(1:16)は、1から16の配列だということが、判りますね。

 B1を右クリックし、セルの書式設定、表示形式、分類をユーザー定義、種類を0として、
 B1に1234567890123456と16桁の数値を入力しますと、最後の6は、0に変るでしょう?
 15桁までしか手入力では、有効に入力できないのです。

 ですから、数値を含むセルには、前後に15桁以下の数字が入力されているわけです。

 B1に'-123456789012345ABCと入力します。
 A1:A16を選択して、クレアした後、右クリックして、B1と同様に表示形式を0とします。

 そのまま、数式バーに=--LEFT(B1,ROW(1:16))と入力し、Ctrl+Shift+Enterとしますと、
 このように表示します。文字列に--をつけ数値に変換できるものを数値にしています。
 数値に変換しないものは、#VALUE!となります。99^9は、99の9乗で、>10^16です。

 数式=LOOKUP(99^9,--LEFT(B1,ROW(1:16)))は、

 99^9を=LOOKUP()の第1引数に投入しますと、第2引数の一番奥の数値を戻します。
 =LOOKUP()は、配列を引数とすることを前提としていますので、=SUMPRODUCT()などと
 同様で、Ctrl+Shift+Enterとする必要は、ありません。        

       A      B
 1    #VALUE!   -123456789012345ABC
 2        -1
 3        -12
 4       -123
 5       -1234
 6      -12345
 7      -123456
 8     -1234567
 9     -12345678
10    -123456789
11    -1234567890
12   -12345678901
13    -123456789012
14  -1234567890123
15  -12345678901234
16 -123456789012345
17
18 -123456789012345 ←=LOOKUP(99^9,--LEFT(B1,ROW(1:16)))

 しかし、これらの数式は、'-1,200.5%ポイント や、
 '3月3日から開始 などにも対応していますので、カンマ区切りの長いものを
 対象とする場合には、もっと引数の数値を大きくする必要があるかもしれません。

 川野さん、LOOKUPさん、細かく砕いてご説明くださり有難うございます。
 配列が関係していることは理解できました。
 まだ食したばかりで消化して身になるまでには時間がかかると思います。
 今はまだ雲状の理解ですが、教えて頂いた方法を何度も何度も試して身に付けたいと思います。
 ご親切な講義を本当に有難うございました。
 (めっち)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.