過去の桐井戸端BBS (桐ver.9)
28939 一定の範囲を検索する場合の表引き関数の使い方がよくわかりません ひろしぴゃん 2005/02/05-12:21
初めて質問します。
過去ログで「Lookup関数と#表引き関数」の中で、

[使用時間] 月の使用時間 [料金] 月額料金
10H未満      1000円
10H以上20H未満 2000円
20H以上30H未満 3000円
30H以上      4000円
作成する基本料金のマスタ表はつぎのようになりますね。
[使用時間]    [料金]
[使用時間]整数, [料金]通貨 とします。
   0      1000
  10      2000
  20      3000 ファイル名を基本料金.TBLとします。
  30      4000

月次ごとの使用時間を入力すると月額料金を算出するTBLの項目を[月次][時間][金額]とし
ファイル名をプロパイダ料金表.TBLとします
と計算式は以下のようになります。
#表引き([時間],=>,"基本料金",[使用時間],[料金],"降順")
月の使用時間入力項目[時間]に12(時間)と入力すれば基本料金TBLの
12以下の数値10を検索し2000円を返してきます。
この時注意してほしいのは昇順でならべますと最初に12以下の数値0を検索し
1000円を返してきますので表引き関数の索引パラメータに降順を設定します。

と書いてあったのですが、[使用時間数]に何の数値を当てはめても[料金]は1000としか表示されません。
どなたか、ご教授下さい。(ちなみに、計算式自体はあっているとおもうのですが……)


28940 Re:一定の範囲を検索する場合の表引き関数の使い方について 宮城 2005/02/05-13:58
記事番号28939へのコメント
ひろしぴゃんさん、こんにちは。

>#表引き([時間],=>,"基本料金",[使用時間],[料金],"降順")

[時間]が"基本料金.tbl"の[使用時間]以上であればそのレコードの[料金]を得る。索引は"降順"に従う。

これで常に1000円しか返らないということであれば、昇順で検索してしまっているとしか思えません。
(0が先頭行なら常にヒットしますよね。)

索引内容を検討することをお奨めします。

28941 Re:一定の範囲を検索する場合の表引き関数の使い方について 悲しげ 2005/02/05-20:26
記事番号28939へのコメント
不思議に思って試してみました。
え〜、"基本料金.tbl"で、[使用時間]について降順の索引を設定し、
その名を"使用時間降順"としました。
で、入力用の表に下記の計算式を敢えてそのまんまコピペしてみると

(1) #表引き([時間],=>,"基本料金",[使用時間],[料金],"降順")

確かに仰せのように、[時間]にどの値を入力しても1,000となります。
では、(1)の計算式はどこが間違っているのでしょうか?

答えは、この場合は

(2) #表引き([時間],=>,"基本料金",[使用時間],[料金],"使用時間降順")

のように記述しなければならないと云うことです。
表引き表には"降順"と云う名の索引は存在していなかったからですね。

ついでに、索引名のところをあり得ない名で、

(3) #表引き([時間],=>,"基本料金",[使用時間],[料金],"hagehage順")

のように記述してみたのですが、桐様はエラーにはしないのですね。(^^;)


28942 Re:あり得ない索引名 悲しげ 2005/02/05-22:14
記事番号28941へのコメント
>ついでに、索引名のところをあり得ない名で、
>
>(3) #表引き([時間],=>,"基本料金",[使用時間],[料金],"hagehage順")
>
>のように記述してみたのですが、桐様はエラーにはしないのですね。(^^;)

どっかで既出だったと思うので探してみたら有りました。
例えば
http://www.fuku3.com/~habata/kbbs/kakov8/14383.htm
とか

28949 Re:一定の範囲を検索する場合の表引き関数の使い方について ひろしぴゃん 2005/02/06-14:42
記事番号28941へのコメント
悲しげさん


ご教授ありがとうございました。
さっそくためしてみます。

戻る