Excel 中的費波那契數列是一個數字清單,其中每個數值等於前兩個數值之和,從 F(0) = 0 與 F(1) = 1 開始,因此開頭為 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 並依此延續。對大多數讀者而言,最簡潔的方式是在瀏覽器中使用 費波那契數列產生器 來產生完整清單,複製輸出結果,再貼到工作表的某一欄。這個做法可以避開 Excel 的 64 位元浮點數精確度上限,因為一旦數值超過約 F(79) 的 Number.MAX_SAFE_INTEGER,數列就會悄悄出錯。僅靠活頁簿的做法(例如遞迴儲存格公式或簡短的 VBA 迴圈)會繼承相同的精確度限制,因為 Excel 會以雙精度浮點數進行運算。瀏覽器產生器將每一項儲存為 BigInt,並將每一行寫成 F(索引) = 精確十進位文字,因此 F(100)、F(500) 或 F(999) 會原封不動地落入你的儲存格中,不會出現四捨五入、科學記號或隱性誤差。產生、驗證、格式化與複製都在本機完成,不會上傳任何資料,也不需要帳號或留下紀錄。

how to create fibonacci sequence in excel
如何在 Excel 中建立費波那契數列

在 Excel 中建立費波那契數列的三種方法

實際上有三種可行途徑,各有不同的精確度特性與操作成本。下表整理了各自的取捨,協助你依據活頁簿現況以及你實際需要的數列長度來選擇。

方法運作方式精確度上限適用情境
瀏覽器產生器 + 貼上執行費波那契數列產生器,複製輸出結果,貼入某一欄。透過 BigInt 提供高達 F(999) 的精確十進位文字。長數列、課堂範例、測試資料,以及任何超過 F(78) 的內容。
遞迴儲存格公式在 A1 填入 0、A2 填入 1,然後向下拖曳 =A[n-2]+A[n-1]。僅在數值仍落在 Number.MAX_SAFE_INTEGER(約 F(78))以內時完全精確。短數列、教學示範,以及學習遞迴關係的學生。
VBA 程序執行小型巨集,透過迴圈逐一把數值寫入儲存格。與儲存格公式相同的 64 位元浮點數上限。在不離開 Excel 的情況下,於同一份活頁簿中重複產生數列。

表格中的第一列是唯一在前 78 項之後仍維持完全精確的做法。如果你的數列很短,使用公式方式即可,而且能將所有內容都保留在活頁簿內部。如果需要顯示 F(100) 或更大的數值,請在瀏覽器中產生清單並以值的方式貼上,這也是下一節要介紹的流程。

使用費波那契數列產生器來產生數列

以下步驟會產生一份精確且帶有索引的清單,可以直接放入 Excel。這個工具會以「F(索引) = 十進位數值」的格式逐行回傳,不含分隔符,也沒有科學記號。

  1. 在瀏覽器中開啟費波那契數列產生器。
  2. 在輸入欄位中輸入 1 到 1,000 之間的整數數量。這個數量代表你想要幾個項目,而不是目標數值。輸入 10 會回傳 F(0) 到 F(9);輸入 1 僅會回傳 F(0)。
  3. 點選「Generate」(產生)。輸出會立即出現,摘要列會確認產生多少項目以及最後一個索引。
  4. 查看摘要,確認最後一個索引等於數量減一,並抽樣檢視幾個具代表性的索引值(例如前十行以及數列中段的幾行)。
  5. 點選「Copy」(複製)將精確的、以換行分隔的文字放到剪貼簿;若瀏覽器封鎖剪貼簿存取,也可以手動選取可見文字。
  6. 切換到 Excel,點選你希望數列開始的左上角儲存格(通常是 A1),然後使用 Ctrl+V 貼上。

每一行都帶有自己的索引,因此開頭重複的數值(0, 1, 1, 2, 3, 5)不會造成列之間的混淆。修改數量會清空先前的輸出,這樣舊的數列就不會在尚未處理的新輸入下靜悄悄地留在畫面上。輸入欄位只接受純粹的十進位整數文字。

將數列貼入 Excel

從產生器複製後,由於「F(n) =」前綴的關係,Excel 預設會將每一行「F(索引) = 數值」視為單一文字字串。如果你希望這些值能像數字一樣運作(以便加總、繪製圖表或在公式中使用),請拆解欄位或調整貼上的方式。

  1. 選取數列應開始的儲存格,通常是 A1。
  2. 使用 Ctrl+V 貼上剪貼簿內容。由於前綴的緣故,每一行會以文字形式落在個別的儲存格中。
  3. 如果你想要純粹的數值,可以僅從產生器輸出中複製每一行等號右側的部分再貼上,或在貼上的區塊上使用 Excel 的「資料剖析」精靈來去除前綴。
  4. 若你想保留索引欄,改將產生器輸出貼到 A 欄,然後在 B 欄放置一個公式來擷取數字部分,例如 =VALUE(MID(A1, FIND("=", A1)+1, 100))。

如果工作表配置從第 2 列或第 3 列才開始列出費波那契數,以便為標題列留出空間,請貼入起始儲存格,讓數值獨立呈現;貼上的範圍本身已經是完整的。

你在 Excel 內會遇到的精確度限制

Excel 將每個數值儲存格以 64 位元 IEEE 754 雙精度浮點數儲存。這個格式只能精確表示到 2^53 − 1 之前的整數,亦即 9007199254740991(Number.MAX_SAFE_INTEGER)。這個安全界線落在 F(78) 與 F(79) 之間,因此 Excel 中以手動或公式產生的數列在前 78 項內完全精確,之後就會開始四捨五入。任何將你的儲存格與權威來源進行比對的人,一旦數值跨越該界線,就會察覺前期項目出現偏差。

費波那契數列產生器透過將每一項儲存為 JavaScript BigInt,並直接轉為十進位字串(完全不經過浮點數)來迴避這個限制。這就是為什麼 F(100) 會顯示為 354224848179261915075 而非近似值,而 F(999) 則會以一個擁有數百位數的精確整數形式呈現。涉及黃金比例的封閉形式表達式從不被採用,因為浮點數的次方與平方根運算會對較大的費波那契數值造成四捨五入。遞迴關係對每個要求的項目只執行一次 BigInt 加法,因此保留了所有十進位數字。

對於希望明確看到安全整數界線的讀者:標準的 64 位元雙精度浮點數只能精確表示到 9007199254740991 為止的整數,而費波那契數列大約在 F(79) 附近跨越這個界線。這正是 Excel 儲存格內的運算開始喪失精確度的位置,也是採用「從瀏覽器貼上」流程值得多花一步的時機。

已驗證的開頭數值及其來源

產生器所使用的遞迴關係為NIST 數學函數數位函式庫(§24.15(iv))以及OEIS 數列 A000045所記錄的標準零起始定義。這些參考資料中的開頭數值與產生器回傳的數值一致,也是你在貼上較長清單之前,若想在 Excel 中手動確認規律時最容易重現的數值。

使用 F(n) = F(n−1) + F(n−2),並以 F(0) = 0、F(1) = 1 作為種子的開頭項遞迴運算:

  • F(0) = 0(種子)
  • F(1) = 1(種子)
  • F(2) = F(1) + F(0) = 1 + 0 = 1
  • F(3) = F(2) + F(1) = 1 + 1 = 2
  • F(4) = F(3) + F(2) = 2 + 1 = 3
  • F(5) = F(4) + F(3) = 3 + 2 = 5

同一個遞迴關係會無限重複,因此只要種子正確,之後每個項目都會被決定。有些教科書以 1, 1 作為數列起點,而非 0, 1;這個慣例差異正是產生器在每個數值旁印出索引的原因,讓讀者永遠不需要猜測清單中的第二個 1 究竟是 F(1) 還是 F(2)。

在 Excel 中列出費波那契項目的常見陷阱

少數幾個小錯誤就會造成大多數失敗的嘗試。事先留意它們,可以省下一輪「為什麼我的數列看起來不對」的除錯時間。

  • 把輸入欄位當作目標索引而非項目數量。產生器的輸入是數量,因此輸入 10 會得到 F(0) 到 F(9),而不是 F(10)。
  • 以 1, 1 作為可見清單的起點,卻又逐列與 0, 1 的來源比對。請選定一種慣例;產生器使用 0, 1。
  • 在數量欄位中輸入小數、逗號、科學記號、正負號或負值。產生器會拒絕這些輸入而非悄悄四捨五入,因此出現空白或被拒絕的輸出就是重新輸入 1 到 1000 之間純整數的訊號。
  • 要求超過 1000 項。1000 項上限是產品效能上的界線,並非費波那契數的數學限制;若需要大量產生,請改用具備合適儲存容量的專屬程式設計環境。
  • 在 Excel 中信賴浮點數運算處理較大的項。遞迴儲存格公式或 VBA 迴圈在前 78 列沒問題,但之後的內容都屬於四捨五入的產物,除非改用基於 BigInt 的產生器輸出。

如果你的活頁簿在數列之外還需要其他產生器類型的資料,有幾份聚焦於 Excel 的指南採用相同的「貼上即用」流程。無需公式在 Excel 中產生隨機字母 介紹了字母版本的類似流程,而 從瀏覽器工具在 Excel 中產生隨機日期 則涵蓋日期清單的對應做法。