過去完成式(Past Perfect Tense)是用來描述「比過去某個時間點更早發生」的動作,公式就是 had + 過去分詞。這篇文章會用簡單的說明和例句,帶你搞懂過去完成式的定義、句型、與其他時態的差異,以及常見錯誤,讓你一次學會不再混淆。
過去完成式是什麼?過去的過去解析
核心概念:比過去更早發生的動作
過去完成式的重點只有一句話:描述在過去某個時間點之前,就已經發生或完成的動作。也就是說,當你在講一件過去的事情時,如果還有另一件事發生得「更早」,那件更早發生的事,就要用過去完成式來表達。
簡單來說,過去完成式處理的是「過去的過去」,也就是兩個過去事件之間的先後順序。
用時間軸理解「先發生」與「後發生」
想像一條時間軸,上面有兩個過去發生的事件:
舉例來說:「湯姆到家的時候,電影已經開始了。」
- 較晚發生的事件:湯姆到家(簡單過去式)
- 更早發生的事件:電影開始(過去完成式)
英文寫法就是:When Tom arrived home, the movie had already started.

透過這條時間軸,你可以清楚看到,過去完成式永遠是用來標記「比另一個過去時間點更早」的那個動作。
過去完成式句型結構:had 加過去分詞
肯定句公式
過去完成式的肯定句公式非常簡單:
主詞 + had + 過去分詞
不管主詞是第幾人稱、單數或複數,had 的形式都不會改變,這點跟簡單過去式或現在完成式不太一樣,算是過去完成式比較好記的地方。
基礎例句示範
- Emily had finished her homework before dinner. (艾蜜莉在晚餐前就已經完成作業了。)
- When Kevin arrived at the party, David and Sarah had already left. (凱文到派對的時候,大衛和莎拉已經離開了。)
- Grace had never seen snow until that winter. (在那個冬天之前,葛瑞絲從來沒見過雪。)
從這幾個例句可以看出,過去完成式常常會搭配一個「比較晚發生」的過去事件一起出現,用來凸顯先後順序。
過去完成式與簡單過去式、現在完成式比較
英文學習者最容易混淆的,就是過去完成式、簡單過去式、現在完成式這三個時態。以下分別說明差異。
過去完成式 vs 簡單過去式
- 簡單過去式:只描述「單一」的過去事件,沒有牽涉到先後順序的問題。 例:Mark watched a movie last night.(馬克昨晚看了一部電影。)
- 過去完成式:描述「兩個」過去事件,而且要強調誰先發生、誰後發生。 例:Lisa had watched the movie before Tom told her the ending. (在湯姆告訴她結局之前,麗莎已經看過那部電影了。)
判斷關鍵:如果句子裡只有一件過去的事,用簡單過去式就好;如果有兩件事,而且需要分清楚先後順序,才需要過去完成式。
過去完成式 vs 現在完成式
- 現在完成式:have/has + 過去分詞,描述「從過去某個時間點,延續或影響到現在」。 例:Sarah has finished her report.(莎拉已經完成她的報告了,此刻仍然有效。)
- 過去完成式:had + 過去分詞,描述「從過去某個時間點,延續或影響到過去的另一個時間點」,跟現在完全無關。 例:David had finished his report before the deadline. (大衛在截止日期之前,就已經完成他的報告了。)
可以這樣記:現在完成式是「過去到現在」,過去完成式是「過去到過去某一點」。兩者的邏輯很像,只是參考的時間點不同。
<延伸閱讀: 現在完成式怎麼用?用法、公式與多益考題一次搞懂! >
常見混淆情境舉例
情境:湯姆說他「已經吃過午餐了」。
- 如果是湯姆現在說這句話:Tom says, “I have already had lunch.”(現在完成式,跟現在有關)
- 如果是在轉述「昨天發生的事」,例如「湯姆說他已經吃過午餐了」:Tom said that he had already had lunch.(過去完成式,因為「說」跟「吃」都是過去的事,而「吃」發生得更早)
只要記得先確認「現在有沒有關係」,再確認「有沒有兩個過去事件的先後順序」,就能快速分辨這三種時態。
過去完成式使用時機三大情境
情境一:敘述先後順序(when、before、after 子句)
當句子裡出現 when、before、after 等連接詞,用來標示兩個過去動作的先後關係時,發生得比較早的動作要用過去完成式。
例句:By the time Sarah arrived, David and Emily had already ordered dinner. (莎拉抵達之前,大衛和艾蜜莉已經點好晚餐了。)
情境二:間接引述、受詞子句(said、told、heard 後接)
在轉述別人過去說過的話時,如果轉述的內容本身也是「更早發生」的事,常會用過去完成式來表達。
例句:Kevin told Lisa that he had lost his keys. (凱文告訴麗莎,他弄丟了鑰匙——弄丟鑰匙這件事發生在「告訴麗莎」之前。)
情境三:假設語氣(與過去事實相反的假設)
在「與過去事實相反」的假設句中(第三型條件句),if 子句要用過去完成式,主要子句則搭配 would have + 過去分詞。
例句:If Tom had studied harder, he would have passed the exam. (如果湯姆當初更用功讀書,他就會通過考試了——但事實上並沒有。)
<延伸閱讀: 【2026 英文假設語氣全攻略】從基礎到進階:公式、例句、練習題一次學會 >
過去完成式否定句與疑問句寫法
否定句:had not(hadn’t)+ 過去分詞
只要在 had 後面加上 not,就能組成過去完成式的否定句,口語上常縮寫成 hadn’t。
例句:Emily hadn’t finished her work when her boss called. (老闆打電話來的時候,艾蜜莉還沒完成工作。)
疑問句:Had + 主詞 + 過去分詞?
過去完成式的疑問句,只要把 had 移到主詞前面即可。
例句:Had Sarah ever visited Japan before that trip? (在那趟旅行之前,莎拉曾經去過日本嗎?)
過去完成式常見錯誤與辨識技巧
誤用時機:該用簡單過去式卻用過去完成式
最常見的錯誤,就是句子裡其實只有「一個」過去事件,卻誤用了過去完成式。
錯誤示範:Tom had gone to school yesterday. 正確寫法:Tom went to school yesterday.
因為這句話只描述了一個單純的過去動作,並沒有另一件更早發生的事作對照,所以不需要用過去完成式,用簡單過去式就足夠了。
時間副詞提示詞:already、before、after、as soon as、by the time、when
看到以下這些提示詞,通常代表句子需要考慮過去完成式:
- already(已經)
- before(在……之前)
- after(在……之後)
- as soon as(一……就……)
- by the time(到……的時候)
- when(當……的時候,搭配另一件更早發生的事)
不過要注意,這些詞出現時,還是要回頭確認句子裡是否真的有「兩個過去事件」,而不是看到提示詞就直接套用過去完成式。
<延伸閱讀: 英文副詞完整攻略:意思、用法、位置一次搞懂 >
過去完成式的進階版:過去完成進行式
學會過去完成式之後,你可能會在文章或考題中看到一個長得很像的時態——過去完成進行式(Past Perfect Continuous)。這裡簡單介紹一下,讓你先有個概念。
公式:had been + 現在分詞
過去完成進行式的公式是 had been + Ving,一樣是描述「比過去某時間點更早發生」的動作,但更強調這個動作「持續進行的過程」,而不只是單純完成而已。
例句:By the time Tom arrived, Sarah had been waiting for two hours. (湯姆抵達的時候,莎拉已經等了兩個小時。)
過去完成式 vs 過去完成進行式
兩者最大的差異在於「強調完成」還是「強調過程」:
- 過去完成式:強調動作「已經完成」。 例:Tom had cleaned the house before his guests arrived. (在客人抵達之前,湯姆已經把房子打掃完了。)
- 過去完成進行式:強調動作「持續進行了一段時間」。 例:Tom had been cleaning the house for three hours before his guests arrived. (在客人抵達之前,湯姆已經打掃房子打掃了三個小時。)
簡單來說,如果你想強調「花了多久時間」或「動作一直在進行」,就適合用過去完成進行式;如果只是單純表達「這件事在那之前就做完了」,用過去完成式就足夠了。
過去完成式一般練習題
考慮到不是每個人都要考多益,這裡先準備五題生活化情境的練習題,一樣由簡單到困難排列,幫助你先在日常情境中打好基礎。
第一題
Last weekend, David _____ (visit) his grandmother in the countryside.
(A) visited (B) had visited (C) has visited (D) was visiting
第二題
By the time Tom got home, his dog _____ (already/eat) dinner.
(A) already ate (B) had already eaten (C) already eats (D) eats
第三題
Sarah _____ (never/ride) a bike before her father taught her last summer.
(A) never rode (B) had never ridden (C) has never ridden (D) never rides
第四題
When Emily opened the fridge, she realized that her sister _____ (eat) all the ice cream.
(A) ate (B) had eaten (C) eats (D) has eaten
第五題
If Lisa _____ (know) about the traffic jam, she _____ (leave) earlier.
(A) knew, would leave (B) had known, would have left (C) knows, will leave (D) had known, would leave
解答與解析
第一題
答案:(A) visited
中文翻譯:上週末,大衛去鄉下探望了他的奶奶。
解析:這句話只描述了「一個」單純的過去事件,並沒有另一件更早發生的事作對照,所以應該用簡單過去式 visited,而不是過去完成式。這題就是在測試「該用簡單過去式卻誤用過去完成式」的常見錯誤,也是判斷過去完成式最基本的第一步:先確認句子裡到底有幾個過去事件。
第二題
答案:(B) had already eaten
中文翻譯:湯姆到家的時候,他的狗已經把晚餐吃光了。
解析:湯姆到家是後發生的動作,狗吃晚餐則發生得更早,所以要用過去完成式 had already eaten,來凸顯兩件事的先後順序。
第三題
答案:(B) had never ridden
中文翻譯:在去年夏天爸爸教她之前,莎拉從來沒騎過腳踏車。
解析:before her father taught her 標示出一個過去的時間點,「從來沒騎過腳踏車」這件事發生在「爸爸教她」之前,所以要用過去完成式 had never ridden。
第四題
答案:(B) had eaten
中文翻譯:艾蜜莉打開冰箱時,發現她姐姐已經把冰淇淋都吃光了。
解析:打開冰箱是後發生的動作,姐姐吃冰淇淋則發生在打開冰箱之前,所以要用過去完成式 had eaten,才能正確表達先後順序。這題比前面幾題稍微困難一點,因為句子沒有明顯的 before、by the time 等提示詞,需要自己判斷出兩件事的先後關係。
第五題
答案:(B) had known, would have left
中文翻譯:如果麗莎當初知道會塞車,她就會提早出發了。
解析:這是與過去事實相反的假設句(第三型條件句)。if 子句要用過去完成式 had known,主要子句則搭配 would have + 過去分詞 would have left,用來表達「事實上並沒有發生」的過去假設。這是五題中結構最複雜的一題,因為要同時判斷兩個子句的時態搭配。
過去完成式多益考題練習
如果你有多益考試的需求,以下再提供五題模擬考題。這裡的題目用字和句型都比照真實多益 Part 5 的出題方式,也就是每題只有一個空格、情境以職場為主,一樣由簡單到困難排列,建議先自己作答一次,再往下對照解析。
第一題
By the time the manager arrived, the team _____ the presentation slides for the client meeting.
(A) prepares (B) had already prepared (C) has already prepared (D) will already prepare
第二題
Ms. Lopez mentioned that she _____ the invoice before the client called to ask about it.
(A) sends (B) had sent (C) has sent (D) send
第三題
When the auditors reviewed the files, they discovered that the accountant _____ several calculation errors.
(A) makes (B) had made (C) has made (D) make
第四題
By the time the CEO finished his speech, the sales team _____ the new proposal to every regional office.
(A) has already sent (B) had already sent (C) already sends (D) will already send
第五題
If the shipment had arrived on time, the factory _____ the production schedule as planned.
(A) would keep (B) would have kept (C) keeps (D) will keep
解答與解析
第一題
答案:(B) had already prepared
中文翻譯:經理抵達之前,團隊已經準備好客戶會議要用的簡報投影片了。
解析:經理抵達是後發生的動作,團隊準備投影片則發生在經理抵達之前,所以要用過去完成式 had already prepared,藉此凸顯兩件事的先後順序。
第二題
答案:(B) had sent
中文翻譯:羅培茲女士提到,在客戶打電話詢問之前,她已經把發票寄出去了。
解析:這是典型的間接引述句型,mentioned 是過去式,而「寄出發票」這件事發生在「客戶打電話」之前,所以要用過去完成式 had sent,才能正確表達先後順序。
第三題
答案:(B) had made
中文翻譯:稽核人員審查檔案的時候,發現會計人員先前犯過幾個計算上的錯誤。
解析:稽核人員審查檔案是後發生的動作,會計人員犯錯則發生在審查之前,所以要用過去完成式 had made,來表達「在被發現之前,就已經存在的錯誤」。
第四題
答案:(B) had already sent
中文翻譯:執行長演講結束的時候,業務團隊已經把新的提案寄送給每個區域辦公室了。
解析:句中的 by the time 是明顯的提示詞,代表「演講結束」跟「提案寄出」是兩個先後發生的過去事件,寄出提案發生得更早,所以要用過去完成式 had already sent。這題的難度在於選項都非常相近,只差在助動詞的時態,作答時務必回頭確認句子裡究竟哪一個動作發生得比較早。
第五題
答案:(B) would have kept
中文翻譯:如果貨物當初準時抵達,工廠就能按照計畫維持生產排程了。
解析:這是與過去事實相反的假設句(第三型條件句)。if 子句已經用了過去完成式 had arrived,主要子句就要搭配 would have + 過去分詞 would have kept,用來表達「事實上並沒有發生」的過去假設。這是五題中結構最複雜的一題,因為要同時判斷 if 子句與主要子句的時態搭配,容易被 would keep(第二型條件句的用法)混淆。
結論:過去完成式學習重點整理
過去完成式的核心公式就是 had + 過去分詞,用來表達「比過去某個時間點更早發生」的動作。判斷是否該用過去完成式時,記住三個原則:
- 句子裡是否有兩個過去事件,且需要分清楚先後順序
- 是否出現 when、before、after、as soon as、by the time、already 等提示詞
- 是否為過去的間接引述,或與過去事實相反的假設句
只要掌握這幾個判斷原則,並持續透過例句和考題反覆練習,過去完成式其實並不難,多接觸幾次就能建立起語感,自然而然就能在該用的地方正確使用。
文法觀念有時候光靠自己讀,還是會遇到卡關的地方。如果你在學習過去完成式或其他英文文法時常常感到不確定,歡迎預約 Owen 老師一對一線上英文課程,老師會依照你的學習狀況規劃課程內容,陪你一步步把觀念釐清,學到真正上手為止。
Owen
擁有近十年英語教學經驗的資深講師,專精於多益測驗與商業英文,曾多次在多益考試中獲得900+的高分。Owen 不僅是企業指定的英語培訓講師,更身兼多益專案主持人,致力於教材編輯與教學方法與學習研究,他善於透過系統化的教學,幫助學生高效學習、突破瓶頸,輕鬆掌握應考技巧,最終達成高分目標!
怎麼用-跟簡單過去、現在完成式差在哪.webp)
