ExcelのRand関数、RandBetween関数はあまり精度がよくないので、メルセンヌツイスターを利用した乱数精製器を使えと、よく言われます。

なんとなく、悪いのだろうな(というよりそれほど重要視していないだろう)という認識はありますが、実際どの程度悪くて、どんなレベルになら利用しても差し支えなくて、どんな状況下では使ってはいけないのか、線引きをするため(と統計学の手法を勉強したいこともあって)自分で検証してみようかと考えています。
なるべくExcelだけですむようにと考えています。

そこで質問です。
(1)まず、データの個数は30万個にしました(うちのPCで操作できる限界がこの辺でしたので)
(2)A1~J30000までに「randbetween(1,300000)」という関数を入力し、30万個のセルに1~300000(30万個)のデータを入力しました。
(3)さらにL1にcountif($A$1:$J$30000,(1))と入力し((1)の部分は1~300000)出現数をカウントしました。

ここまでやってみてぱっと見で意外とダブっているなと認識したのですが、これを統計的にどの程度ばらついていないのか、を議論するにはどうすればいいでしょうか?

標準偏差はバラつきを示す指標のひとつですが、完全にばらついた(ユニークである事)を示す指標に使うと意味がわからないです。
とはいえ、これほどのデータだとグラフを書くのも不可能(エクセルのグラフ機能は使用できるデータの個数が限られています)。
どうやって見ればいいのかと、とまってしまっています。


前提条件から覆してこういう見方をするべきだ、という意見も大歓迎です。
ご教授のほど、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (9件)

こんばんは。



本来、RAND 関数で、自然乱数ではなく擬似乱数(pseudo-random numbers)ですが、日本語サイトの情報では、あまり正確な情報が出ていないようです。

そこで、RANDOM について、旧バージョンと比較して、Excel 2003/2007 (2003には、バグが残っています)が、一応、100万回以上を試さない限りは、乱数は保証できると言っています。

Excel 2007 と Excel 2003 の RAND 関数について
http://support.microsoft.com/kb/828795/ja

いろいろ探してみましたが、以下の論文が一番、話の内容が納得できるようです。
英文資料です。

http://www.daheiser.info/excel/frontpage.html
XVIII. Random Number Generation (update, 12/10/08) 
pdf 資料(私は、30P の内、半分程度しか読んでいません。)

そこに、RANDBETWEEN の説明も書かれていますが、RAND()関数と独立して検査は出来ないけれども、特に問題も見出せなかったとされています。

>とはいえ、これほどのデータだとグラフを書くのも不可能(エクセルのグラフ機能は使用できるデータの個数が限られています)。

それは、大雑把に見るのでしたら、散布図の形を見れば良いのではないでしょうか。それで、X,Y で期待する四角形(30万,30万)で概ね塗りつぶせれば、偏りが少ないだろうし、形やムラが出来れば、偏りがあるのだと判定できるはずです。
    • good
    • 0
この回答へのお礼

配布リンク先のPDFについては後ほど見るとして、Microsoftの見解は一つの閾値として使えそうです。

うちで使っているのはOffice2000なので、精度の悪い(とされる)Excelのようです。ただ、それでも100万個以上・・・ということですから。
まぁよほどの事がない限り問題にはならないでしょうね。

問題になりえる使い方も、イメージがわきました。検証云々は別途考えるとして、目的の一つである「どういう時には利用すべきでないか」が明確になり、スッキリしました。

お礼日時:2009/05/27 12:53

補足:



Excel用の説明としては、こちらが分かりやすいかと思います。
MTは、日本人が考えたもので、海外のものよりも優れているのですね。今回は、いろいろ勉強させられました。

良い乱数・悪い乱数
http://www001.upp.so-net.ne.jp/isaku/rand.html
ここに、
「このページの目的は、従来の乱数の問題点を指摘し、すばらしい乱数、 「メルセンヌツイスタ」 の普及を促進することである。」

ということが書かれています。

乱数ライブラリ

http://www001.upp.so-net.ne.jp/isaku/rand2.html

sfmt.zip : ライブラリ一式 (ただし、その前の[zmtrand.zip : ライブラリ本体一式]も入れてください。)こちらは、SFMT があり、Excel用のサンプルも揃っています。
この検査は、1億回調べて、時間を計ります。

仕事では、この中から、ひとつを使えばよいと思います。
    • good
    • 0

こんにちは。


返事をつけるのが遅くなりました。

>どのように評価するのかについては

いくつか調べてみましたが、評価は、ヒストグラムでできます。
Excel2000 で試してみました。

エクセルを用いた標準正規分布に従う乱数(正規乱数)の発生とヒストグラム
http://homepage1.nifty.com/gfk/Norm-Rand.htm

ヒストグラムの取り方は、手作業でも構わないと思いますが、分析ツールがアドインでありますから、そちらを使ってできます。技術関係の方でしたら、お分かりになるかと思います。ヒストグラムの作り方は、上限と下限の区分さえ決めてあげれば、できるはずですから、そこで分布を見ればよいと思います。

それと、Excel2000 ですから、OSは、少なくとも Vista ではありませんから、以下のツールが使えるかと思います。ソースもありますから、コンパイルしてもよいかとは思います。Excel2000では、良い方法が見つけられませんでした。

Mersenne Twister DLL版
http://www.vector.co.jp/soft/win95/prog/se227612 …
解説
http://hp.vector.co.jp/authors/VA020429/mt.html

Cでコンパイルされたものですから、C:\Windows など、Path の通った、例えば、\System32の中にでも入れてあげればよいと思います。スピードも多少は遅いのですが、VBAよりは格段に速いです。VBAの中からワークシートに値を出します。

それで、正規分布 NORMDIST で、上記のMTの中の、genrand_real2で、グラフ化を試してみましたが、キレイな正規分布図が取れました。RAND()関数では、そこまでは、正規分布図は取れないように思います。

なお、RANDOM 関数を、RandBetween に直す方法は、
Int((最大値 - 最小値 + 1) * [ランダム関数] + 最小値)

とします。
    • good
    • 0

擬似乱数の統計的な検定なら、エクセルのサイトではありませんが、


http://www.geocities.jp/m_hiroi/light/pystat04.h …

エクセルにカイ2乗検定の関数があるので、エクセルで統計的な検定について説明したサイトも探せばあるでしょう。
よく例に挙げられるのがサイコロの出目ですね。
サイコロは6面ですが、1~30万の乱数なら30万面のサイコロ(!)だと考えれば、分かりやすいかもしれません。

30万個のデータだとかなり重そうなので、1~1000の乱数を1万個作ってやってみました。
A1:A10000=RANDBETWEEN(1,1000)
B1:B1000=COUNTIF(A:A,ROW())
C1:C1000=10(を入力 理論的には1~1000の数字が10個ずつ出るので)
有意水準 5% で検定を行うとすれば、
=CHITEST(B1:B1000,C1:C1000)
の値が、0.05以上ならOKとなります。
(余裕でOKでした)

今度は1~6万の乱数をA1:A60000に作ってみました。
集計結果↓
出現回数,,個数,,期待値
0,,,,,,,22038,,,22072.58
1,,,,,,,22149,,,22072.95
2,,,,,,,10973,,,11036.48
3,,,,,,,,3684,,,3678.76
4,,,,,,,,966,,,,,919.66
5,,,,,,,,155,,,,,183.92
6,,,,,,,,,31,,,,,,30.65
7,,,,,,,,,,4,,,,,,,4.38
8以上,,,,,,0,,,,,,,0.61
期待値の算出は、よく分からないけど、
=BINOMDIST(出現回数,60000,1/60000,FALSE)*60000
で良いと思う。
出現0回が2万個もあって、最初はおかしいのかなと思ったが、ほぼ期待値通り。
実測個数と期待値でカイ2乗検定したら、これもOKでした。


> 2回出現する数値が数個程度かと思いきや、6回出現する数値が10個近く現れた

↑というようなことは、無いと思うのですが。
    • good
    • 0

#2です。

お礼でおっしゃるとおりです。
>メルセンヌツイスターを利用した
も判りません。
しかしこの質問コーナーではカテゴリを適当に選んで質問すべきだとは思います。エクセルは色んな分野で(それも主に計算用だけに)使われるので、その背後にはその分野特有の知識があって使う場合があり、2割ぐらいエクセルに関連があっても、数学コーナーで応えられるような人は、エクセルのことも合わせて応えられるはずだと思いました。
その背後にはその分野特有の必要知識があり、それがあると期待される読者のカテに質問されるのがベターと思います。
私は8年ぐらい多数のこのコーナーにお質問を見てきました。
経験則からいっている部分もあります。質問をする方としては、きつい表現と思いましたが。
    • good
    • 0
この回答へのお礼

おっしゃるとおり、ここでは最もほしかった答え、どの程度のレベルにならRand関数を使っても問題なさそうかが解決しましたが、
そこから先の、どのように評価するのかについては別に調べた方がいいということは分かりました。

あなたの言い方に正直なところカチンときてしまいましたが、適切な場所に、という点は納得しています。


あおるような返事をしてしまったことをお詫びします。
回等ありがとうございました。

お礼日時:2009/05/27 17:40

こんにちは。


>うちで使っているのはOffice2000なので

そうしたら、メルセンヌツイスタ法の解決は最終手段にしてください。理由は、遅いからです。乱数生成は、セキュリティに直接関わってくる問題ですから、別に、誰かに聞かれたからというよりも、きちんと認識しておく必要はあるように思います。

上記のメ法の前に解決手段がいくつか英文の中で読んだのですが、まさか、Excel 2000だと思わなかったので、2003以降の英文しか読んでいません。もう一度英語論文等で、Excel 2000 の部分を読んでみます。締めないで、少し、時間をください。単純なVBAでも解決したような気がします。
    • good
    • 0

修正


Excel 2003/2007 [(2003には、バグが残っています)]
2003 の修正はPack1 にして、直っているそうです。

メルセンヌツイスタ法を使う必要があるかは、統計を取ってみないとはっきりしないかもしれませんが、使う用途によって決まってくるのではないでしょうか。なお、統計を取るには、Frequency 関数を使うのが一般的ですが、同関数は、配列を使いますから、数が多いと負担が大きいので、その代わりに、VBAで、同様の関数を作ったほうが良いかもしれません。
    • good
    • 0

#3の修正


#[形や]ムラが出来れば、偏りがあるのだと判定できるはずです。
形が四角形にならなかったり、・・・・
    • good
    • 0

回答にはなりませんが……



エクセルの乱数は、単一使用を前提に作られています。ほかのセルの結果にかかわらず、各セル単独で乱数が作られます。ですので、同一値が出ることは当然あります。

それでも15桁(セル内では9桁表示)の乱数ですから、何千、何万という範囲なら、重複の可能性はかなり低いので、日常使用には支障はないと思います。どうしても重複が許せないのなら、マクロを使うのがいいでしょう。
    • good
    • 0
この回答へのお礼

>エクセルの乱数は、単一使用を前提に作られています。ほかのセルの結果にかかわらず、各セル単独で乱数が作られます。ですので、同一値が出ることは当然あります。
はい、承知の上です。
ですが、それでもぱっと見て(Rank関数で出現数を取り出したところ)思った以上に重複があったもので(2回出現する数値が数個程度かと思いきや、6回出現する数値が10個近く現れたものですから)、何か視覚化できないかと思いました。

まぁ本来はVBAを使用しなければいけないのでしょうが、それを利用に至る閾値が、自分自身の中でほしいので検証できないものかと思っています。

お礼日時:2009/05/27 12:38

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

QSUMPRODUCT($A$1:$A$10,$B$1:$B$10)とSUMPRODUCT($A$1:$A$10*$B$1:$B$10)

エクセルのSUMPRODUCT関数についてお尋ねします。

=SUMPRODUCT($A$1:$A$10,$B$1:$B$10)

=SUMPRODUCT($A$1:$A$10*$B$1:$B$10)
の違いは何でしょうか?
両者とも同じ答えを返しますが、いろいろ試したところ、前者は範囲内に文字列があってもそれを無視して計算し、後者は文字列があればエラーになるようですが、その理解で正しいでしょうか?
正しいとすれば、なぜでしょうか?

Aベストアンサー

こんばんは。

配列計算をしているのは言うまでもありませんが、この、SUMPRODUCT は、必ず、内部のひとまとまりから計算するという性質を持っています。ただ、VBAのように左から時系列かどうかは、言語が違いますから、分かりません。しかし、この引数は、パラメータ配列になっています。そして、その引数それぞれの有効値を調べて、それを演算出来る値かどうか調べます。

文字列を入れてもエラーにならないのは、元々、そこに注釈などを入れるために考えられたものです。値を文字列か数値かを精査して演算するように出来ています。最初、SUM関数に対し、そのように作られました。プログラムとしては、初歩的なものですが、そのアイデアは、今日まで、踏襲しているようです。このオリジナルの仕組みを考えたのは、VisiCalc の開発者、ブルックリン氏です。昔々、本で読んだことがあります。 PRODUCT関数とも共通です。3つの関数は、同じような仕様を持っています。

こちらが、本来の使い方です。

=SUMPRODUCT($A$1:$A$10,$B$1:$B$10)

つまり、
$A$1:$A$10 と $B$1:$B$10 の値を別々に取得しています。

では、
=SUMPRODUCT($A$1:$A$10,$B$1:$B$11)

とすると、なぜ、エラーが出るかというと、$B$11 に対応する数値が、NULL値(有効な値がない)だからです。それは、全体に反映させてしまいます。(理由は分かると思いますが、プログラムが途中で、エラーで止まってしまうからです)

ところが、こちらは、

=SUMPRODUCT($A$1:$A$10*$B$1:$B$10)

$A$1:$A$10*$B$1:$B$10 は、分割出来ません。したがって、この数式の中でのエラーは、そのまま、元の数式に反映されます。

ご自分で、ユーザー定義関数を作ってみれば分かります。VBAでも、同じように作ることが可能です。一度、試してみるとよいです。

こんばんは。

配列計算をしているのは言うまでもありませんが、この、SUMPRODUCT は、必ず、内部のひとまとまりから計算するという性質を持っています。ただ、VBAのように左から時系列かどうかは、言語が違いますから、分かりません。しかし、この引数は、パラメータ配列になっています。そして、その引数それぞれの有効値を調べて、それを演算出来る値かどうか調べます。

文字列を入れてもエラーにならないのは、元々、そこに注釈などを入れるために考えられたものです。値を文字列か数値かを精査して演算...続きを読む

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

Q=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $

いつもお世話になってます。
以下の関数式について、お時間がありましたらどうぞご教示ください。

=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $12,2,FALSE))

「シート2の範囲指定した表にA1セルの値と同じ値の右隣になる値を返せ。ただし該当なき場合は空白とせよ。」

純粋になんでこのような構文になるのかが解りません。

1.ISNAってそもそもなんでしょう?
2.同じ式を繰り返すのはなぜ?
(模範式で、このように同じ式を繰り返す構文があまり無いように思えたのです。)

・参考となる他所のページがあれば教えて下さい。
・素人です。お手柔らかにお願いします。

(エクセル2003)

Aベストアンサー

1.ISNAってそもそもなんでしょう?
ISで始まる情報関数の一つで、#N/A!エラーのみを判定する関数
結果はTRUE(真),FALSE(偽)のいずれかになります。
エラー判定のIS関数には他に
ISERR:#N/A!を除くすべてのエラーを判定する関数
ISERROR:すべてのエラーを判定する関数
があります。

2.同じ式を繰り返すのはなぜ?
ISNAの判定する値がセルでなく数式の結果だからです。
A2=VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)
なら
A3=IF(ISNA(A2),"",A2)
ということになります。A2のように計算の為のセルを省略する為に
=IF(ISNA(数式),"",数式)のように同じ数式を2回繰り返しになってます。

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

Q"$B$32:$H$32,$K$32:$N$32,$P$32:$AH$32" を変数に置き換えたい

こんにちは。よろしくお願いします。いつもgooの皆さんには大変お世話になっています。
エクセルは2013です。どなたか教えてください。

質問内容
Wクリックの範囲指定が現状はこのようになっています
If Not Intersect(Target, Range("$B$32:$H$32,$K$32:$N$32,$P$32:$AH$32")) Is Nothing Then

行を指定する32を
Dim shg as long
shg=32
とした場合、上記の範囲指定を & と変数 shg でつなげていくと、あまりにも長くなってしまいます
もっとスマートな書き方はないでしょうか

Aベストアンサー

If Not Intersect(Target, Rows(shg), Range("$B:$H, $K:$N, $P:$AH")) Is Nothing Then

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

Qエクセル詳しい方!!お願いします! =IF(会計簿!$C$6=”13-ア”,”会計簿!$A$6”,I

エクセル詳しい方!!お願いします!

=IF(会計簿!$C$6=”13-ア”,”会計簿!$A$6”,IF(会計簿!$C$6=”13-イ”,”会計簿!$A$6”,IF(会計簿!$C$6=”13-ウ”,”会計簿!$A$6”,IF(会計簿!$C$6=”13-エ”,”会計簿!$A$6,””))))
の返しが会計簿!$A$6になるのを会計簿!$A$6に入力されている値にしたい!

Aベストアンサー

あらら・・・、今度は絶対参照にしていませんでした ><
=IF(OR(会計簿!$C$6="13-"&{"ア","イ","ウ","エ"}),会計簿!$A$6,"")

これが正解ですね _ノフ○)))グタリ

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

QRANDBETWEEN関数で0個または1つを抽出する方法について教えて

RANDBETWEEN関数で0個または1つを抽出する方法について教えてください。

画像のようなエクセルのA~D列に任意文字列が入っています。

E1に
「A1&(半角スペース)&B1~D1のいずれかのうちの1つ、または、B1~D1のうち1つも選択しない()」
を出力させたいのですが、どう記述すればいいか教えてください。
 
=A1&" "&IF(COUNTA(B1:D1)=0,"",INDEX(B1:D1,RANDBETWEEN(1,COUNTA(B1:D1))))

を入れると
「A1&(半角スペース)&B1~D1のいずれかのうちの1つ」
は出来るのですが、
「B1~D1のうち1つも選択しない」
というのがどうすればいいのかわかりません。

いろいろ調べたところ、そもそも出来ないのかなぁ・・・と不安になっているのですが
どなたか分かる方おしえてください。

よろしくお願いします。

Aベストアンサー

お示しの式ではRANDBETWEEN関数ではB1セルからD1セルまで入力がある場合には1から3の間で乱数が得られますので0になることはありませんね。0が選ばれるようにすればINDEX関数が使えませんね。
次のような式にすればよいでしょう。

=A1&" "&IF(OR(COUNTA(B1:D1)=0,RANDBETWEEN(0,COUNTA(B1:D1))=0),"",INDEX(B1:D1,RANDBETWEEN(1,COUNTA(B1:D1))))


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報