如何在 Excel 中相減:解釋每個方法(2026)
由Iron Software團隊撰寫。
是否現在需要在Excel中減去數字? 簡單的回答是:點擊您想顯示結果的單元格,輸入=,點擊第一個單元格,輸入減號(-),點擊第二個單元格,按Enter。 這就是最常見的情況,兩個數字,兩個單元格,一個公式。
但是Microsoft Excel為您提供了比這單一方法更高的靈活性。 無論您需要一次減去多個單元格、縱跨兩列工作、減去日期、減去時間值、處理百分比,還是對整個矩陣進行計算,本指南涵蓋了所有方法。 將這些方法變成您的Excel技能,您將能夠毫不猶豫地解決最複雜的任務。
方法一:簡單減法公式(最快)
Excel中的簡單減法從這裡開始,對於大部分的日常工作,無需更深入。
- 點擊您想顯示答案的結果單元格(例如,C1)。
- 輸入等號:=
- 點擊您起始值所在的單元格(例如,A1),或直接輸入數字。
- 輸入減號:-
- 點擊放您要減去的值的單元格(例如,B1),或輸入數字。
- 按Enter。
C1單元格中將顯示以下公式:=A1-B1。Excel會立即顯示計算出的差值。

為什麼這樣做有效: Excel將任何以=開頭的內容視為公式。 減號即是減法運算符,與您日常數學中使用的符號相同。
專家提示: 您可以通過連結減號來在一個公式中減去多個數字。 要從起始值中減去三個值,寫=A1-B1-C1。您可以連結任何需要的數量,Excel會從左到右執行所有計算。
關於SUBTRACT函式的說明: Excel中沒有內建的SUBTRACT函式。 Excel中每個減法實例都在公式中直接使用減號(-)。 這讓許多新使用者感到驚訝,因為他們預期有如同SUM或AVERAGE那樣的函式,但在Excel中,減號運算符是正確的,也是唯一的減法方式。
方法2:一次性減去整列(填充柄)
一旦您讓其中一個公式運作良好,使用填充柄將其整列複製下去只需一秒鐘。
-
在列表第一個單元格中輸入減法公式(例如,在C1中輸入=A1-B1)。
-
點擊C1以選中它。
-
將滑鼠懸停在單元格的右下角綠色小方塊上,這是填充柄。 游標會變成一個細的十字。
-
按下滑鼠拖曳填充柄向下覆蓋您所需的所有列。
-
松開滑鼠,Excel會自動用已調整的公式填充每個單元格。

Excel在向下填充時會自動更新單元格參考。 C2將包含=A2-B2,C3將包含=A3-B3,以此類推。 這稱為相對引用,它是任何處理行列資料的人節省時間的最重要的Excel技能之一。
雙擊快捷方式: 如果您的資料在相鄰列中沒有空單元格或間隙,您可以雙擊填充柄而不是拖曳它。 Excel會自動向下填充,以匹配鄰居列的長度,這非常適合在許多單元格中一次應用公式。
方法3:使用SUM函式減去多個單元格
要在一個簡潔整潔的公式中從一個起始值中減去多個單元格,請使用帶有負數的SUM函式。
這種方法:在SUM中傳入您想減去的值作為負數。
公式 - 單獨減去多個單元格:
=SUM(A1, -B1, -C1, -D1)The provided C# code appears to be a fragment or possibly a formula from a spreadsheet application like Excel, rather than actual C# code. If this is intended to be a formula, it doesn't directly translate to VB.NET as it stands. However, if you meant to convert a C# code snippet that uses a similar operation, please provide the complete C# code for accurate conversion.The provided C# code appears to be a fragment or possibly a formula from a spreadsheet application like Excel, rather than actual C# code. If this is intended to be a formula, it doesn't directly translate to VB.NET as it stands. However, if you meant to convert a C# code snippet that uses a similar operation, please provide the complete C# code for accurate conversion.公式 - 從一個單元格中減去一個範圍(最常見的模式):
=A1-SUM(B1:B5)=A1-SUM(B1:B5)=A1-SUM(B1:B5)=A1-SUM(B1:B5)當您在一個單元格中有預算或總額,以及在多個單元格中有費用或扣除列表時,這第二個版本特別有用。

何時使用這個: 每當您需要減去超過兩個或三個值時,此模式更為清晰,也更容易審核,與跨多列連結多個減號相比。 它還使您日後可輕鬆擴展範圍而無需重寫公式。
方法4:減去兩列(逐行)
減去兩列是Excel中最常見的任務之一。例如,從"收入"列中減去"成本"列,以確定每行的利潤。
- 在結果單元格中輸入=A1-B1(例如,C1)。
- 按Enter。
- 返回點擊C1,然後使用填充柄把公式向下拖到所有行。
Excel會自動在兩列中每對單元格間進行減法運算,A1−B1、A2−B2、A3−B3,以此類推一直向下。
這是處理行列資料的標準方法,並且它可以擴展到任意行數而不更改公式結構。
方法5:使用陣列公式減去(一次減去多列)
陣列公式允許您跨整個範圍減去並返回多個結果,或者合併它們成為一個答案,而不必逐行手動填充。 當您需要同時從多列中減去值,或進行矩陣減法時,該方法很值得遵循。
單一陣列公式 - 總和兩列間所有差值
要從A列中減去B列中的所有值,並在一個結果單元格中返回總差值,請使用此單一陣列公式:
=SUM(A1:A10-B1:B10)=SUM(A1:A10-B1:B10)The provided code appears to be an Excel formula rather than C# code. If you have C# code that you would like converted to VB.NET, please provide that code for conversion.The provided code appears to be an Excel formula rather than C# code. If you have C# code that you would like converted to VB.NET, please provide that code for conversion.在舊版本的Excel中(在Microsoft 365 / Excel 2019之前),按下Ctrl+Shift+Enter以確認為陣列公式,而不只是按下Enter。 Excel會以花括號顯示公式:{=SUM(A1:A10-B1:B10)}. 在Microsoft 365中,單單按Enter就可以,動態陣列會自動處理。

矩陣減法公式 - 減去一個矩陣中的另一個
如果您有兩個等大小的資料塊,需要將其中一個矩陣從另一個矩陣中減去,Excel可以一次性處理解所有行和列。
範例: A1:C3(第一個矩陣)和E1:G3(第二個矩陣)中的值。 要在I1:K3中顯示矩陣減法結果:
-
選擇輸出範圍I1:K3(與資料塊大小相同)。
-
輸入以下公式:
=A1:C3-E1:G3=A1:C3-E1:G3The provided C# code appears to be a fragment of a formula or expression rather than valid C# code. It seems to resemble a spreadsheet formula rather than a programming construct. If you intended to provide a different piece of C# code, please clarify or provide the correct code for conversion.The provided C# code appears to be a fragment of a formula or expression rather than valid C# code. It seems to resemble a spreadsheet formula rather than a programming construct. If you intended to provide a different piece of C# code, please clarify or provide the correct code for conversion. -
在Excel 365中,按Enter,結果會自動填充在所有輸出單元格中。
-
在較舊版本Excel中,按下Ctrl+Shift+Enter確認選擇範圍內的陣列公式。
陣列公式能夠同時對範圍內的每對相應單元格進行操作。 這比起為每個單元格編寫單獨的公式要有效得多,當您需要從一個矩陣中減去另一個矩陣或批量從多列中減去值時。
方法6:特殊貼上 - 從多個單元格中減去相同數字
此方法未得到充分利用但極具實用性。 它允許您就地從整個範圍的單元格中減去相同數字,覆蓋原始值而不新增任何公式列到您的資料中。
範例使用情境: 您需要將50個價格分別減少$10,並且希望這些價格直接在原單元中更新。
步驟:
-
在任一空單元中輸入您想減去的數字(例如,10)。
-
右鍵點擊該單元並選擇複製(或按下Ctrl+C)。
-
選擇您想從中減去的單元範圍(例如,A1:A50)。
-
右鍵選中範圍並選擇特殊貼上(或按下Ctrl+Alt+V)。
-
在"特殊貼上"對話框中,在"貼上"下選擇數值,在"運算"下選擇減去。
-
點擊確認。
Excel會從每個選擇的單元格中減去複製的數字,並直接在原處覆蓋原始值。
重要提示: 此方法會永久更改單元格值。 如果您可能需要恢復,更改前請保留原始資料的備份,或改變主意時立即使用Ctrl+Z。
方法7:右鍵上下文選單(特殊貼上快捷方式)
值得指出的是,在Microsoft Excel中特殊貼上始終只需一次右鍵點擊即可存取,許多使用者不知道上下文選單可以直接存取此功能而不需導航任何功能區選單。
複製好您的值後:
- 右鍵單擊目標範圍 → 特殊貼上 → 將運算設定為減去 → 確定。
這整個工作流程都在滑鼠中進行,無需鍵盤快捷鍵,對於更喜歡以指向點擊導航而非鍵盤命令的使用者來說,這是最容易存取的方法。
方法8:減去日期以找出差值
Excel內部將日期儲存為序號,這意味著您可以像減去其他數字一樣減去日期以確定它們之間的差異。
減去兩個日期以獲得之間的天數:
=B1-A1=B1-A1B1 - A1B1 - A1A1是開始日期,B1是結束日期。 答案是將它們分開的天數。
如果結果顯示為日期,則修正單元格格式: 輸入公式後,結果單元格可能會顯示類似"1/14/1900"的格式,而不是數字。 這是因為Excel自動將日期單元格式應用於結果。 要修正它:
-
右鍵單擊結果單元格 → 格式化單元格。
-
在數字下,選擇數字或常規。
-
點擊 OK。
此單元格現在將顯示兩個日期之間正確的整數差。
方法9:減去時間值(並正確顯示小時)
減去時間值的工作方式與減去日期相同,輸入普通減法公式,Excel自動處理數學運算。 關鍵是要應用正確的單元格格式,以便結果可以正確顯示小時。
基本時間減法:
=B1-A1=B1-A1B1 - A1B1 - A1A1是開始時間,B1是結束時間。
為少於24小時的持續時間正確顯示小時: 右鍵單擊結果單元格 → 格式化單元格 → 自訂 → 輸入h:mm → 確定。
為多於24小時的持續時間正確顯示小時: 使用[h]:mm作為自訂格式。 方括號指示Excel不要在24時時翻轉小時,因此30小時的持續時間顯示為30:00而不是6:00。
跨午夜減去時間值: 如果輪班從晚上11:00開始,並在早上6:00結束,一個簡單的=B1-A1會產生負值。 修正方式:
=MOD(B1-A1, 1)=MOD(B1-A1, 1)`=MOD(B1-A1, 1)``=MOD(B1-A1, 1)`MOD函式將計算結果環繞午夜,並始終返回正的經過時間。
方法10:使用絕對單元格引用減去(鎖定一個單元格)
有時您希望從整個列中減去相同固定單元格,例如從資料集的每行減去一個稅率或儲存在一個參考單元格中的地區基礎成本。
如果您使用像=A1-B1一樣的常規公式,並通過填充柄向下拖曳,Excel會更新兩個單元格引用:B1會變成B2、B3,依此類推。 當B1包含所有行的固定值時,這不是您想要的。
修正: 新增美元符號以鎖定引用。 這稱為絕對引用。
=A1-$B$1=A1-$B$1The provided code appears to be an Excel formula rather than C# code. If you have C# code that needs conversion to VB.NET, please provide it, and I'll be happy to assist!The provided code appears to be an Excel formula rather than C# code. If you have C# code that needs conversion to VB.NET, please provide it, and I'll be happy to assist!現在當您向下拖公式時,A1更新為A2、A3等,但$B$1始終對每行鎖定在B1。 從A列中其他單元格中減去時,將總是使用B1中的相同數字。
鍵盤快捷鍵切換引用型別: 在公式中的任一單元格引用中點擊並按下F4。 Excel會迴圈顯示四個選項:相對(A1) → 絕對($A$1) → 行鎖定(A$1) → 列鎖定($A1)。 反覆按下F4直到得到您需要的版本。
方法11:減去百分比
在Excel中減去百分比需要瞭解Excel如何內部儲存它們。 Excel將所有百分比值以小數形式儲存,因此20%儲存為0.2,而不是20。如果您不了解這一點,可能會在計算的單元格中產生意想不到的結果。
從另一個單元格中減去百分比:
=A1-B1=A1-B1=A1-B1=A1-B1如果A1包含500而B1包含20%(儲存為0.2),這個公式給出499.8,它減去的是0.2,而不是20。這幾乎肯定不是預期結果。
從原始值中減去百分比(最常見的實際用途):
=A1-(A1*B1)=A1-(A1*B1)netnet或等同於:
=A1*(1-B1)=A1*(1-B1)=A1 * (1 - B1)=A1 * (1 - B1)如果A1是500而B1是20%,這正確地計算出500 − 100 = 400。
減去硬編碼百分比時:
=A1-(A1*20%)=A1-(A1*20%)=A1 - (A1 * 0.2)=A1 - (A1 * 0.2)這不需要單獨的百分比單元格,且運作方式相同。
方法12:自動化減法的VB程式
如果您發現自己每週一遍又一遍地在Excel資料上進行相同的減法運算,一個簡單的VBA宏可以自動化整個過程,並按需運行。
注意: 不需要程式編寫經驗即可錄製基本巨集。 Microsoft Excel中的內建巨集錄製器可以捕捉您每項操作並立即重播。
錄製減法巨集:
-
前往檢視 → 巨集 → 錄製巨集。
-
給它命名(例如,SubtractCosts)並指派可選的快捷鍵。
-
點確定,開始錄製。
-
正常執行您的減法步驟(輸入您的公式,拖曳填充柄,按下Enter等)。
-
前往檢視 → 巨集 → 停止錄製。
隨時透過檢視 → 巨集 → 檢視巨集 → 執行運行它,或使用您指定的快捷鍵。
對於希望直接編寫VBA的使用者,這裡有個簡單的範例,它遍歷行,從A列中減去B列並將每個結果寫入C列:
Sub SubtractColumns()
Dim i As Integer
For i = 1 To 10
Cells(i, 3).Value = Cells(i, 1).Value - Cells(i, 2).Value
Next i
End SubSub SubtractColumns()
Dim i As Integer
For i = 1 To 10
Cells(i, 3).Value = Cells(i, 1).Value - Cells(i, 2).Value
Next i
End SubSub SubtractColumns()
Dim i As Integer
For i = 1 To 10
Cells(i, 3).Value = Cells(i, 1).Value - Cells(i, 2).Value
Next i
End SubSub SubtractColumns()
Dim i As Integer
For i = 1 To 10
Cells(i, 3).Value = Cells(i, 1).Value - Cells(i, 2).Value
Next i
End Sub以Alt+F11開啟VBA編輯器,將此貼至不特定的任一模組下並以F5運行。
常見問題及故障排除
即使是簡單的減法公式也可能在真實世界資料中遇到問題。 以下是最常見的問題及其修正方法。
Problem: The result shows #VALUE!
原因: 您減去的其中一個或多個單元格中包含的是文字字串而不是數字。 這經常發生在從其他系統匯入的資料中,數值看起來像數字,但Excel將它們儲存為文字,因此無法執行計算。
修正: 選擇有問題的單元格,找出左上角的小綠色三角形,點擊警告圖標,選擇轉換為數字。 或者,在公式中強制轉換:=VALUE(A1)-VALUE(B1)。
問題:結果單元格顯示為日期而不是數字
原因: Excel自動將日期單元格格式應用於結果(常見於減日期值時或事先將單元格格式設為日期時)。
修正: 右鍵點擊結果單元格 → 格式化單元格 → 數字 → 常規 或 數字 → 確定。
問題:公式顯示為文字字串(您看到的是公式文字,而不是答案)
原因: 在您輸入公式之前單元格被格式化為文字,因此Excel將其儲存為字面字串而不是計算它。
修正: 選中單元格,前往首頁 → 數字下拉選單 → 將單元格格式從"文字"更改為"常規"。然後按F2以編輯並按Enter以重新計算。 現在Excel會顯示已計算的結果。
問題:期望正數卻出現負數
原因: 減法順序倒置。 =B1-A1和=A1-B1給出的符號相反。這是在快速設立公式時的最常見錯誤之一。
修正: 在公式中交換單元格引用。 如果您希望不論哪個值更大都一致得到正數回答,將公式包在ABS()中:=ABS(A1-B1)。
問題:填充柄複製值而不是調整單元格引用
原因: 您可能不小心使用了絕對引用($A$1),本意是相對引用,或源單元在輸入公式前被格式化為文字。
修正: 點入公式,將游標置於引用範圍內,反復按F4直到移除美元符號。 然後再次拖曳填充柄。
問題:範圍中空單元格導致錯誤或出現零
原因: 當公式引用您資料中的空單元格時,SUM將它們視為零(通常沒問題),但像=A1-B1這樣直接的公式,如果B1為空則返回A1的值不變,這在上下文中可能看起來有錯誤。
修正: 使用IFERROR以優雅地處理空單元格:
=IFERROR(A1-B1, 0)=IFERROR(A1-B1, 0)The provided code snippet appears to be an Excel formula rather than C# code. If you have a C# code snippet that you would like to convert to VB.NET, please provide it, and I'll be happy to assist you with the conversion.The provided code snippet appears to be an Excel formula rather than C# code. If you have a C# code snippet that you would like to convert to VB.NET, please provide it, and I'll be happy to assist you with the conversion.或者在減之前明確檢查:
=IF(B1="", A1, A1-B1)=IF(B1="", A1, A1-B1)=IF(B1="", A1, A1-B1)=IF(B1="", A1, A1-B1)Problem: Subtracting percentages gives unexpected results
Cause: Excel stores percentages as decimals. Subtracting A1 - 20% subtracts 0.2 from A1's value, not 20.
Fix: Use =A1*(1-B1) to subtract a percentage of the original value. Use =A1-20 to subtract the literal number 20 regardless of how values are formatted in other cells.
Edge Cases the Other Articles Miss
Subtracting across worksheets: You can subtract values from different sheets in one formula. The syntax is =Sheet1!A1-Sheet2!A1. While building your formula, simply click the cell on the other sheet and Excel writes the full reference automatically.
Subtracting with IFERROR for bulletproof formulas: Whenever there is any chance a cell might be empty or return an error, wrap your formula to prevent the error from propagating to other cells that depend on this result:
=IFERROR(A1-B1, 0)=IFERROR(A1-B1, 0)The provided code snippet appears to be an Excel formula rather than C# code. If you have a C# code snippet that you would like to convert to VB.NET, please provide it, and I'll be happy to assist you with the conversion.The provided code snippet appears to be an Excel formula rather than C# code. If you have a C# code snippet that you would like to convert to VB.NET, please provide it, and I'll be happy to assist you with the conversion.跨午夜減去時間值: 對於跨午夜的班次追踪(11:00 PM開始,6:00 AM結束),請使用=MOD(B1-A1, 1)以始終返回正的經過時間。
在篩選後的資料中減去(僅可見行): 標準減法公式在結果中包含隱藏的行。 要處理篩選後僅顯示的單元格,請先使用SUBTOTAL聚合可見資料,或在進行計算前將篩選範圍複製到新位置。
批量減去多列不使用陣列公式: 與其編寫=A1-B1-C1-D1-E1-F1,不如使用=A1-SUM(B1:F1)。 這樣更容易擴展,易於閱讀,並在新增或移除列時不容易出錯。
For Developers: Subtract in Excel with IronXL (C#)
如果您在構建一個.NET應用程式,該應用能讀取、修改或生成Excel文件、報告管道、財務工具、文件自動化系統,直接在C#中執行計算讓您擁有比依賴使用者開啟Microsoft Excel手動運行情形更大的控制權。
IronXL 是一個.NET庫,讓您不必在伺服器上安裝Excel即可讀寫Excel文件。 以下範例從兩列中減去值並將結果寫入第三列,這是上面描述的雙欄減法方法的程式等效物:
using IronXL;
// Load an existing workbook (or create one fresh with WorkBook.Create())
WorkBook workbook = WorkBook.Load("financials.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Loop through rows: subtract Column B from Column A, write each result to Column C
for (int row = 1; row <= 10; row++)
{
double valueA = sheet[$"A{row}"].DoubleValue;
double valueB = sheet[$"B{row}"].DoubleValue;
sheet[$"C{row}"].Value = valueA - valueB;
}
workbook.SaveAs("financials_updated.xlsx");using IronXL;
// Load an existing workbook (or create one fresh with WorkBook.Create())
WorkBook workbook = WorkBook.Load("financials.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Loop through rows: subtract Column B from Column A, write each result to Column C
for (int row = 1; row <= 10; row++)
{
double valueA = sheet[$"A{row}"].DoubleValue;
double valueB = sheet[$"B{row}"].DoubleValue;
sheet[$"C{row}"].Value = valueA - valueB;
}
workbook.SaveAs("financials_updated.xlsx");Imports IronXL
' Load an existing workbook (or create one fresh with WorkBook.Create())
Dim workbook As WorkBook = WorkBook.Load("financials.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Loop through rows: subtract Column B from Column A, write each result to Column C
For row As Integer = 1 To 10
Dim valueA As Double = sheet($"A{row}").DoubleValue
Dim valueB As Double = sheet($"B{row}").DoubleValue
sheet($"C{row}").Value = valueA - valueB
Next
workbook.SaveAs("financials_updated.xlsx")Imports IronXL
' Load an existing workbook (or create one fresh with WorkBook.Create())
Dim workbook As WorkBook = WorkBook.Load("financials.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Loop through rows: subtract Column B from Column A, write each result to Column C
For row As Integer = 1 To 10
Dim valueA As Double = sheet($"A{row}").DoubleValue
Dim valueB As Double = sheet($"B{row}").DoubleValue
sheet($"C{row}").Value = valueA - valueB
Next
workbook.SaveAs("financials_updated.xlsx")無需安裝Excel,無COM互通問題,且可在Windows、Linux和macOS上運行。 IronXL支援完整的公式評估、單元格格式化、範圍操作以及跨任意大小行列的資料讀取,非常適合手動打開電子錶格不切實際的自動化批量工作流程。
快速參考:使用哪種方法
| 情況 | 最佳方法 |
|---|---|
| 一次性減去兩個數字或兩個單元格 | 簡單公式:=A1-B1 |
| 跨整個列減去 | 公式 + 填充柄拖曳 |
| 從一個總數中減去多個單元格 | =A1-SUM(B1:B5) |
| 將多列減至一個結果 | =A1-SUM(B1:F1) |
| 從多個單元格中減去相同數字 | 特殊貼上 → 減去 |
| 從所有行中減去固定引用單元格 | 絕對引用:=A1-$B$1 |
| 將一個矩陣從另一矩陣中減去 | 陣列公式:=A1:C3-E1:G3 |
| 減去日期 - 得出天數差 | =B1-A1 + 常規單元格格式 |
| 減去時間值,正確顯示小時 | =B1-A1 + [h]:mm單元格格式 |
| 減去一個值的百分比 | =A1*(1-B1) | | 優雅地處理空單元格或錯誤 | =IFERROR(A1-B1, 0) | | 每週重複相同的減法操作 | 錄製一個VBA巨集 | | 自動化或伺服器端Excel減法 | IronXL(.NET) |
最終想法
Excel減法是那些乍看之下非常簡單的技能之一,而對於基本情況,它確實如此。 但處理真實世界資料意味著可能遇到日期、時間值、百分比、空單元格、文字字串、篩選行、以及多列或矩陣範圍。 知道在每種情境下應使用的工具,這才是將能在Excel中執行基本計算的人和能自信處理複雜任務的人區分開來的。
對於大多數工作,=A1-B1和填充柄將使您走得很遠。 基於SUM的方法能夠清晰地處理多個單元格。 絕對引用能夠鎖定固定值。 陣列公式和矩陣減法公式可以處理需要一次性跨整個範圍減去的情況。 故障排除部分涵蓋了處理時最有可能讓您措手不及的進口或不一致資料情況。
這些是核心Excel技能,現在您擁有了所有這些技能在一個地方。
Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。
