激凹みから立ち直る方法

はじめまして!

あるサッカーリーグ戦(16チーム総当り、1チームあたりホーム&アウェー合わせて全30試合)があるのですが、そのリーグ戦のデータをExcelを用いてデータベースを作成したいと思ってます。

例えば、2006年のリーグ戦の「AチームvsBチーム:1-0、CチームvsD・・・」というような入力データから、「Aチームの総勝率、引率、負率や対○○チーム勝率・・・」など、様々なデータを導き出せるようなものにしたいと考えています。

最初、自力でやってはみましたが、私の考えられる方法を試してみても、どれも原始的な方法で(DCOUNT関数や不等号を使って勝ちや負けを判定し、勝ち数を計算していって、その後、様々な成績へと計算したり、あるいは、ピボットテーブルを用いたり・・・など)物凄く時間も掛かるし、明らかに効率が悪く、非常に著しく面倒な作業になるので一時断念しております。(物凄く時間をかければなんとかできそうですが、効率が・・・)

そして、何か他に方法があるんじゃないかとインターネットで探してはみたものの、私にはそれを見つけられることができませんでした。

もし、そういう総当たり戦のデータからデータベースを構築するようなやり方があるようでしたら、それをお教えいただけないでしょうか。
知恵のある方、何か方法をご存知の方、お願いします。


また、もし、Execlなんかで構築するよりも、データベースソフトを使用した方がいいのでは?ということでしたら、データベースソフトをご紹介していただけないでしょうか?
あるいは、その方法をお教えいただけたら幸いです。


わかりにくい説明ですいません。m(__)m
何かお分かりの方、なんでもいいので、「こういうふうに作ったらいいんじゃない?」「こういうやり方があるよ」「このソフト使ってみたら?」など、簡単なものでもいいのでお教えいただけたら感謝の極み、幸いに存じます。

よろしくおねがいします。m(__)m

A 回答 (5件)

#03です。

補足ありがとうございました。
>出来ればアクセスはそこまで誰しもが使えてPCに入れているものではないので、Excelだけでしたかったので・・・
これは重要なことだと思います。

仮に先に回答した項目で以下のような表を作ると
A列    B列 C列    D列     E列  F列  G列  H列 
年月日  会場 チーム  対戦相手  H/A  得点  失点  勝敗
2007/8/1 A  でこぼこ  バナナ   H    1    0   ○
2007/8/1 A  バナナ   でこぼこ  A    0    1   ×
2007/9/8 B  でこぼこ  なすび   A    0    2   ×
2007/9/8 B  なすび   でこぼこ  H    2    0   ○
2007/9/8 B  でこぼこ  タラコ   A    3    2   ○
2007/9/8 B  タラコ   でこぼこ  H    2    3   ×

すると「でこぼこ」チームの戦績は以下の式で計算できます。SUMPRODUCT関数を使えばかなり自由度は高いですよ。なお式中で範囲を2行目から481行目までにしているのは総試合数240×2=480だからです

試合数
=COUNTIF(Sheet1!C2:C481,"でこぼこ")

勝ち数
=SUMPRODUCT((Sheet1!C2:C481="でこぼこ")*(Sheet1!H2:H481="○")*1)

勝率
=SUMPRODUCT((Sheet1!C2:C481="でこぼこ")*(Sheet1!H2:H481="○")*1)/COUNTIF(Sheet1!C2:C481,"でこぼこ")

Home勝数
=SUMPRODUCT((Sheet1!C2:C481="でこぼこ")*(Sheet1!E2:E481="H")*(Sheet1!H2:H481="○")*1)

Away勝率
=SUMPRODUCT((Sheet1!C2:C481="でこぼこ")*(Sheet1!E2:E481="A")*(Sheet1!H2:H481="○")*1)/SUMPRODUCT((Sheet1!C2:C481="でこぼこ")*(Sheet1!E2:E481="A")*1)

9月勝率
=SUMPRODUCT((Sheet1!C2:C481="でこぼこ")*(MONTH(Sheet1!A2:A481)=9)*(Sheet1!H2:H481="○")*1)/SUMPRODUCT((Sheet1!C2:C481="でこぼこ")*(MONTH(Sheet1!A2:A481)=9)*1)

Away無得点率
=SUMPRODUCT((Sheet1!C2:C481="でこぼこ")*(Sheet1!E2:E481="A")*(Sheet1!F2:F481=0)*1)/SUMPRODUCT((Sheet1!C2:C481="でこぼこ")*(Sheet1!E2:E481="A")*1)

1得点率?
=SUMPRODUCT((Sheet1!C2:C481="でこぼこ")*(Sheet1!F2:F481=1)*1)/COUNTIF(Sheet1!C2:C481,"でこぼこ")

対「バナナ」チーム勝率
=SUMPRODUCT((Sheet1!C2:C481="でこぼこ")*(Sheet1!D2:D481="バナナ")*(Sheet1!H2:H481="○")*1)/SUMPRODUCT((Sheet1!C2:C481="でこぼこ")*(Sheet1!D2:D481="バナナ")*1)

ただ難点は1試合につき2行のデータ入力が必要なことです。(面倒!)
これを少しでも簡単にするのはUserform+VBAですが、必ずしもなければならないものではありません。余裕があるときにチャレンジしてみてください
    • good
    • 0
この回答へのお礼

再びの回答ありがとうございます!!

ぇっと、今回は細かな所まで一つ一つの関数式まで書いて頂きありがとうございます。

実は、前回の回答で2行打ち込む、ということを聞いてからチャレンジしてみると、今のところですが、上手くいっている状況です。
とは言ってもまだまだ実験段階?なので、また最初から作り直さなければならない感じもするのですが・・^^;

とにもかくも、いろいろとありがとうございました!!m(_ _)m

お礼日時:2007/09/28 17:13

#2です。

補足ありがとうございました。
私の書いたことが、誤解されている部分がありますので、もう少し書かせてもらいます。
>エクセルでデータベースを作る、という表現が間違っていたというのなら
決して間違っているとは言ってません。質問者が今回エクセルで行っていることが
エクセルを使って行われることの、並みのことをやっておられると思う。
データベースを作るというより、データを整理するという程度だと思う。
自分がエクセルで達成したことが、どれぐらいのモノか、位置付けができておらず、評価が
オバーな感じがしたから書いたものです。
ーー
>具体的に質問しますと、
私から言えば、
具体的とは、下記のようなことを考えていたが、補足で裏切られた。
(列)
横方向にデータを入れているかどうか。
各列にある内容 (下記ABCは列番号を示す。)
A試合数B勝試合C分試合D負試合(計算で出る)E勝率(計算)F分率(計算)G負率(計算)
H無得点率I得点率J2得点率K3得点以上率L無失点率M1失点率N2失点率O3失点以上率
H以下はどういう素データが必要か、私には正確にわからないが、どうなっているのか。
この辺で計算にて、出せる項目を入力してないか。
のように具体的に
(行)
1チーム1行かどうか。2行以上になると、関数などはとたんに難しくなるケースあり。
(シート)
1シート1期・年分か
何かの理由によって1チームのデータが2シートに分かれていないか。
関数などはとたんに難しくなるケースあり。
ーー
補足のHで、Aで、はどんな意味ですか。
==
その後具体的な5行程度の実数(模擬実例の数でも可。)を書く。
ーー
計算式で出しているものは、設定した計算式を書く。
入力の段階で、あったら便利な機能を考えたことは無いか、など。

こういうことを質問に書いて質問をしないと、質問者の為になる回答が書けないと、
言いたかった。
ーー
関数を使う、私の回答は、ほとんど模擬実例を書いています。自作したり、質問例を使っています。
そうしないと関数式が回答として書けないからです。
書いた式のチェックもできず回答に責任が持てないからです。
また質問者が、例えばVLOOKUP関数を使いなさいという回答文章で、判るレベルで無い
ようだからです。
    • good
    • 0
この回答へのお礼

2度目の回答どうもありがとうございます!

ぇ~ご察しのとおり、自分は大して技術も知識もないペーペーの素人で、VLOOKUP関数すら理解できるようなレベルではないような者ですから、多少オーバーだったり、自分を過大評価しているような表現をしていたとしても、そこはちょっと素人と玄人ってことで余裕をもって多めに見ていただけたらうれしかったです^^;

具体的、というものが裏切ってしまったというのなら再び申し訳ないとしか言えません・・・
回答者にわかりやすい回答を促すような質問ができなかった私の汚点です。たびたびお詫び申し上げます。

ちなみに、
>補則のHで、Aで、はどんな意味ですか。
というのは、ホーム&アウェー(2回総当たり)なので、ホーム(H)での勝率など、アウェー(A)での勝率など、と言う意味で補足したつもりでした。

m(_ _)m

お礼日時:2007/09/28 17:26

後から色々な条件で検索する目的なのですね。

アクセスの方が検索は楽かもしれませんがエクセルでも十分でしょう。ようは表の作り方次第です。

表を設計するに当たって「1ゲームを1行」に入力すると後利用に苦労します。「1チーム・1ゲームを1行」に入力すると良いと思います
(つまり1試合でデータは2行作成される)

行タイトルは
「年月日」「試合場所」「チーム名」「対戦チーム名」「Home/Away区分」「得点」「失点」「勝敗」
があれば最低限の後利用が可能です。
入力はUserformを作成して、1ゲーム分の入力で2行のデータを作成してしまえば楽になります。

この表なら「データ」→「フィルタオプション」で複数の条件を指定して検索が可能ですし、ピボットテーブルで色々な計算もできますよ
    • good
    • 0
この回答へのお礼

回答ありがとうございます。m(__)m

ぇ~そうですね。
検索や集計、そのデータを利用した計算などが目的です。
出来ればアクセスはそこまで誰しもが使えてPCに入れているものではないので、Excelだけでしたかったので・・・

UserformということはVBAですね。その方法も検討してみます。
ありがとうございました。m(__)m

お礼日時:2007/09/27 16:34

私なら、エクセルでなら、大げさに「エクセルでデータベースを作る」とか,「構築」などと、よう言わない。


アクセスで言えば検索(SQL)や結合(リレーション)などの機能がエクセルにはそれらの機能が無いからです(クエリは使えるが)。
ーー
本質問は手数がかかる、ということは言って(ぼやいて)いるが、具体的に、その項目を説明した質問で無いので、答えようが無い。
DCOUNT、IF、ピボットの利用はまっとうだと思うし、エクセルを使う方は皆が使っていて、普通はぼやくほど手数はかからないと思うが。
質問振りから何か質問者の基礎知識不足で、無駄なことをやっている可能性は考えられる。
VBAなどでプログラムを組んでも、結構時間がかかることが多いものです。
アクセスでやっても、普通は勉強に随分時間がかかるものです。
ぴったりの既成ソフトがあれば、一番良いが。
ーー
もっと細かい点にブレークダウンして、質問表現し、質問者のやっている方法が、エクセルでさらに便利な方法はないか、個々に質問すべきです。
少なくとも件数を出すと勝敗を表示に付いては具体的に質問すべきです。多分後者でIF分が長くなっているようなら、泥臭い方法でやっているのではないですか。
ーー
一般論としては、アクセスが良いかどうか議論できない。
前述したようにデータは別ファイルに分割されていないようなので、またないだろうから結合機能は論外として、データを入力後、どの程度の検索を考えているかで、アクセスなどの必要性が論じられる。
ただ来年分とかの長期的なデータの整理の問題があれば、データベースソフトを使うべき場合があるかもしれない。質問は何も触れてない。
    • good
    • 0
この回答へのお礼

エクセルでデータベースを作る、という表現が間違っていたというのなら、まずとりあえず謝りたいと思います。m(__)m

確かに私は基礎的な知識や技術が足りないので無駄なことをやっている可能性は高いです。というかまさにそれです。専門的な知識を私が持っているのであれば本サービスを利用していないでしょう。
この程度でも困っていないでしょう。

具体的に質問しますと、入力したデータから「試合数、勝率、分率、負率、無得点率、1得点率、2得点率、3得点以上率、無失点率、1失点率、2失点率、3失点以上率(それぞれ全試合中、Hで勝試合、分試合、負試合別、Aで勝試合、分試合、負試合別、または開催会場別)」というデータは、今のところ私の基礎知識すらない私の技術でも泥臭くはありますが出来ているのですが、「対○○チーム戦績(勝率や得点率、失点率などなど)」が私にはどうしても難しく感じているので、今回の質問をさせていただいている次第です。
説明不足で申し訳ないです。
入力データは今のところ「Hチーム、Aチーム、結果、H得点、A得点、日程、会場」というのを直接入力しているだけです。

ACCESSの件ですが、質問文に「例えば2006年・・・」と書いてあるように、来年とか長期的名データの整理の必要があるものです。とは言いましても、質問文に端的に中長期的に利用したいとは書いてないので、そこはやっぱり私の説明不足です。
申し訳ありません。
長期的な利用を望んでいますので、やっぱりそれならaccessの利用を考えてみたいと思います。また、それとともに、ACCESSの勉強もしたいと思います。

お礼日時:2007/09/27 16:25

初めまして。


MS-EXCELはデータベース用ソフトでは無いので、やろうとされていることができなくは無いですけど大変ですよね。
もうEXCELシートである程度、基本のデータは入力されているのなら、MS-ACCESSとかに移行されてはどうですか?
EXCELを習得されているのなら、関数等もVBAで共通ですし、親しみやすいと思いますよ。
頑張ってくださいね。。。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!!m(__)m

Accessの使用は結構考えていたのですが、どうにもちょっと苦手でして避けている感じでして・・・
それでもやっぱりACCESSの方が利便性がありますよね。
検討してみます。
ありがとうございました。m(__)m

お礼日時:2007/09/27 16:03

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


おすすめ情報