• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで数字を分析する方法)

エクセルで数字を分析する方法

このQ&Aのポイント
  • エクセルを使用して数字の分析を行う方法を紹介します。数字の登場回数や各桁の特定の数字の出現パターンを調べることができます。
  • 分析対象の数字がランダムに登場する場合、各桁に特定の数字が出るまでの空白の回数や回数の平均、最大空白などを調べることができます。
  • エクセルを使うことで、比較的簡単に数字の分析を行うことができます。また、他のソフトやサイトを利用して同様の分析を行うこともできます。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

エクセルを使い,A1セルに =INT(RAND()*10) と記入,A1をコピーしてB1,C1に貼り付けることで「3桁の数字」が生成されます。 A1:C1をコピー 1万行まで貼り付けることで,3桁の数字を1万個用意できした。 この中で例えば10の位を分析したいなら,B列に着目して分析することにします。 B列(10の位)に。 そもそも2が何個あるのか =COUNTIF(B:B,2) 2と2の間の空白の個数の最大 =MAX(SMALL(IF(B1:B10000=2,ROW(B1:B10000)),ROW(INDIRECT("B2:B"&COUNTIF(B:B,2))))-1-SMALL(IF(B1:B10000=2,ROW(B1:B10000)),ROW(INDIRECT("B1:B"&(COUNTIF(B:B,2)-1))))) と記入してコントロールキーとシフトキーを押しながらEnterで入力 2と2の間の空白の個数の平均 =AVERAGE(SMALL(IF(B1:B10000=2,ROW(B1:B10000)),ROW(INDIRECT("B2:B"&COUNTIF(B:B,2))))-1-SMALL(IF(B1:B10000=2,ROW(B1:B10000)),ROW(INDIRECT("B1:B"&(COUNTIF(B:B,2)-1))))) と記入してコントロールキーとシフトキーを押しながらEnterで入力 といった具合に回答から数式をコピーして正しく記入するだけで,コタエが現れます。

jaga262
質問者

お礼

ご回答ありがとうございます。 これでやりたいことが出来ると思います。 あと、もうひとつ質問させてください。 0 1 2 3 4 5 6 7 8 9 0 9 0 7 6 5 0 3 2 1 上の数字が一つの桁に対してくる数字です。 下の数字は過去20回について、上の数字に対して直近で来たのが何回前かを表しているとします。上の例で言うと0、2、6の数字が過去20回では1回も来ていないことになります。 この3つの数に注目して分析したいのです。 3つの数字が過去20回の間に同時に0であるのは過去1万回の間に何回あるのか。また、そのときのそれぞれの直近で来た数字はそれぞれ何回前なのか。 そういった分析でも各セル毎にデータを入力することが出来れば計算できますか・・?

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

>あと、もうひとつ質問させてください。 いいえ、お断りします。 こういった具合にダラダラと終わらないご相談があんまり多くて、とても困っています。 1つの問題が解決したらそのご相談投稿はキチンと解決でケリをつけ、次の疑問はまた新しいご質問として、きちんと状況を詳しく添えて投稿し直してください。 「ちょっと聞いてみよう」と思いつきで書いているモノだから、例えば >3つの数字が過去20回の間に同時に0であるのは過去1万回の間に何回あるのか。 >そのときのそれぞれの直近で来た数字はそれぞれ何回前なのか。 過去20回にゼロだったのが問題なので、1万回だろうが何だろうが、関係ありません。 といった具合に、質問になっていません。 どういう状況から何を求めたいのか、きちんと具体例を挙げ「何をヤリタイのか判るように示して」ご相談を投稿し直してください。ということです。

jaga262
質問者

お礼

おっしゃる通りです。 せっかくご回答いただいたのに、不愉快な思いをさせてしまい、申し訳ありませんでした。 整理した上で改めて投稿させていただくように致します。

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

おもしろそうだったので考えてみました。 とりあえず、この素人マクロでやっていることは、 ・1~1000までの数値をランダムに発生 ・10の位が「2」だったら、シートに書き出し ・何回目で発生したか書き出し ・前回から何回かかったか書き出し ・以上を10000回繰り返し ・以上から、出現回数・最大小平均周期を集計 ・以上を20回繰り返し と言う作業です。 Sub Test10000() Dim i As Long, j As Long, k As Long, l As Integer Dim myRand As Integer Dim EndRow As Integer   Cells.Delete   For l = 1 To 20     Range("A:C").ClearContents     i = 0: j= 0: k = 2     Cells(1, 1) = "回数"     Cells(1, 2) = "数値"     Cells(1, 3) = "周期"     For i = 1 To 10000       myRand = Int(Rnd() * 1000)       If Int(myRand / 10) Mod 10 = 2 Then         Cells(k, 1) = i         Cells(k, 2) = myRand         Cells(k, 3) = i - j         j = i         k = k + 1       End If     Next i     EndRow = Range("C2").End(xlDown).Row         Cells(1, 5) = "試行回数"     Cells(1, 6) = "出現回数"     Cells(1, 7) = "最大周期"     Cells(1, 8) = "最小周期"     Cells(1, 9) = "平均周期"          Cells(l + 1, 5) = l     Cells(l + 1, 6) = Application.WorksheetFunction.Count(Range("C2:C" & EndRow))     Cells(l + 1, 7) = Application.WorksheetFunction.Max(Range("C2:C" & EndRow))     Cells(l + 1, 8) = Application.WorksheetFunction.Min(Range("C2:C" & EndRow))     Cells(l + 1, 9) = Application.WorksheetFunction.Average(Range("C2:C" & EndRow))   Next l   Columns("I").NumberFormatLocal = "#,##0.00" End Sub エクセルを新規に立ち上げ、Alt+F11でVBEを起動させ、 上記コード(Sub~End Sub)を貼り付けて、F5で実行してみてくださいませ。 ちなみに ・For l = 1 To 20    20を変えると、試行回数が変わります。 ・For i = 1 To 10000       10000を変えると、1回の試行の最大数値が変わります。    最大65535までにしておいた方が良いと思われます。 ・If Int(myRand / 10) Mod 10 = 2 Then    2を変えると、確認したい数字を変更できます。    (10の位が● の部分です。) あとはお好きに料理してくださいませ。

jaga262
質問者

お礼

ご回答ありがとうございます。 複雑なことでも出来るものなのですね。 感服いたしました。

関連するQ&A