本文へスキップ

英文法ドリル

現在完了形と過去形の使い分け 練習問題30問(即時採点つき)

過去を示す語(yesterday / in 2019 / last week)があれば過去形、結果・経験・継続・完了が今につながっていれば現在完了形。下の30問はクリックするたびに即採点され、日本語話者向けの解説が表示されます。

著者: Raheel Ashraf読了の目安:約18分

無料の練習: 英語 Grammar 練習問題|無料・解答と解説つき

判断の軸は一つです。出来事が「過去の一点」で終わっているなら過去形、今とつながっているなら現在完了形。yesterday、in 2019、last week などの過去を示す言葉が文にあれば過去形、「〜したことがある」「もう〜した(今もその結果がある)」「〜以来ずっと」なら現在完了形を使います。

下の30問は中学レベルの基礎から入試・TOEICレベルまで3段階に分かれています。解答はクリックした瞬間に採点され、それぞれの問題に「なぜその形になるのか」を日本語で解説します。アメリカ英語で過去形も使われる問題には、解説でそのことを書き添えました。

現在完了形 vs 過去形 クイズ 30問

基礎(中学レベル)

1.I ___ my homework yesterday.
2.I ___ my homework. Look, I can show it to you.
3.She ___ to Kyoto in 2019.
4.「私は納豆を一度も食べたことがありません」の正しい英語は?
5.He ___ his keys. He can't open the door.
6.We ___ this movie last week.
7.She ___ in Osaka since 2010.
8.I ___ just had lunch, so I'm not hungry.
9.___ she call you yesterday?
10.They ___ each other for ten years, and they are still best friends.

標準(高校レベル)

11.My grandfather ___ this house in 1970.
12.I can't find my wallet. I think I ___ it at the office.
13.Look! Someone ___ the window.
14.Shakespeare ___ 38 plays.
15.I ___ him since we graduated from high school.
16.She ___ her homework yet.
17.I ___ to Hawaii three times.
18.___ you buy this bike?
19.He ___ in Tokyo for five years, but now he lives in Nagoya.
20.Hurry up! The train ___ yet.

応用(入試・TOEICレベル)

21.Productivity has improved since he ___ the company.
22.This is the first time I ___ a typhoon this close.
23.Mr. Tanaka ___ for this company for over twenty years, and he shows no sign of retiring.
24.She ___ her presentation by the time the client arrived.
25.次のうち文法的に正しい文は?
26.The author is only 35, but she ___ ten novels so far.
27.Sales ___ significantly since the new manager took over.
28.We ___ this problem many times over the past few months.
29.He ___ to America. He will come back next month.
30.This is the best meal I ___ in years.
解答と解説クイズ後に開いて確認できます。
  1. 1. finishedyesterday という過去の言葉があるので過去形。日本語では「昨日、宿題を終えました」も「宿題は終えたところです」も同じ「〜した」ですが、英語は yesterday がある時点で過去形に固定されます。
  2. 2. have finished「今、見せられる」=宿題ができた結果が現在に残っているので現在完了形。日本語の「〜した」だけでは判断できない、結果に注目するのが現在完了形です(アメリカ英語の会話では I finished my homework. も使われますが、試験では現在完了形が正解です)。
  3. 3. wentin 2019 は具体的な過去の時点。過去の時点と一緒に使えるのは過去形だけです。現在完了形は「京都に行ったことがある」(経験)なら使えますが、in 2019 のように年を特定すると過去形に限られます。
  4. 4. I have never eaten natto.「〜したことがない」という経験は現在完了形 + never で、have の後ろは過去分詞 eaten です(ate は過去形なので have never ate は誤り)。日本語だと過去の話に聞こえますが、英語では「今までの人生の中で」=今につながる話として have never eaten と言うのが標準です。なお、アメリカ英語の会話では I never ate natto. と過去形で言うことも珍しくありません。
  5. 5. has lost鍵を失くしたのは過去の出来事ですが、今も鍵が見つからない=結果が続いているので has lost。「鍵を失くしました」と日本語では過去形にしか聞こえないのが落とし穴です。アメリカ英語では He lost his keys. と言うことも多いですが、「今開けられない」という結果を示す標準的な形は has lost です。
  6. 6. sawlast week は過去の言葉なので saw。日本人は「その映画は見ました」と経験のつもりで have seen を選びがちですが、last week とセットなら過去形になります。
  7. 7. has livedsince 2010(2010年から今も)は継続を表すので現在完了形。日本語なら「2010年から大阪に住んでいます」で完了形の形は出てきません。since があったら has lived とセットで覚えましょう。
  8. 8. havejust(ちょうど〜したところ)は現在完了形の仲間で have just + 過去分詞。主語が I なので have。「〜したばかり」は日本語では過去形に聞こえますが、英語では今の状態を説明する現在完了形です。
  9. 9. Didyesterday がある疑問文なので Did。Has she called you?(もう電話した?)は today や yet など「今」につながる言葉と組み合わせます。yesterday + Have は誤りです。
  10. 10. have knownfor ten years(10年の間ずっと)と and they are still best friends(今も親友)から、現在までの継続なので have known。knew にすると、もう付き合いが終わった話になってしまいます。日本語の「10年知っています」は現在形に聞こえますが、英語では期間をまたいで今も続く関係は現在完了形です。
  11. 11. builtin 1970 と年が特定されているので過去形。今も家は残っていますが、作業そのものは過去に完結した話です。「結果が今ある」だけを見て have built としないように。
  12. 12. have left財布が今ない=「置いてきた」結果が現在に影響しているので have left。イギリス英語では特に、今困っている結果に焦点を当てて現在完了形を使います。ただし、この文は過去形の I think I left it at the office. も自然で、アメリカ英語ではむしろ過去形の方がよく聞かれます。leave(現在形)と was leaving(過去進行形)は意味が合いません。
  13. 13. has broken「見て!窓が割れている」=割れた結果を今見ているので has broken。目の前の結果を伝えるのが現在完了形です。アメリカ英語の会話では Someone broke the window! も自然に使われますが、結果を指さす文脈で試験が求めるのは has broken です。
  14. 14. wroteシェイクスピアはもう亡くなっているので、その業績は過去形。日本語では「シェイクスピアは38もの戯曲を書いています」のように現在形に近い感覚で語りがちですが、英語では故人の実績は wrote です。
  15. 15. haven't seen高校を卒業してから「今まで会っていない」=継続の否定なので haven't seen。日本語の「会っていない」は現在形のような感覚ですが、since とセットなら現在完了形の否定形です。
  16. 16. hasn't finishedyet(まだ)は現在完了形の相棒なので hasn't finished。didn't finish にすると「昨日の宿題をやらなかった」という過去の特定の話になります。yet / already / just は現在完了形と一緒に覚えましょう。
  17. 17. have been3回行ったことがある=経験なので have been。「今ハワイに行っていて戻っていない」という意味なら have gone です。経験の have been と、行ったままの have gone の違いは入試の定番ひっかけです。
  18. 18. When did「いつ買ったの?」と過去の時点を聞く疑問文は When did you buy?。現在完了形の文に When は使えません(When have you bought? は誤り)。なぜなら完了形は「いつか」より「今の状態」に関心があるからです。
  19. 19. livedbut now he lives in Nagoya(今は名古屋)=東京にはもう住んでいないので過去形の lived。for five years があっても「今は続いていない」なら過去形です。これは日本人が最も取り違えやすいパターンの一つです。
  20. 20. hasn't left「まだ出発していない=今も間に合う可能性がある」ので hasn't left。didn't leave だと「(過去のある時点で)出発しなかった」となり、今の状況の説明になりません。急げと言える根拠は現在の状態です。
  21. 21. joinedsince の後ろ(節)は過去形:since he joined。主節が現在完了形でも since 節の中は過去形というのが定石です。since he has joined としないように注意しましょう。
  22. 22. have experiencedThis is the first time + 現在完了形が固定パターン。「初めて〜した」と日本語では過去の報告に聞こえますが、英語では「人生でこれまでの経験」なので have experienced です。
  23. 23. has worked「まだ辞める気配がない」=勤務が今も続いているので has worked。for 二十年以上でも、続いているか終わったかで時制が変わります。TOEICでは文末の状況説明に注目しましょう。
  24. 24. had finished「クライアントが来た時にはもう終えていた」=過去のある時点より前の完了なので過去完了形 had finished。現在完了形ではない点に注意。過去の中で「より前」を表すのが大過去です。
  25. 25. She has gone to the store.現在完了形は have/has + 過去分詞。go の過去分詞は gone(went は過去形)。has は三単現のとき。日本語の「〜した」は形が一つなので、have+過去分詞の組み合わせが身につきにくく、この種のミスは日本人に多いです。
  26. 26. has writtenso far(今までのところ)は現在までの期間をまとめる語なので has written。作家は今も現役で、これからも本が増える可能性があります。had written は過去のある時点を基準にした形なので、基準になる過去の時点がないこの文には合いません。Q14 のシェイクスピアと比べると、活動が今も続いているかどうかで時制が分かれるのがわかります。
  27. 27. have increasedsince で「〜以来ずっと」=今につながる変化なので have increased。TOEICのグラフ・売上問題の定番表現です。「since + 過去形の節 → 主節は現在完了形」のセットで押さえましょう。
  28. 28. have discussedover the past few months(ここ数か月にわたって)は「過去から今までの間」を表すので現在完了形。yesterday など一点の過去なら discussed ですが、「past(現在まで)」が入ったら完了形です。
  29. 29. has gone「今も向こうにいる(来月帰る)」ので has gone。has been to America だと「行ったことがある(今は日本にいる)」という経験の意味になり、来月帰ってくる話とつながりません。
  30. 30. have hadThis is(今食べている食事)を「ここ何年かの経験の中で一番」と比べているので、現在までの経験を表す have had。最上級 + 現在完了形は入試頻出です。had had は過去のある時点を基準にする形なので This is とは合いません。なお、食べ終わった後に That was the best meal… と言う場合は、I've had / I'd had / I had のどれも実際に使われます。

ルールまとめ:時制は「言葉」で決める

現在完了形か過去形かは、意味で悩むより文の中の言葉で機械的に決めるのがわかりやすい方法です。過去を一点で指定する語(yesterday, last week, in 2019, two years ago, when I was a child)があれば過去形。今につながる語(just, already, yet, ever, never, since, for, recently, so far, over the past〜)があれば現在完了形です。

  • 過去形 ← yesterday / last week / in 2019 / ago / when 〜 / 具体的な日時
  • 現在完了形 ← just / already / yet / ever / never / since / for / recently / so far / This is the first time
  • 経験「〜したことがある」→ have been(行ったままなら have gone)
  • 継続「〜以来ずっと」→ have + 過去分詞(続いていなければ過去形に戻す)

時を表す言葉がない文で迷ったら、「その出来事は今の状況とつながっているか」を自分に聞いてみてください。つながっていれば現在完了形、過去の一点で話が閉じていれば過去形です。

よくあるひっかけパターン

入試やTOEICで出るひっかけは、ほぼ次の4パターンに集約されます。どれも「一見現在完了形に見える言葉が入っているが、実は過去形」というものです。

  • for five years があっても「今は終わっている」→ 過去形(He lived in Tokyo for five years, but now〜)
  • since 節の中は過去形(since he joined / since I was a child)
  • 故人・歴史上の人物の業績 → 過去形(Shakespeare wrote 38 plays)。現役の人の業績なら現在完了形(she has written ten novels so far)
  • 現在完了形の疑問文・否定文に When は使えない(When did you buy? は OK/When have you bought? は NG)

for や since を見たら即「現在完了形!」と反射する前に、文全体が「今も続いている話か」を確認。TOEICの長文では but now〜 でひっくり返されることがよくあります。

アメリカ英語とイギリス英語の違い

このページの正解は、学校英語・TOEICで標準とされる形(イギリス英語寄りの使い分け)に合わせています。ただしアメリカ英語の会話では、just / already / yet と一緒でも過去形がよく使われます。Did you eat yet? / I just got here. / I already sent it. はアメリカでは自然な英語で、間違いではありません。

一方、yesterday や last week など過去の一点を示す語と現在完了形を組み合わせるのは、どちらの英語でも誤りです(× I have seen him yesterday)。試験では完了形を選び、実際の会話で過去形を聞いても驚かない、という構えで十分です。

なぜ日本人はこの使い分けでつまずくのか

根本的な原因は、日本語に英語の「完了相(perfect aspect)」に対応する文法形式が存在しないことです。英語の現在完了形は「過去の出来事+今の状態」をひとつの形(have + 過去分詞)で表しますが、日本語は「もう宿題をした」「宿題をしたことがある」「2010年から住んでいる」をすべて普通の「〜した/〜している」で済ませてしまいます。つまり日本人の頭の中には、時制を「過去・完了」で分ける棚がそもそも用意されていないのです。

さらに厄介なのは、現在完了形の文を日本語に訳すとほぼすべて「〜した/〜ている」という過去形か現在形に聞こえることです。「I have lost my keys」=「鍵を失くしました(過去形に聞こえる)」、「I have lived in Osaka since 2010」=「2010年から住んでいます(現在形に聞こえる)」。このように日本語の訳と英語の形がズレているため、訳して考える学習法では永久に定着しません。ルールを言葉(yesterday があったら過去形、just / since / yet があったら完了形)で機械化し、繰り返し判定する訓練が必要です。

自分の英作文を見直すときは、「yesterday や ago があるのに have/has を付けていないか」「since / for で今も続く話なのに過去形にしていないか」の2点を確認してください。

効果的な練習方法

時制はルールを知っているだけでは使えず、繰り返し判定して初めて手が動くようになります。30問を一度解いたら、間違えた問題の解説を読み直し、数日後にもう一度解いてみてください。

そのあとは自分の英文で確かめましょう。PromGeeの無料英文法チェッカーに自分のメールや日記を貼り付けると、時制の判断ミスを指摘し、なぜその時制になるかを説明してくれます。

もっと練習する

よくある質問

現在完了形と過去形の一番シンプルな見分け方は?

文の中に yesterday、last week、in 2019 など過去の時点を示す言葉があれば過去形、just、already、yet、since、for など今につながる言葉があれば現在完了形です。言葉がなければ「その出来事の結果が今も残っているか」で判断します。

「〜したことがある」は全部現在完了形ですか?

経験を表す「〜したことがある」は現在完了形(have + 過去分詞)です。ただし文の中に過去の時点(last year など)がある場合は「去年行った」=過去形になります。「I have been to Kyoto. / I went to Kyoto last year.」のように言葉で決まります。

have been と have gone の違いがわかりません

have been to は「行ったことがある(今は戻っている)」という経験、have gone to は「行ってしまって今も向こうにいる」という結果です。He has gone to America. He will be back next month. のように、帰ってくる予定の話なら have gone が正解です。

自分の英文の時制ミスをその場で確認

ルールを知っても、自分の文章で間違えると本番で直せません。PromGeeの無料英文法チェッカーにメールや日記を貼り付けると、時制の判断ミスを解説してくれます。

無料で英文をチェックする
時制の比較: I went yesterday; I’ve been there; I’ve lived here since 2020

参考資料・出典

続きを読む:関連ガイド

このテーマを無料ツールで練習: 無料英語時制クイズ (Verb Tenses Quiz)