[[20250314144802]] 『rand×vlookupで』(トレチノイン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『rand×vlookupで』(トレチノイン)

 疑似タロット占いを作成しています。
 sheet1
 |A    |B|C   |D |
1|    | |   |正 |
2|=rand() |0|愚者 |No |
3|=rand() |1|魔術師|Yes| …

 sheet2
 |A   |B   |
1|=rand()|=rand()|
2|※1  |※2

 ※1 =VLOOKUP(A1,一覧!A2:G23,3)
 ※2 =IF(B1>0.499,XLOOKUP(A3,一覧!C:C,一覧!E:E),XLOOKUP(A3,一覧!C:C,一覧!G:G))

 おおよそこういうフォーマットです。
 ※1の式なのですが、Vlookupで引数省略の場合は近似値検索になると思うのですが
 たまに何も引っかからずに#N/Aエラーになります。
 sheet1のrandを見ても、近しい値はあるのですが。

 xlookupで小さいほうか大きいほうかにしろ、というのは一旦置いておいて
 なぜエラーが起きるのかを知りたいです。

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


sheet1は何を意味しているのですか。
一覧!A2:G23の内容はどのようになっているんですか。
(?) 2025/03/14(金) 15:32:40

 VLOOKUPのヘルプを確認してください。

 検索の型の指定を省略したとき、Trueとみなされますが、
 その時には、検索範囲の最初の列は、数値順になっていることが求められると思います。
 ランダムになっているとエラーになる可能性が高いと思います。

 "一覧"ってなんですか?Sheet1,Sheet2のほかにそういうシートがあるんですか?

(xyz) 2025/03/14(金) 15:42:31


 すみません、sheet1が一覧です。
 ヘルプ見ました。結局ランダムだと難しいようなので、方策を考えます。ありがとうございました。
(トレチノイン) 2025/03/14(金) 16:26:58

sheet1のA列にRAND関数を使うことに問題があるように見えます

sheet2!A1の値がSheet1!A列のどの値よりも小さい場合、「検索値未満の最大値」が存在しないためエラーを吐き出します

0/22,1/22,2/22,3/22… と分数の固定値にすることをうまくいくと思います
(エリス) 2025/03/18(火) 19:48:24


 おっしゃっていることは正しいのですが。。。固定にすると、均等な確率で(理論上)出てしまうため
 気分として実際のタロットの感じが出ないなと思った次第です。

 結局、Sheet2側に
 =SORT(FILTER(Sheet1!A:G,ISNUMBER(Sheet1!A:A)))
 で表を再生成し

 =XLOOKUP(A1,A3:A24,C3:C24,C3,-1)
 で対応しました。
(トレチノイン) 2025/03/26(水) 14:51:26

VLOOKUP関数は検索値が昇順に並んでいる必要もあったので、
sheet2!A1の乱数を[0〜1]ではなく[0〜sheet1!A22]にしてみました

sheet1!A1=0
sheet1!A2=RAND()
sheet1!A3=A2+RAND()
 :
sheet1!A22=A21+RAND()

sheet2!A1=RAND()*sheet1!A22
(エリス) 2025/03/26(水) 18:14:21


コメント返信:

[ 一覧(最新更新順) ]


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