アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル関数 INDEXとRANDBETWEENのことで質問です。

仮にN2からN5のセルにデータがあるとして、ランダムでM2のセルに1つ表示したいと考えています。

=INDEX(N2:N5,RANDBETWEEN(1,4))

この式で解決するのですが、N2からN5に空白があると「0」が表示させることもあります。

そこで、質問ですが、空白セルを無視するにはどうすればいいか教えてください。

よろしくお願いします。

A 回答 (5件)

N2からN5を昇順で並べ替えして、M2の式を



=INDEX(N2:N5,RANDBETWEEN(1,COUNT(N2:N5)))

にするとかではダメですか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。参考にさせていただきます。

お礼日時:2021/08/25 13:39

あぁ、ごめんなさい。


N列のデータを数値で考えてましたが、文字列という可能性もあるんですかね?
    • good
    • 0

添付図参照(Excel 2019)



=INDEX(N$1:N$5,SMALL(IF(N$1:N$5>0,ROW(N$1:N$5)),ROW(O1)))
の式(注記参照)を入力したセル O1 を下方にズズーッとオートフィル⇒セル P1 に式 =COUNT(O:O) を入力⇒式 =INDEX(OFFSET(O$1,,,P$1,),RANDBETWEEN(1,P$1)) を入力したセル A1 を(好きなだけ)下方にオートフィル

【注記】セル O1 の式のみは、必ず配列(CSE)数式として入力のこと
通常の Enterキーを叩いて入力する数式と異なり、式の両端に括弧らしき記号が付いていることにお気づきでしょうか?ちなみに、“CSE”は Ctrl+Shift+Enter を略記したものです。
「エクセル関数 INDEXとRANDBET」の回答画像3
    • good
    • 0
この回答へのお礼

回答ありがとうざいます。参考にさせていただきます。

お礼日時:2021/08/25 13:39

こんにちは



空いている列を、作業列として利用して
 ・各セルが空白かをチェック
 ・空白でないセルを抽出
 ・空白でないセル数で、ご提示の式を応用
といったように、順に求めてゆくのが確実と思います。

「御託はいいから、結果だけ欲しいんだっ‼」
というのであれば、M2セルに
=IFERROR(INDEX(N:N,AGGREGATE(15,6,ROW(N2:N5)/(N2:N5<>""),RANDBETWEEN(1,SUMPRODUCT((N2:N5<>"")*1)))),"")

※ 空白のセルだけを除いていますので、N2:N5に値が「0」のセルが存在する場合は、0が表示される可能性があります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。上手くできました。

それと、あと質問ついでにもう1つ教えてください。

セルV1~Z1にデータがあるとして、セルU1にランダムで表示して同じように空のセルを無視する場合も教えていただけないでしょうか?

すいませんが、よろしくお願いします。

お礼日時:2021/08/25 13:45

No4です



>セルV1~Z1にデータがあるとして、セルU1にランダムで表示して
>同じように空のセルを無視する場合も教えていただけないでしょうか?
対象が2次元の表になるので、そのまま処理するのは、ご質問の場合よりもさらに面倒になります。
No4に示した手順のうち、一番最初に「対象範囲を一列に並べなおす」というものを追加すれば、後は同じ手順でできることになります。

一つの関数式にする場合でも、考え方としては同じようになります。
(一行に纏めても、一列に纏めても、どちらでも良いですけれど)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
今回はNo4の方法でやるようにしました。

お礼日時:2021/08/26 08:59

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