1号艇の1着率や、人気の組み合わせが来る割合を、自分の通う場で数えてみたい。そう思ってエクセルを開いたものの、どんな表にすればいいのかで手が止まっている方向けの記事です。
表は「1行=1艇」で縦に並べます。1レースは6行です。数えるのは COUNTIFS という関数2つの割り算で、場ごとの1号艇の1着率も、月ごとのレース数も同じ形の式で出せます。
この記事では、表の列と、最初に作る集計3つを式つきで書きます。式は、答えの分かっている見本データで計算が合うことを確かめました。最後に、ZEN の研究用データ約11万レースで同じ集計をした結果も載せます。
競艇のデータで何が数えられるかの全体は、競艇のデータの見方と集め方にまとめています。
表は「1行=1艇」。1レースが6行になる
最初に決めるのは、1行に何を書くかです。形は2つあります。
- 1行=1艇: 1レースを6行に分けて、艇ごとに着順などを書く
- 1行=1レース: 1レースを1行にして、1号艇から6号艇を横に並べる
集計を作るなら、1行=1艇がおすすめです。「1号艇で、着順が1」という条件を、列を2つ指定するだけで書けるからです。1行=1レースの表だと、艇番ごとに列が分かれます。2号艇や3号艇で同じことをするたびに、式の列を書き換えることになります。
1行=1レースの表は、1レースを横に見比べるのに向いています。見るための表と、数えるための表を分けて考えると迷いません。
最初の集計に要る列は、次の6つです。
| 列 | 入れるもの | 書き方 |
|---|---|---|
| race_date | レースの日 | 2025-01-05 の形 |
| venue_name | 場の名前 | 毎回同じ表記 |
| race_no | 何レース目か | 数字 |
| boat_number | 艇番(1〜6) | 数字 |
| finish_position | 着順 | 数字。失格などは空 |
| result_status | 着順の状態 | 1着・転覆失格 など |
列の名前は、ZEN AI LAB の自社ツール BoatData Collector Pro が出す見出しに合わせました。このツールの出力は、初期設定で、1行=1艇の表が51列、1行=1レースの表が144列あります。144列は、レースの情報18列と、艇ごとの21列×6艇です。
艇ごとの51列には、選手の級や勝率、モーターの2連対率、展示タイム、気象なども入っています。最初は上の6列だけで足ります。展示タイムの順位ごとに1着の割合を数えた結果は、競艇の展示データの見方にまとめました。
まず見本を打ち込んで、式の答えを先に知っておく
自分のデータでいきなり式を作ると、出た数字が合っているのか分かりません。先に、答えの分かっている小さな見本で試します。
次の30行は、式の確認用に作った架空の数字です。見本場A・見本場Bは実在しない場で、5レースぶんです。見本場Bの2レース目は、1号艇が転覆失格で着順が付かなかった、という想定にしました。
race_date,venue_name,race_no,boat_number,finish_position,result_status
2025-01-05,見本場A,1,1,1,1着
2025-01-05,見本場A,1,2,3,3着
2025-01-05,見本場A,1,3,2,2着
2025-01-05,見本場A,1,4,5,5着
2025-01-05,見本場A,1,5,4,4着
2025-01-05,見本場A,1,6,6,6着
2025-01-05,見本場A,2,1,3,3着
2025-01-05,見本場A,2,2,1,1着
2025-01-05,見本場A,2,3,2,2着
2025-01-05,見本場A,2,4,4,4着
2025-01-05,見本場A,2,5,6,6着
2025-01-05,見本場A,2,6,5,5着
2025-02-03,見本場A,1,1,2,2着
2025-02-03,見本場A,1,2,1,1着
2025-02-03,見本場A,1,3,3,3着
2025-02-03,見本場A,1,4,6,6着
2025-02-03,見本場A,1,5,4,4着
2025-02-03,見本場A,1,6,5,5着
2025-02-03,見本場B,1,1,1,1着
2025-02-03,見本場B,1,2,2,2着
2025-02-03,見本場B,1,3,4,4着
2025-02-03,見本場B,1,4,3,3着
2025-02-03,見本場B,1,5,6,6着
2025-02-03,見本場B,1,6,5,5着
2025-02-03,見本場B,2,1,,転覆失格
2025-02-03,見本場B,2,2,1,1着
2025-02-03,見本場B,2,3,2,2着
2025-02-03,見本場B,2,4,3,3着
2025-02-03,見本場B,2,5,5,5着
2025-02-03,見本場B,2,6,4,4着
エクセルへの入れ方です。
- A1 セルに貼り付けます。1行が1つのセルに入ります
- 貼った列を選んだまま、「データ」タブの「区切り位置」を押します
- 区切り文字に「カンマ」を選んで完了します。A〜F列に分かれます
見出しが1行目、データが2行目から31行目です。
式の答えは、Excel 本体ではなく、Excel の関数を再現する計算ライブラリで確かめたものです。

集計1: 場ごとの1号艇の1着率は、COUNTIFS 2つで割る
H2に「見本場A」、H3に「見本場B」と打ちます。I2に次の式を入れて、I3へコピーします。
=COUNTIFS(B:B,H2,D:D,1,E:E,1)/COUNTIFS(B:B,H2,D:D,1)
COUNTIFS は、条件に合う行の数を数える関数です。左の COUNTIFS は「場がH2と同じで、艇番が1で、着順が1」の行を数えます。右は「場がH2と同じで、艇番が1」の行、つまりその場のレース数です。
セルの表示形式をパーセントにすると、見本の答えは見本場Aが33.3%、見本場Bが50.0%です。
BoatData で出した艇ごとの表なら、場は C 列、艇番は J 列、着順は AU 列です。51列の表は AY 列で終わるので、右の空いた BA2 に場の名前を打ち、BB2 に次の式を入れます。
=COUNTIFS(C:C,BA2,J:J,1,AU:AU,1)/COUNTIFS(C:C,BA2,J:J,1)
失格で着順が空の行は、分母から外さない
見本場Bの2レース目は、1号艇の着順が空です。この行を分母から外すと、数字が変わります。
=COUNTIFS(B:B,H3,D:D,1,E:E,1)/COUNTIFS(B:B,H3,D:D,1,E:E,">=1")
右の COUNTIFS に「着順が1以上」を足した式です。空のセルはこの条件に合わないので、分母から消えます。見本場Bは50.0%から100.0%になります。
転覆や失格で着順が付かなかったレースも、1号艇が1着ではなかったレースです。分母に残す最初の式のほうを使います。
欠場の行は「走っていない」行として分ける
着順が空になるのは、失格だけではありません。選手が出走しなかった艇は、result_status が「欠場」になり、着順も空です。1着ではなかったのではなく、走っていない行です。
欠場の行を分母から外すなら、右の COUNTIFS に「result_status が欠場ではない」という条件を足します。見本ならF列、BoatData の表ならAV列です。
=COUNTIFS(B:B,H3,D:D,1,E:E,1)/COUNTIFS(B:B,H3,D:D,1,F:F,"<>欠場")
見本に「2025-02-03,見本場B,3,1,,欠場」の1行を足すと、最初の式では見本場Bが33.3%に下がります。この式なら50.0%のままです。確かめ終わったら、足した1行は消してください。残すと、このあとの見本の答えが合わなくなります。
ZEN の集計では、1号艇に限らず、欠場の艇がいたレースをまるごと除きました。外すかどうかを、数える前に決めておきます。
自分で決めた数え方は、表の横にメモしておくと、あとで数字を見返したときに迷いません。
集計2: 人気は、払戻の表で数える
「人気ごとの来る割合」を出したいときに気をつけることがあります。1行=1艇の表には、その艇が何番人気だったかの列がありません。
人気の数字が入っているのは、払戻の表です。1行が「そのレースで払戻のあった組み合わせ1つ」で、券種・組み合わせ・払戻金・人気が並びます。BoatData の払戻の表は10列で、bet_type(券種)がE列、popularity(人気)がH列です。
ZEN の研究用データ(2023〜24年)では、単勝と複勝の行には人気の数字が1件も入っていませんでした。3連単や2連単の行には、99.9%以上に入っています。単勝の人気ごとの1着率は、このデータからは出せません。
そこで、3連単で1番人気の組み合わせが来た割合を数えます。次の10行も架空の見本です。5レースぶんの3連単(trifecta)と2連単(exacta)で、払戻金と人気も作った数字です。
race_date,venue,race_no,race_id,bet_type,combination,payout_yen,popularity
2025-01-05,見本場A,1,20250105_A_01,trifecta,1-3-2,1180,1
2025-01-05,見本場A,1,20250105_A_01,exacta,1-3,420,1
2025-01-05,見本場A,2,20250105_A_02,trifecta,2-3-1,5630,7
2025-01-05,見本場A,2,20250105_A_02,exacta,2-3,1250,4
2025-02-03,見本場A,1,20250203_A_01,trifecta,2-1-3,3240,4
2025-02-03,見本場A,1,20250203_A_01,exacta,2-1,690,1
2025-02-03,見本場B,1,20250203_B_01,trifecta,1-2-4,1560,1
2025-02-03,見本場B,1,20250203_B_01,exacta,1-2,380,1
2025-02-03,見本場B,2,20250203_B_02,trifecta,2-3-4,8910,9
2025-02-03,見本場B,2,20250203_B_02,exacta,2-3,1570,3
別のシートに同じ手順で貼り、A〜H列に分けます。J2に次の式を入れます。
=COUNTIFS(E:E,"trifecta",H:H,1)/COUNTIFS(E:E,"trifecta")
左は「券種が3連単で、人気が1」の行、右は3連単の行の数です。見本の答えは40.0%です。
券種の条件を外して =COUNTIFS(H:H,1)/COUNT(H:H) にすると、50.0%になります。2連単の1番人気まで混ざるからです。払戻の表には券種がいくつも並ぶので、券種の条件は必ず付けます。
1番人気から5番人気までに入った割合は、人気の条件を "<=5" に変えれば出ます。見本では60.0%です。
集計3: 月ごとのレース数は、1号艇の行だけ数える
データがどの月に何レースぶんあるかを、先に数えておきます。H6に次の式を入れます。
=COUNTIFS(A:A,">="&DATE(2025,1,1),A:A,"<"&DATE(2025,2,1),D:D,1)
「日付が2025年1月1日以上で、2月1日より前で、艇番が1」の行を数えます。見本の答えは2です。2月にするなら、DATE の中を (2025,2,1) と (2025,3,1) に変えます。答えは3です。
艇番が1の行だけを数えるのは、1レースが6行あるからです。条件を外すと、レース数の6倍が出ます。
月ごとのレース数を見ておくと、「この月の1着率は何レースから出した数字か」が分かります。レース数の少ない月や場の数字は、参考として扱います。
ピボットテーブルでも、着順の内訳を出せる
式を書くのが面倒なら、ピボットテーブルでも数えられます。表の中のセルを選び、「挿入」タブの「ピボットテーブル」を押します。
- フィルター: boat_number を入れて「1」だけを選ぶ
- 行: venue_name
- 列: finish_position
- 値: race_no を入れて、集計の方法を「個数」にする
これで、場ごとに1号艇の着順の内訳が出ます。見本なら見本場Aは1着・2着・3着が1つずつ、見本場Bは1着が1つ、空白が1つです。
ZEN のデータで同じ集計をすると、54.6%と53.8%
ここからは、見本ではなく実際のデータです。ZEN BOAT LAB は BoatData で集めた研究用データベースを持っています。2023〜24年の全24場のレースで、集計1と同じ数え方をしました。
数える前に、どのレースを入れるかを決めました。欠場の艇がいたレースや、3連単の払戻が成立しなかったレースは除いています。無料で公開している1号艇の着順の記事と同じ条件です。
1号艇の1着率は54.6%でした(109,188レース)。 公開済みの記事の値と同じです。失格などで着順が付かなかった1号艇は、分母に残しています。
次に、条件を何も付けずに数え直しました。1号艇の行をすべて分母にすると、112,344レースで53.8%です。
数え方を変えただけで、0.8ポイント下がりました。 除いていた3,156レースが分母に入ったためです。どちらが正しいかではなく、何を分母にしたかで数字は動きます。人と数字を比べるときは、条件もいっしょに伝えます。
3連単の1番人気も、1番人気の記事と同じ条件で数えました。107,166レースで10.4%です。こちらも公開済みの値と同じでした。払戻の表の行をそのまま数えた集計2の式では、10.5%でほぼ同じです。
1号艇の1着率は、場によって違います。場ごとの値は、ここでは載せません。自分の場で集計1の式を使えば、同じ形で出せます。
数字はどれも過去のレースを数えたものです。この先の結果を約束するものではなく、買い方の良し悪しを示すものでもありません。
1号艇の1着率をレース番号やレースの種類で分けた結果は、競艇の1号艇の勝率にまとめました。
期間を長くすると、行は何十万にもなる
集計の式は短くても、元の表を作るのはひと仕事です。
研究用データベースでは、1年のレースは約5万6千でした。1行=1艇にすると、1年で約34万行です。2023年は55,992レース、335,952行でした。月で見ると、2023〜2025年は1か月3,948〜5,196レースです。
2023〜2025年の3年ぶんだと、1,009,512行になります。エクセルの1枚のシートに入るのは1,048,576行までです(Microsoft の「Excel の仕様と制限」)。3年でほぼ上限です。
研究用データベース全体は、2023年1月1日から2026年9月27日までの1,366日で、210,600レース・1,263,600行です。1枚のシートには入りません。
公式の公開データを自分で取って表にする方法は、競艇の過去データをダウンロードする方法に書きました。何か月分も集めるなら、取って表の形にそろえる作業を毎月くり返すことになります。
出走表(公式の番組表のファイル)を日付つきの1艇1行のCSVにするコードは、競艇の出走表をエクセルにする手順に載せています。
その作業が重くなったら、集めて Excel・CSV にするところだけツールに任せる方法もあります。ZEN の自社ツール BoatData Collector Pro は、この記事と同じ列名・1行=1艇の形で書き出せます。
集めて表にするところを任せるなら
ZEN AI LAB が作った自社ツールに、BoatData Collector Pro があります。競艇の公開データを、期間と競艇場を選んでまとめて集め、Excel・CSV にする Windows 用のツールです。この記事の研究用データベースも、このツールで集めました。
- 出力は「レースごとに1行」と「艇ごとに1行」の2つの形です。この記事の表は、艇ごとに1行のほうです
- Excel に出すと「レース一覧」「艇別データ」「払戻」などのシートに分かれます
- 1枚のシートが100万行を超えると、「艇別データ_2」のように分けて出力します(ZEN の開発資料の仕様)
- 開発時の試験では、2026年8月の1か月・24場・4,944レースの取得に390.7秒でした
- 長い期間を Excel 形式で出すと時間がかかります。開発資料では、その場合は CSV か分割での出力を勧めています
使う前に知っておいてほしいことです。
- 予想・買い目・自動投票の機能はありません。集めて出力するところまでです
- 公式サイトや BOATRACE とは関係のない、非公式のツールです。データの正確性は保証していません
- 無料版があります。取得できる期間は直近30日までです。製品版は期間を自分で選べます(保存できるのは2016年10月1日以降のレース。2026年11月に実際に取得して確かめた範囲)
- オッズも取得できますが、初期設定ではオフです
くわしくはBoatData Collector Pro 無料版のページと、BoatData Collector Pro のページにあります。自分で取得の仕組みを作る場合の注意は、競艇のデータをAPIで取得するときの注意にまとめました。
競艇のデータを、何か月分も自分で集めて数えるなら

BoatData Collector Pro は、競艇の公開データを期間と競艇場を選んで集め、Excel・CSV に書き出す自社ツールです。予想や買い目は出しません。保存できるのは2016年10月1日以降のレースです。
- BoatData Collector Pro:6,000円(買い切り・note。ココナラでも6,000円)
- 分析版 BOAT DATA PRO:10,000円(ココナラ)。集めたデータを進入コース別・選手別などに集計する画面つき
- 無料版:直近30日まで(LINEで受け取り)
価格は2026年11月7日の表示です。変わることがあるので、買う前に各ページで確かめてください。Windows 11(64bit)用です。
確かめたことと、データでは分からないこと
確かめたことは、次のとおりです。
- 記事の式は、見本データ(艇ごと30行・払戻10行)を入れたエクセルのファイルを作り、Python の計算ライブラリ(formulas)で評価しました。同じ集計を Python(pandas)でも計算し、8個のセルの答えがすべて一致しました
- BoatData の実際の出力と同じ列の並び(艇ごと51列・払戻10列)にも同じ見本を置き、列の記号を読み替えた式で8個のセルが一致しました
- 欠場の1行を足した場合の2つの式も、見本の並びと BoatData の並びの両方で、同じ方法で確かめました
- 51列・144列・10列は、BoatData のソースコードの列の定義から数えました
- 54.6%・10.4% は、研究用データベースの2023〜24年を、公開済みの2本の記事と同じ条件で数え直した値です。件数まで一致しました
- 行数・レース数は、研究用データベースの件数です。2026年のぶんは、件数だけを数えました
- 販売ページ2つと Microsoft の仕様のページは、2026年10月18日に開いて読みました
このデータでは分からないことは、次のとおりです。
- まだ確かめられていないこと:Microsoft Excel 本体では、式を実行していません。確かめたのは、Excel の関数を再現する計算ライブラリでの答えです。Excel で違う答えが出たら、先に見本の貼り付けがずれていないかを見てください
- まだ確かめられていないこと:ピボットテーブルと「区切り位置」は、実際の画面で操作していません。ピボットテーブルの内訳は、Python で同じ表を作った値です
- まだ確かめられていないこと:CSV をエクセルで開いたとき、日付が日付として読まれるかは確かめていません。集計3の答えが合わないときは、日付の列が日付になっているかを見てください
- まだ確かめられていないこと:Google スプレッドシートなど、ほかの表計算ソフトでは試していません
- まだ確かめられていないこと:0.8ポイントの差を、除いた理由ごとに分けてはいません
まとめ
競艇のデータ分析は、「1行=1艇」の表を縦にためれば、COUNTIFS の割り算で始められます。
- 日付・場・レース番号・艇番・着順・着順の状態の6列で、1レースを6行に分けて並べます
- 見本を貼って、見本場Aが33.3%、3連単の1番人気が40.0%、1月が2レースになるかを確かめます
- 自分のデータでは、月ごとのレース数と、何を分母に入れたかを数字の横に書いておきます


[…] Excel で同じ数え方をするときの式は、競艇のデータ分析をエクセルでに書きました。着順が空の行を分母に残す式と、外す式の両方を載せています。 […]
[…] Excelでこの表を作り、ピボットテーブルやCOUNTIFSで1号艇の1着率を出す手順は、競艇のデータ分析をエクセルでする方法にあります。 […]
[…] 払戻は、払戻のあった組み合わせ1つを1行にして、券種・払戻金・人気を並べた表で出せます。エクセルでの数え方で使った表と同じ形です […]
[…] Excel に入れたあとの集計の手順は、競艇のデータ分析をエクセルで始める方法に書きました。 […]
[…] ただし、スプレッドシートに CSV を読み込むと、3連単の組み合わせ「1-4-6」が「2001-4-6」のような日付に変わりました。式の「1-2-3」も同じように日付として扱われるので、数は合います。表を目で見るときは、組み合わせが日付になっていることに気をつけてください。ピボットテーブルで組み合わせごとの回数を一度に出す手順は、競艇のデータ分析をエクセルでに書いています。 […]
[…] 競艇データをエクセルで分析する […]
[…] 何か月・何年分の払戻を集めて表にするのは、手では続きません。その部分は、ツールに任せる方法もあります。払戻の記録の持ち方は、競艇のオッズの過去データと競艇のデータ分析をエクセルでに書きました。 […]
[…] 番号を固定せずに数えると、さっきの12.90ポイントのように、レースの組み方の差まで時間のせいに見えてしまいます。式の組み方は競艇のデータ分析をエクセルでする方法で詳しく書いています。 […]