OpenTOEIC
登入免費註冊註冊
所有文法主題
動詞與時態中級

過去完成式

Past perfect

過去完成式表示在過去某個時間點或另一件事之前已經發生並完成的事;進行式則強調持續到該過去時間點的過程。

練習 60 題

句型結構

Had 適用於所有主詞(單數與複數)。縮寫 'd(she'd left)容易與 would 混淆;看後面的動詞:'d + V3 是 had,'d + 原形動詞 是 would。

形式過去完成式過去完成進行式
肯定句S + had + V3/edS + had + been + V-ing
否定句S + had not (hadn't) + V3S + hadn't + been + V-ing
疑問句Had + S + V3?Had + S + been + V-ing?

過去完成式的用法

  • 在過去另一件事之前發生的事(後發生的事用過去簡單式)。
  • 在過去某個時間點之前完成的事:by + 過去時間點、by the time + 過去簡單式。
  • 截至過去某一時刻的經驗:It was the first time she had visited Tokyo.
  • 用於間接引述,且引述動詞為過去式時:He said that he had sent the file.
  • 用於第三類條件句以及對過去的 wish:If we had known, we would have called.
例句
  • When I got to the airport, the flight had already departed.我到機場時,班機已經起飛了。
  • By the time the auditors arrived, the accountant had prepared all the documents.稽核人員到達時,會計已經備妥所有文件。
  • By the end of 2022, the firm had expanded into five new markets.到 2022 年底,公司已拓展至五個新市場。
  • Ms. Rossi had never managed a team before she joined our company.Rossi 小姐加入我們公司之前從未管理過團隊。

Before、after、when、by the time

  • 有 before/after 時,連接詞已經表明先後順序,所以兩個子句都用過去簡單式也可以接受:After she signed the contract, she left. 過去完成式則強調事情已經完成。
  • 比較:When I arrived, they left(我到的時候他們才離開)和 When I arrived, they had left(我到之前他們就已經離開了)。
連接詞常見結構說明
beforeS + had V3 + before + S + V2先發生的事用 had V3
afterAfter + S + had V3, S + V2先發生的事放在 after 之後
whenWhen + S + V2, S + had V3意思是「那時另一件事已經完成」
by the timeBy the time + S + V2, S + had V3Part 5 非常常見
untilS + hadn't V3 + until + S + V2直到……才……

過去完成式、過去簡單式還是現在完成式?

這三種時態常常並列在選項中。判斷方法是找出句子的參考時間點:參考點是現在,就用現在完成式;參考點是過去某一刻,在那之前發生的事用過去完成式;單純發生在那個過去時間點的事則用過去簡單式。

  • 當參考點在過去時,since 也能搭配過去完成式:had worked here since 2010(算到 2024 年為止)。
  • 句子只有一件過去的事、也沒有其他時間點時,不要用過去完成式:The company had opened in 1990 不自然,只要 opened 就夠了。
  • 在 Part 6 中,如果整段都用過去簡單式敘述,而要選的句子講的是更早之前發生的事,就是使用 had + V3 的時候。
參考時間點時態例句
現在(since, so far, to date)現在完成式Ms. Tran has worked here since 2010.
過去某一刻,之前持續或已發生的事過去完成式When Ms. Tran retired in 2024, she had worked here since 2010.
發生在過去時間點,之前沒有其他事過去簡單式Ms. Tran retired in 2024.
by + 現在的時間點現在完成式By now, most guests have checked in.
by + 過去的時間點過去完成式By noon yesterday, most guests had checked in.
例句
  • By the time the new CEO took over, the company had already lost two major clients.新任執行長接手時,公司已經失去了兩個大客戶。
  • The warehouse was empty because the last shipment had left the day before.倉庫是空的,因為最後一批貨前一天就已經出貨了。

過去完成進行式

用 had been + V-ing 強調一個持續的活動一直進行到(或直到緊接著)過去的某個時間點,常搭配 for/since,或用來解釋過去某個狀態的原因。

例句
  • The company had been operating at a loss for two years before it was acquired.公司在被收購前已連續虧損兩年。
  • The staff were tired because they had been preparing for the trade show all week.員工很疲憊,因為他們整週都在為商展做準備。

過去完成式被動:had been + V3

當主詞是受影響的事物,且這件事在某個過去時間點之前已經完成時,用 had been + V3。這個形式常出現在 Part 5,和 had、has been、was being 等干擾選項並列。

S + had been + V3 (+ by + 行為者)
  • 空格後沒有受詞,主詞是物品:By the time we arrived, all the tickets ------- → had been sold。
  • 與主動的 had + V3 區分:The manager had approved the plan(核准的人是主詞)與 The plan had been approved(計畫被核准)。
  • 常見片語:had already been sent, had been cancelled, had been postponed, had been scheduled for, had not yet been confirmed。
例句
  • The order had already been shipped when the customer called to cancel it.客戶打電話來要取消訂單時,貨已經寄出了。
  • The flight had been delayed twice before it was finally cancelled.這班飛機在最終被取消之前已經延誤了兩次。

倒裝句:No sooner / Hardly

正式文體用倒裝來表達「一……就……」。前一子句用過去完成式並將助動詞倒裝至主詞前,後一子句用過去簡單式。

No sooner + had + S + V3 + than + S + V2Hardly/Scarcely + had + S + V3 + when + S + V2
例句
  • No sooner had the store opened than customers rushed in.店門一開,顧客就蜂擁而入。
  • Hardly had we launched the campaign when orders began to rise.我們一推出活動,訂單就開始增加。

Had hoped、had expected、had intended:未實現的打算

表示期待、打算的動詞(hope, expect, intend, plan, mean, want)用過去完成式時,表達說話者曾經希望或打算、但最後沒有實現的事。這個句型非常常見於 Part 6、Part 7 的致歉信與改期通知。

S + had hoped/expected/intended/planned + to V, but ...
  • 後面的子句通常有 but, however, unfortunately,說明計畫改變的原因。
  • 意思接近 was/were going to + V,但更正式,也更強調遺憾。
  • 用在比較時:lower than we had expected 表示結果低於先前的預期,並不表示結果原本很高。
例句
  • We had hoped to complete the renovation by March, but the materials arrived late.我們原本希望在三月前完成整修,但建材晚到了。
  • The team had intended to launch the app in spring; however, testing took longer than expected.團隊原本打算在春季推出這款應用程式;然而測試花的時間比預期更久。
  • Attendance at the fair was lower than the organizers had expected.展覽會的參觀人數低於主辦單位的預期。

多益解題技巧

  1. 常見題型:By the time + S + V2(過去簡單式), S + had + V3。例如:By the time the manager arrived, the meeting ______ already → 選 had ended。相反地,by the time + 現在簡單式 時主要子句用 will have V3(見未來式單元)。
  2. By + 過去時間點(by last Friday, by the end of 2022, by then)也是過去完成式的線索:By the end of last year, we had opened four branches.
  3. 句中若有兩件過去的事,先發生的用 had V3。提示詞:before, after, already, just, never ... before, until, when。
  4. 在 Part 6 中,文章以過去簡單式敘事;需要填空的句子若提到更早之前發生的事(例如顧客在漲價前就已下單),答案就是 had + V3。

常見錯誤

錯誤: By the time we arrived, the presentation already finished.

正確: By the time we arrived, the presentation had already finished.

By the time + 過去簡單式 → 主要子句用過去完成式。

錯誤: She told me she has sent the invoice.

正確: She told me she had sent the invoice.

過去的間接引述中,更早發生的事要退一個時態變成 had V3。

錯誤: No sooner had the meeting started when the power went out.

正確: No sooner had the meeting started than the power went out.

No sooner 搭配 than;hardly/scarcely 才搭配 when。

錯誤: We had been knowing the supplier for years.

正確: We had known the supplier for years.

狀態動詞不用進行式。

練習題(附解答)

  1. 1.By the time the auditors arrived, the accountant ------- all the receipts.

    1. (A) organizes
    2. (B) has organized
    3. (C) had organized
    4. (D) was organized
    查看解答與解析

    答案: (C) had organized

    By the time + 過去簡單式 → 先發生的動作用過去完成式 had organized。has organized 是現在完成式,was organized 是被動式卻有受詞。

  2. 2.The flight ------- when we reached the gate, so we had to book another one.

    1. (A) has already departed
    2. (B) already departs
    3. (C) is already departing
    4. (D) had already departed
    查看解答與解析

    答案: (D) had already departed

    班機在我們抵達登機門(reached)之前就起飛了 → 過去完成式 had already departed。其他選項都是現在式。

  3. 3.By the end of last year, Monarch Retail ------- twelve new stores across the Midwest.

    1. (A) has opened
    2. (B) had opened
    3. (C) opens
    4. (D) will have opened
    查看解答與解析

    答案: (B) had opened

    By the end of last year 是過去的時間點 → 在該時間點前完成的事用 had opened。has opened 和 opens 時態錯誤,will have opened 用於未來的時間點。

  4. 4.The conference room was empty because the meeting ------- an hour earlier.

    1. (A) ends
    2. (B) has ended
    3. (C) is ending
    4. (D) had ended
    查看解答與解析

    答案: (D) had ended

    會議在房間空著(was empty)之前就結束了,且有 an hour earlier → had ended。has ended 以現在為基準。

  5. 5.Ms. Clark ------- for the company for twenty years when she retired in 2024.

    1. (A) has worked
    2. (B) had worked
    3. (C) works
    4. (D) is working
    查看解答與解析

    答案: (B) had worked

    一段時間(for twenty years)持續到某個過去時間點(retired in 2024)→ had worked。has worked 只表示持續到現在。

  6. 6.The quarterly report ------- by the time the board members met on Thursday morning.

    1. (A) had been finalized
    2. (B) had finalized
    3. (C) has been finalized
    4. (D) is finalized
    查看解答與解析

    答案: (A) had been finalized

    報告在 by the time the board members met 之前被定稿 → 過去完成式被動語態 had been finalized。had finalized 是主動,has been finalized 和 is finalized 時態錯誤。

  7. 7.Fairmont Textiles ------- money for three consecutive years before a new CEO turned the business around.

    1. (A) has been losing
    2. (B) is losing
    3. (C) had been losing
    4. (D) loses
    查看解答與解析

    答案: (C) had been losing

    持續 for three consecutive years 直到過去時間點 before a new CEO turned 的活動 → had been losing。has been losing 是延續到現在,is losing 和 loses 時態錯誤。

  8. 8.The sales team was disappointed because they ------- to close the deal before the end of the quarter.

    1. (A) had expected
    2. (B) expect
    3. (C) have expected
    4. (D) are expecting
    查看解答與解析

    答案: (A) had expected

    期待發生在過去感到失望(was disappointed)之前 → had expected。各個現在式都與主要子句不一致。

  9. 9.No sooner had the shuttle left the hotel ------- it started to rain heavily.

    1. (A) than
    2. (B) when
    3. (C) then
    4. (D) that
    查看解答與解析

    答案: (A) than

    No sooner 一定搭配 than。when 搭配 hardly/scarcely,then 和 that 不屬於這個句型。

  10. 10.Hardly had the technicians restarted the servers ------- the whole booking system crashed again.

    1. (A) than
    2. (B) when
    3. (C) then
    4. (D) so
    查看解答與解析

    答案: (B) when

    Hardly/Scarcely 搭配 when。than 搭配 no sooner,then 和 so 不屬於這個句型。

練習題

60 題 Part 5 題型,一次一題,每題作答後立即附上解析。

開始練習

常見問題

過去完成式什麼時候用?

過去完成式(past perfect)用於在另一件過去的事或某個過去時間點之前已經發生並完成的事。先發生的事用 had + V3,後發生的事用過去簡單式:When I got to the airport, the flight had already departed。這個時態也出現在間接引述、第三類條件句,以及 wish 之後談過去的情況。

過去完成式的公式是什麼?

肯定句:S + had + V3/ed;否定句:S + had not (hadn't) + V3;疑問句:Had + S + V3?。Had 適用於所有主詞,不隨單複數改變。被動式是 had been + V3,進行式是 had been + V-ing。

過去完成式和過去簡單式有什麼不同?

過去簡單式敘述發生在某個過去時間點的事;過去完成式再往前推一步,講的是那個時間點之前發生的事。比較 When I arrived, they left(我到的時候他們剛好離開)與 When I arrived, they had left(我到之前他們就已經走了)。如果句子只有一件過去的事,用過去簡單式就夠了。

before 和 after 之後一定要用過去完成式嗎?

不一定。因為 before 和 after 已經表明兩件事的先後順序,兩個子句都用過去簡單式仍然正確:After she signed the contract, she left。想強調先發生的事已經完成時才用過去完成式:After she had signed the contract, she left。相反地,搭配 when 和 by the time 時,先後順序取決於時態,所以必須正確選出 had + V3。

By the time 要搭配什麼時態?

取決於時間點。By the time + 過去簡單式 時,主要子句用過去完成式:By the time the auditors arrived, we had prepared all the documents。By the time + 現在簡單式(談未來)時,主要子句用未來完成式:By the time you receive this letter, the policy will have taken effect。by the time 引導的子句不用 will。

過去完成進行式和過去完成式有什麼不同?

had been + V-ing 強調持續到某個過去時間點的活動,常搭配 for 或 since,或用來解釋某種狀態的原因:The staff were tired because they had been preparing for the trade show all week。had + V3 則強調已經完成的事或已完成的數量:They had prepared three booths。