• ベストアンサー

こんなグラフ作れますか?

 MS Excel上で「ある曜日と時間(分単位のみ)」を管理しています。そのデータをグラフに表したいのですが、デフォルトにあるものではうまく表現できません。どなたか教えて下さい。VBAは中級レベルです。 NO. 曜日 分 1 水   05 2 土   12 3 火   31 4 月   12 5 水   45 6 日   29 7 木   16 8 金   55 ・   ・ ・   ・ ・   ・  上記のようなデータ(重複するデータもあります)を円グラフ(というか、時計グラフ??)に散布させて何分の辺りが多いのか、また何曜日は何分が多いのか調べたいのですが可能でしょうか?ちょっと表現しにくいのですが、グラフの格好はアナログ時計そのものみたいに視覚的に分かりやすく表現し、アナログ時計の分単位のしるしから円の外側か内側に向かって棒グラフなどで表現したいのですが・・・  どなたかご指導下さい。お願いします。

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

  • ベストアンサー
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.5

> Aの分データは00~59までの60行なんですが、C,D列は120行でいいのですか? これは、散布図でウニ(?)状のグラフにするために、 グラフの中心 00分の点 グラフの中心 01分の点 グラフの中心 02分の点 … と点を並べて、それを順番につなぐというインチキをしています。 外から内への場合はもう一点余分に追加して3倍の点数のグラフになります。 -- 手間を考えるとやっぱりレーダーチャートの方がいいような…?

soccerman777
質問者

お礼

いろいろご回答ありがとうございました。レーダーチャートで単純に表示しても、とくに問題ないので今回の時計グラフ??は諦めます。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.4

> 円の外側か内側に向かって棒グラフなどで表現したいのですが ですと、   A B 1 分 当たりの回数 2 00 13 3 01 11 4 02 12 5 ・ ・ 6 ・ ・ という前提で、 -- 散布図(x-y図)を利用します。 内側から外側に線を引いた場合、00分の始点は(0, 0)で終点は、 C2=SIN(RADIANS($A2/60*360))*$B2 ←x座標 D2=COS(RADIANS($A2/60*360))*$B2 ←y座標 で計算できます。 これを↓向きにコピペして全部で120行に貼り付ければ、散布図でレーダーチャートで描くのと同じグラフが得られます。 これを放射線状(ウニ状?)にするために、1行おきに(0, 0)のデータを挿入します。 CD列を改めて、 C2=IF(MOD(ROW()-2,2)=0,SIN(RADIANS(OFFSET($A$2,(ROW()-2)/2,0)*6))*OFFSET($A$2,(ROW()-2)/2,1),0) D2=IF(MOD(ROW()-2,2)=0,COS(RADIANS(OFFSET($A$2,(ROW()-2)/2,0)*6))*OFFSET($A$2,(ROW()-2)/2,1),0) で計算を行い、CD列の120行(C2:D121)の範囲を散布図に。 線を太め、マーカーをなしに設定すると中心から各分の方向に度数分の長さの線が引かれたグラフになります。 (線をもう少し太く四角く出来ると思っていましたが、散布図を使う作戦はイマイチかも) -- 外から内の場合、更にややこしくなって、 C2=IF(MOD(ROW()-2,3)=0,SIN(RADIANS(OFFSET($A$2,(ROW()-2)/3,0)*6))*(20-OFFSET($A$2,(ROW()-2)/3,1)),IF(MOD(ROW()-2,3)=1,SIN(RADIANS(OFFSET($A$2,(ROW()-2)/3,0)*6))*20,SIN(RADIANS(OFFSET($A$2,(ROW()-2)/3+1,0)*6))*20)) D2=IF(MOD(ROW()-2,3)=0,COS(RADIANS(OFFSET($A$2,(ROW()-2)/3,0)*6))*(20-OFFSET($A$2,(ROW()-2)/3,1)),IF(MOD(ROW()-2,3)=1,COS(RADIANS(OFFSET($A$2,(ROW()-2)/3,0)*6))*20,COS(RADIANS(OFFSET($A$2,(ROW()-2)/3+1,0)*6))*20)) で、数式は全部で180(C2:D181)行に貼り付ける必要があります。 -- 想定した線の書式が設定できなかったので、イマイチかも。

soccerman777
質問者

補足

Aの分データは00~59までの60行なんですが、C,D列は120行でいいのですか?

すると、全ての回答が全文表示されます。
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.3

> NO. 曜日 分 > 1 水   05 > 2 土   12 > 3 火   31 > ・   ・ > ・   ・ NO.って、台の番号とか、意味のあるデータ項目だったのでしょうか? > 優先順位は > 1.時間(何分に当たりやすいのか) > 2.曜日(例、何曜日の何分にある台が当たりやすい) > 3.台(例、何番台はよく当たる) 2次元のグラフの場合、どれかを固定値にしてX軸、Y軸にそれぞれの項目を取れば取り敢えずのグラフになります。 3次元のグラフで、Excelで等高線を使ってグラフを書く場合、高さの軸に「量」を表す項目を選ばないと意味がありません。曜日、台番号いずれも単なる「通番」ですし、このデータの集計方法ですと、時間も曜日と同じく量を表す項目になっていません。量を表す度数(当たりの回数)を求めるとすると、どういう区分で集計するか?ってのが重要になります。 または、3次元→2次元に変換して散布図を使うと、どの辺に点が集中しているか?という図は書けます。 具体的に何のデータを集計しようとしているのか分かりませんが、あまり意味の無い集計を行おうとしているような気もします。 -- ところで、「何時に当たりやすいのか」ってのは関係ないのでしょうか? パチンコ屋さんとかの例なら、当然お客さんの多い日曜日に当たりの数も多いはず。相対的なハズレの数、来客数も数えないと有意な分析が出来ないですね。 -- 例) 分 当たりの回数 00 13 01 11 02 12 ・ ・ ・ ・ のデータを、 > アナログ時計の分単位のしるしから円の外側か内側に向かって棒グラフなどで表現したいのですが などという具体的な質問に対してなら、具体的な回答がしやすいのですが。

soccerman777
質問者

補足

きちんと説明しなくて申し訳ありません。パチンコやスロットの当たりの仕組みを調べようとしています。ホールコンピューターなるものがパチンコ屋に存在していて、その日その日の収支を自動的に計算しています。客がお金を注ぎ込むと黒字が増えるのですが、ある程度の目標収支に抑えるために、台を当たりにさせて還元するのですが、その還元方法に法則があるような気がしています。 感覚ですが少し分かってきたのが、00分、15分、30分、45分辺りに当たりが集中するみたいです。特定の台ではなくパチンコ・スロット全てに共通していて、多くの店で共通しています。これが確かならその時間帯だけ打てばいいわけですから。 だから、当初の質問は 例) 分 当たりの回数 00 13 01 11 02 12 ・ ・ ・ ・ のデータを、 アナログ時計の分単位のしるしから円の外側か内側に向かって棒グラフなどで表現したいのですが で、間違いありません。 折角だから、というか、「補足」では欲張りすぎました。 データとしては、「日付」「曜日」「時間」「台番号」などが一緒に取れるものですから。 >NO.って、台の番号とか、意味のあるデータ項目だったのでしょうか? 単なる連番でした。 >ところで、「何時に当たりやすいのか」ってのは関係ないのでしょうか? 正直そこまで知りたいです。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

(1)#1のおっしゃるようにVBAで現データを (A) (B)  (C) (D) 日 12 14   続く 月 15 10 火 20 8 水 21 20 木 25 16 金 23 18 土 10 14 のように(別シートにでもVBAで)組みなおす。 (2)マクロの記録の結果である Sub Macro1() Charts.Add ActiveChart.ChartType = xlRadarMarkers ActiveChart.SetSourceData Source:=Sheets("Sheet3").Range("A1:C7"), PlotBy:= _ xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet3" With ActiveChart.Axes(xlCategory) .HasMajorGridlines = False .HasMinorGridlines = False End With With ActiveChart.Axes(xlValue) .HasMajorGridlines = True .HasMinorGridlines = False End With End Sub を参考にレーダーチャートを描く。

soccerman777
質問者

補足

ご回答ありがとうございます。少し説明不足でした。#1さんの補足をご覧になってください。見捨てないでもう一度お答え願えますか?

すると、全ての回答が全文表示されます。
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

「レーダーチャート」を使ってはどうでしょう? 元データを、  日月火水木金土 00 01 02 … 58 59 [分] の形のヒストグラムにすると良いと思います。

soccerman777
質問者

補足

早速ご回答ありがとうございます。 軸は00~59で間違いなく時計の形ができあがります。ただレーダーにしたくないのですが・・・ 正直言うと、あるゲームのデータで、3つのデータを1年くらい管理して解析したいのです。何曜日の何時に何番台が当たるのか。時間と曜日と台の関連性というか癖があるのか調べたいんです。 優先順位は 1.時間(何分に当たりやすいのか) 2.曜日(例、何曜日の何分にある台が当たりやすい) 3.台(例、何番台はよく当たる) 1つのグラフでは表せないと思うけどできますでしょうか?何分つまんない事調べてますけどよろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A