はじめまして!
あるサッカーリーグ戦(16チーム総当り、1チームあたりホーム&アウェー合わせて全30試合)があるのですが、そのリーグ戦のデータをExcelを用いてデータベースを作成したいと思ってます。
例えば、2006年のリーグ戦の「AチームvsBチーム:1-0、CチームvsD・・・」というような入力データから、「Aチームの総勝率、引率、負率や対○○チーム勝率・・・」など、様々なデータを導き出せるようなものにしたいと考えています。
最初、自力でやってはみましたが、私の考えられる方法を試してみても、どれも原始的な方法で(DCOUNT関数や不等号を使って勝ちや負けを判定し、勝ち数を計算していって、その後、様々な成績へと計算したり、あるいは、ピボットテーブルを用いたり・・・など)物凄く時間も掛かるし、明らかに効率が悪く、非常に著しく面倒な作業になるので一時断念しております。(物凄く時間をかければなんとかできそうですが、効率が・・・)
そして、何か他に方法があるんじゃないかとインターネットで探してはみたものの、私にはそれを見つけられることができませんでした。
もし、そういう総当たり戦のデータからデータベースを構築するようなやり方があるようでしたら、それをお教えいただけないでしょうか。
知恵のある方、何か方法をご存知の方、お願いします。
また、もし、Execlなんかで構築するよりも、データベースソフトを使用した方がいいのでは?ということでしたら、データベースソフトをご紹介していただけないでしょうか?
あるいは、その方法をお教えいただけたら幸いです。
わかりにくい説明ですいません。m(__)m
何かお分かりの方、なんでもいいので、「こういうふうに作ったらいいんじゃない?」「こういうやり方があるよ」「このソフト使ってみたら?」など、簡単なものでもいいのでお教えいただけたら感謝の極み、幸いに存じます。
よろしくおねがいします。m(__)m
No.4ベストアンサー
- 回答日時:
#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ですが、必ずしもなければならないものではありません。余裕があるときにチャレンジしてみてください
再びの回答ありがとうございます!!
ぇっと、今回は細かな所まで一つ一つの関数式まで書いて頂きありがとうございます。
実は、前回の回答で2行打ち込む、ということを聞いてからチャレンジしてみると、今のところですが、上手くいっている状況です。
とは言ってもまだまだ実験段階?なので、また最初から作り直さなければならない感じもするのですが・・^^;
とにもかくも、いろいろとありがとうございました!!m(_ _)m
No.5
- 回答日時:
#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関数を使いなさいという回答文章で、判るレベルで無い
ようだからです。
2度目の回答どうもありがとうございます!
ぇ~ご察しのとおり、自分は大して技術も知識もないペーペーの素人で、VLOOKUP関数すら理解できるようなレベルではないような者ですから、多少オーバーだったり、自分を過大評価しているような表現をしていたとしても、そこはちょっと素人と玄人ってことで余裕をもって多めに見ていただけたらうれしかったです^^;
具体的、というものが裏切ってしまったというのなら再び申し訳ないとしか言えません・・・
回答者にわかりやすい回答を促すような質問ができなかった私の汚点です。たびたびお詫び申し上げます。
ちなみに、
>補則のHで、Aで、はどんな意味ですか。
というのは、ホーム&アウェー(2回総当たり)なので、ホーム(H)での勝率など、アウェー(A)での勝率など、と言う意味で補足したつもりでした。
m(_ _)m
No.3
- 回答日時:
後から色々な条件で検索する目的なのですね。
アクセスの方が検索は楽かもしれませんがエクセルでも十分でしょう。ようは表の作り方次第です。表を設計するに当たって「1ゲームを1行」に入力すると後利用に苦労します。「1チーム・1ゲームを1行」に入力すると良いと思います
(つまり1試合でデータは2行作成される)
行タイトルは
「年月日」「試合場所」「チーム名」「対戦チーム名」「Home/Away区分」「得点」「失点」「勝敗」
があれば最低限の後利用が可能です。
入力はUserformを作成して、1ゲーム分の入力で2行のデータを作成してしまえば楽になります。
この表なら「データ」→「フィルタオプション」で複数の条件を指定して検索が可能ですし、ピボットテーブルで色々な計算もできますよ
回答ありがとうございます。m(__)m
ぇ~そうですね。
検索や集計、そのデータを利用した計算などが目的です。
出来ればアクセスはそこまで誰しもが使えてPCに入れているものではないので、Excelだけでしたかったので・・・
UserformということはVBAですね。その方法も検討してみます。
ありがとうございました。m(__)m
No.2
- 回答日時:
私なら、エクセルでなら、大げさに「エクセルでデータベースを作る」とか,「構築」などと、よう言わない。
アクセスで言えば検索(SQL)や結合(リレーション)などの機能がエクセルにはそれらの機能が無いからです(クエリは使えるが)。
ーー
本質問は手数がかかる、ということは言って(ぼやいて)いるが、具体的に、その項目を説明した質問で無いので、答えようが無い。
DCOUNT、IF、ピボットの利用はまっとうだと思うし、エクセルを使う方は皆が使っていて、普通はぼやくほど手数はかからないと思うが。
質問振りから何か質問者の基礎知識不足で、無駄なことをやっている可能性は考えられる。
VBAなどでプログラムを組んでも、結構時間がかかることが多いものです。
アクセスでやっても、普通は勉強に随分時間がかかるものです。
ぴったりの既成ソフトがあれば、一番良いが。
ーー
もっと細かい点にブレークダウンして、質問表現し、質問者のやっている方法が、エクセルでさらに便利な方法はないか、個々に質問すべきです。
少なくとも件数を出すと勝敗を表示に付いては具体的に質問すべきです。多分後者でIF分が長くなっているようなら、泥臭い方法でやっているのではないですか。
ーー
一般論としては、アクセスが良いかどうか議論できない。
前述したようにデータは別ファイルに分割されていないようなので、またないだろうから結合機能は論外として、データを入力後、どの程度の検索を考えているかで、アクセスなどの必要性が論じられる。
ただ来年分とかの長期的なデータの整理の問題があれば、データベースソフトを使うべき場合があるかもしれない。質問は何も触れてない。
エクセルでデータベースを作る、という表現が間違っていたというのなら、まずとりあえず謝りたいと思います。m(__)m
確かに私は基礎的な知識や技術が足りないので無駄なことをやっている可能性は高いです。というかまさにそれです。専門的な知識を私が持っているのであれば本サービスを利用していないでしょう。
この程度でも困っていないでしょう。
具体的に質問しますと、入力したデータから「試合数、勝率、分率、負率、無得点率、1得点率、2得点率、3得点以上率、無失点率、1失点率、2失点率、3失点以上率(それぞれ全試合中、Hで勝試合、分試合、負試合別、Aで勝試合、分試合、負試合別、または開催会場別)」というデータは、今のところ私の基礎知識すらない私の技術でも泥臭くはありますが出来ているのですが、「対○○チーム戦績(勝率や得点率、失点率などなど)」が私にはどうしても難しく感じているので、今回の質問をさせていただいている次第です。
説明不足で申し訳ないです。
入力データは今のところ「Hチーム、Aチーム、結果、H得点、A得点、日程、会場」というのを直接入力しているだけです。
ACCESSの件ですが、質問文に「例えば2006年・・・」と書いてあるように、来年とか長期的名データの整理の必要があるものです。とは言いましても、質問文に端的に中長期的に利用したいとは書いてないので、そこはやっぱり私の説明不足です。
申し訳ありません。
長期的な利用を望んでいますので、やっぱりそれならaccessの利用を考えてみたいと思います。また、それとともに、ACCESSの勉強もしたいと思います。
No.1
- 回答日時:
初めまして。
MS-EXCELはデータベース用ソフトでは無いので、やろうとされていることができなくは無いですけど大変ですよね。
もうEXCELシートである程度、基本のデータは入力されているのなら、MS-ACCESSとかに移行されてはどうですか?
EXCELを習得されているのなら、関数等もVBAで共通ですし、親しみやすいと思いますよ。
頑張ってくださいね。。。
回答ありがとうございます!!m(__)m
Accessの使用は結構考えていたのですが、どうにもちょっと苦手でして避けている感じでして・・・
それでもやっぱりACCESSの方が利便性がありますよね。
検討してみます。
ありがとうございました。m(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで日付から日にちを削...
-
Excelで2行単位のソートの出来...
-
エクセルで1列に500行並んだデ...
-
複数の条件に合う行番号を取得...
-
excel:別シートの値を飛び飛び...
-
VBA 数式を最終行までコピー
-
エクセルで、重複データを除外...
-
Excelの30個ずつの平均値の出し方
-
不要な行を消したい
-
エクセルで1つの会社名に対して...
-
エクセル2016にて、行挿入&コピ...
-
Countifよりも早く重複数をカウ...
-
エクセルデータを使っての差し...
-
マクロ コピー貼り付けと重複デ...
-
500行の中から、多い順に抽出す...
-
エクセルで横並びの複数データ...
-
Excelでデータベースを構築した...
-
エクセルで重複データを削除す...
-
エクセルで並び替えをしたあと...
-
Excelのマクロの使い方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで日付から日にちを削...
-
エクセルで1列に500行並んだデ...
-
複数の条件に合う行番号を取得...
-
Excelで2行単位のソートの出来...
-
excel:別シートの値を飛び飛び...
-
Excelの30個ずつの平均値の出し方
-
エクセルで、重複データを除外...
-
Excelで2つのデータの突合せを...
-
Countifよりも早く重複数をカウ...
-
VBA 数式を最終行までコピー
-
エクセルで1つの会社名に対して...
-
エクセル2016にて、行挿入&コピ...
-
エクセルで横並びの複数データ...
-
エクセルVBA C列に特定の文字列...
-
VBA 大きなtxtテキストファ...
-
エクセル~空白のセルのある行...
-
500行の中から、多い順に抽出す...
-
不要な行を消したい
-
本日の日付を超えているものを...
-
【Excel】小計単位で並べ替えを...
おすすめ情報