Excelでトレード記録を集計する関数|SUMIFSなどの式を、実際に計算して確かめた
トレード記録の集計は、SUM・COUNTIF・AVERAGEIF・SUMIF・SUMIFSの5つの関数でほぼ組めます。総損益、勝率、平均利益と平均損失、プロフィットファクター、銘柄別・月別の損益まで出せます。この記事の式は、架空の30件の記録で、実際のExcel(Microsoft 365 Excel、バージョン16.0、ビルド20430)に入力して計算し、筆者がPythonで別に計算した値と照合して、すべて一致しました。
サンプルの記録は乱数で作った架空のもので、実際の取引ではありません。式の型を覚えるためのものです。(確認日:2026年10月19日)
1. サンプルの記録(30件)
A列に決済日、B列に銘柄、C列に売買、D列にロット、E列に損益(円)を入れ、2行目から31行目までに30件を置きます。1行目は見出しです。
| 行 | 決済日 | 銘柄 | 売買 | ロット | 損益(円) |
|---|---|---|---|---|---|
| 2 | 2026/08/05 | EURUSD | 売り | 0.2 | -8,000 |
| 3 | 2026/08/06 | USDJPY | 売り | 0.2 | 6,000 |
| 4 | 2026/08/08 | USDJPY | 買い | 0.2 | 12,000 |
| 5 | 2026/08/10 | USDJPY | 買い | 0.2 | -16,000 |
| 6 | 2026/08/12 | EURUSD | 買い | 0.3 | -12,000 |
| 7 | 2026/08/13 | GBPJPY | 売り | 0.1 | 3,000 |
| 8 | 2026/08/15 | GBPJPY | 売り | 0.3 | 17,000 |
| 9 | 2026/08/17 | GBPJPY | 買い | 0.3 | 10,000 |
| 10 | 2026/08/18 | USDJPY | 買い | 0.3 | 17,000 |
| 11 | 2026/08/19 | EURUSD | 売り | 0.3 | 3,000 |
| 12 | 2026/08/20 | EURUSD | 売り | 0.1 | -9,000 |
| 13 | 2026/08/22 | EURUSD | 買い | 0.3 | -18,000 |
| 14 | 2026/08/24 | GBPJPY | 売り | 0.1 | 4,000 |
| 15 | 2026/08/26 | EURUSD | 買い | 0.2 | 5,000 |
| 16 | 2026/08/28 | GBPJPY | 売り | 0.2 | -10,000 |
| 17 | 2026/08/29 | GBPJPY | 売り | 0.3 | 3,000 |
| 18 | 2026/09/01 | USDJPY | 売り | 0.2 | -18,000 |
| 19 | 2026/09/03 | GBPJPY | 売り | 0.1 | 8,000 |
| 20 | 2026/09/05 | USDJPY | 売り | 0.1 | -4,000 |
| 21 | 2026/09/06 | EURUSD | 買い | 0.1 | 11,000 |
| 22 | 2026/09/07 | GBPJPY | 買い | 0.1 | 12,000 |
| 23 | 2026/09/08 | USDJPY | 売り | 0.1 | 18,000 |
| 24 | 2026/09/09 | EURUSD | 買い | 0.1 | 13,000 |
| 25 | 2026/09/11 | USDJPY | 買い | 0.1 | -5,000 |
| 26 | 2026/09/14 | USDJPY | 売り | 0.3 | 6,000 |
| 27 | 2026/09/17 | GBPJPY | 売り | 0.2 | 12,000 |
| 28 | 2026/09/18 | EURUSD | 買い | 0.2 | 8,000 |
| 29 | 2026/09/19 | GBPJPY | 買い | 0.1 | 13,000 |
| 30 | 2026/09/20 | USDJPY | 買い | 0.2 | -18,000 |
| 31 | 2026/09/22 | USDJPY | 買い | 0.3 | -6,000 |
2. 集計の式と、Excelで計算した結果
| 項目 | 式 | 結果 |
|---|---|---|
| 総損益 | =SUM(E2:E31) |
57,000 |
| 取引の数 | =COUNT(E2:E31) |
30 |
| 勝ちトレードの数 | =COUNTIF(E2:E31,">0") |
19 |
| 負けトレードの数 | =COUNTIF(E2:E31,"<0") |
11 |
| 勝率 | =COUNTIF(E2:E31,">0")/COUNT(E2:E31) |
0.6333…(63.3%) |
| 平均利益 | =AVERAGEIF(E2:E31,">0") |
9,526.3… |
| 平均損失 | =AVERAGEIF(E2:E31,"<0") |
−11,272.7… |
| プロフィットファクター | =SUMIF(E2:E31,">0")/-SUMIF(E2:E31,"<0") |
1.4597… |
| 銘柄別(USDJPY) | =SUMIFS(E2:E31,B2:B31,"USDJPY") |
−8,000 |
| 銘柄別(EURUSD) | =SUMIFS(E2:E31,B2:B31,"EURUSD") |
−7,000 |
| 銘柄別(GBPJPY) | =SUMIFS(E2:E31,B2:B31,"GBPJPY") |
72,000 |
| 月別(8月) | =SUMIFS(E2:E31,A2:A31,">="&DATE(2026,8,1),A2:A31,"<"&DATE(2026,9,1)) |
7,000 |
| 月別(9月) | =SUMIFS(E2:E31,A2:A31,">="&DATE(2026,9,1),A2:A31,"<"&DATE(2026,10,1)) |
50,000 |
プロフィットファクターは、利益の合計を、損失の合計(の絶対値)で割った値です。式の-SUMIF(…"<0")の先頭のマイナスは、負の合計を正にするためです。勝率が63.3%でも、平均損失(11,273円)が平均利益(9,526円)より大きいことが、式の結果から分かります。
3. 式を書く時の決まり
- 条件は、ダブルクォーテーションで囲む:
">0"のように、比較の記号と数値をまとめて文字列にします - 日付の条件は、比較の記号と、DATE関数を「&」でつなぐ:
">="&DATE(2026,8,1)のように書きます。月の範囲は、「月初以上、翌月初未満」で指定すると、月末の日数を気にしなくて済みます - 範囲は、同じ行数にそろえる:SUMIFSでは、合計する範囲と条件の範囲の行数が合っている必要があります(上の式は、すべて2〜31行)
- 行を足す予定なら、範囲を、
E:Eのように列ごとにするか、テーブルにします
テーブルにすると、構造化参照で書ける
データの範囲を、[挿入]→[テーブル]でテーブルにして、名前を「Trades」とすると、次のように書けます。行を足すと、式の範囲が自動で広がります。次の式も、Excelで計算して、Pythonの計算と一致しました。
| 式 | 結果 |
|---|---|
=SUM(Trades[損益]) |
57,000 |
=SUMIFS(Trades[損益],Trades[銘柄],"USDJPY") |
−8,000 |
=COUNTIFS(Trades[損益],">0",Trades[銘柄],"GBPJPY") |
9 |
=AVERAGEIFS(Trades[損益],Trades[売買],"買い") |
1,733.3… |
=MAXIFS(Trades[損益],Trades[銘柄],"EURUSD") |
13,000 |
=MINIFS(Trades[損益],Trades[銘柄],"EURUSD") |
−18,000 |
4. 合計が0になる時:数値が文字列になっている
取引履歴を書き出してExcelに貼ると、損益が「12,000」のような文字列になっていることがあります。筆者は、損益の列を文字列の書式にして、カンマ付きの文字列を入れ、確かめました。
| 式 | 結果 |
|---|---|
=SUM(E2:E31) |
0 |
=COUNT(E2:E31) |
0 |
=COUNTA(E2:E31) |
30 |
=SUMPRODUCT(--ISTEXT(E2:E31)) |
30(文字列のセルの数) |
=SUMPRODUCT(VALUE(E2:E31)) |
57,000(正しい合計) |
文字列の数値は、SUMやCOUNTの対象にならず、エラーも出さずに0になることが分かります。合計が0だったり、数が合わなかったりしたら、COUNTとCOUNTAの差や、ISTEXTで、文字列を疑います。直し方は、VALUE関数で数値に変換する、または、文字列の列を数値の書式にして、入力し直す、などです。取引履歴の書き出しで損益が合わない原因はMT5の取引履歴を書き出す方法にまとめています。
5. 次に作るもの
- 累積損益と最大ドローダウンは、補助列を使います(Excelで最大ドローダウンを計算する式)
- これらの関数がMOSの出題範囲のどこに当たるかはMOSの科目とレベルの選び方と、トレード記録をExcelで集計する力とMOSにまとめています
- ZigZagの波の集計は波の大きさを時間足ごとに集計するを参照してください
まとめ
- SUM・COUNTIF・AVERAGEIF・SUMIF・SUMIFSで、総損益・勝率・平均損益・プロフィットファクター・銘柄別・月別が出せる
- 30件のサンプルで、Excelの計算結果は、Pythonの計算結果と、すべて一致した
- 日付の条件は、「>=」&DATE(…)のように書く。月は「月初以上、翌月初未満」
- テーブルにすると、行を足しても式の範囲が広がる
- 合計が0になったら、数値が文字列になっていないか、COUNTとISTEXTで確認する


