Excel 中的「是 / 否」下拉式選單是一個單一儲存格的控制項,其「來源」欄位僅保留兩個字面文字「是」與「否」,因此資料驗證只接受這兩個答案——而當該控制項背後的每個儲存格都需要是全新的隨機挑選,而非靜態選項時,「是 / 否」產生器會在你的瀏覽器中使用 Crypto.getRandomValues 產生該值,絕不上傳問題或答案,並儲存最多 20 筆最新結果於「最新優先」的歷史紀錄中供檢視。靜態端完全在 Excel 內透過「資料 > 資料驗證 > 允許:清單,來源:是,否」建立;隨機端則在試算表外處理——在工具中輸入最多 1,000 個 UTF-16 程式碼單位的選擇性問題,按下「產生是 / 否」,再將顯示的答案複製到目標儲存格。因為 2 可以整除 2^32,每個有效的 32 位元來源整數都會被接受而不會被拒絕,偶數值對應「是」,奇數值對應「否」,因此這個二元結果的每一邊都會剛好獲得 2^31 個來源整數。這是在 Excel 的靜態下拉式清單與瀏覽器端的隨機來源之間最簡潔的橋樑,而這個隨機來源是試算表本身無法隨需產生的。

creating yes or no drop down in excel
使用 Web Crypto 在 Excel 中建立「是 / 否」下拉式選單

Excel 中的「是 / 否」下拉式選單實際上包含什麼

在 Excel 中,「是 / 否」下拉式選單是一個繫結至一或多個儲存格的資料驗證規則。下拉式選單的內容存放在驗證對話方塊的「來源」欄位中,而非儲存格的值內。你開啟「資料 > 資料驗證」,選擇「允許:清單」,然後提供兩個以逗號分隔的字串(是,否),或是一個解析為這兩個字串的命名範圍。一旦儲存,所選儲存格會顯示一個小箭頭,輸入清單外的任何文字都會引發驗證錯誤。這是一個純粹位於試算表內的使用者端限制;它不會隨機化、加權或打亂任何東西。

Excel 也提供三種以公式產生儲存格內「是 / 否」的方法:以 CHOOSE 包裝的 RANDBETWEEN 呼叫、基於 RAND() 的巢狀 IF,或自訂函式。這些公式會在每次活頁簿變更時重新計算,並在無法預期的時間點產生不同答案,而這通常不是受控下拉式工作流程所需要的。靜態下拉式選單加上外部隨機來源通常是更可預測的模式:儲存格保留你最後複製進去的內容,下拉式選單強制執行乾淨的視覺選擇,隨機性則來自一個不依賴試算表重新計算事件的工具。

為什麼要將 Excel 下拉式選單與隨機來源搭配

Excel 內建的下拉式選單是確定性的。使用者從「是」或「否」中選擇;沒有任何東西會代替他們挑選。如果你想要每個儲存格都是隨機結果——例如稽核抽樣、快速展示、擲硬幣記錄或教學範例——你需要一個獨立的產生器。以瀏覽器為基礎的「是 / 否」產生器是一個很合適的選擇,因為它與你的線上活頁簿參考資料在同一個分頁中執行,絕不上傳問題或結果,並且每次點擊提供一個答案,讓你可以一步複製。每次點擊會從 Crypto.getRandomValues 消耗一個全新的 32 位元整數;下一次點擊與上一次無關,而且該工具明確不會在 Web Crypto 缺失時回退至 Math.random——它會以可見的方式失敗。

相較之下,在任何儲存格編輯時都會重新求值的試算表公式:答案不穩定、無法可靠地重新檢查其值,且其底層隨機性來自 Math.random 實作,其來源未記載且因平台而異。對於休閒工作流程而言,瀏覽器產生器會將答案鎖定,直到你再次點擊為止,以淺白語言顯示來源方法,並在不離開裝置的前提下,保留一份透明的產生記錄。

使用隨機值在 Excel 中建立「是 / 否」下拉式選單

  1. 在 Excel 中,選取應顯示下拉式選單的儲存格,然後在「資料」索引標籤上按一下「資料驗證」。在「允許」清單中選擇「清單」,並在「來源」方塊中輸入「是,否」(或使用解析為這兩個字串的命名範圍)。
  2. 按一下「確定」以確認。每個選取的儲存格現在會顯示一個小箭頭,並拒絕任何不在來源清單中的文字。
  3. 在瀏覽器的新分頁中開啟「是 / 否」產生器,置於你的試算表旁。
  4. 選擇性地在問題欄位中輸入最多 1,000 個 UTF-16 程式碼單位的不重要問題。空文字有效,因為問題為選擇性;修剪動作僅決定歷史紀錄是否將該項目標記為「無問題」。
  5. 按一下「產生是 / 否」並讀取醒目顯示的目前答案。每次點擊會從 Web Crypto 消耗一個 Uint32,並將偶數值對應至「是」,奇數值對應至「否」。
  6. 將顯示的「是」或「否」複製到對應的 Excel 儲存格。該儲存格現在持有一個下拉式選單會接受且永遠不會重新計算的值。
  7. 為其他儲存格重複此動作。「最新優先」的歷史紀錄面板會顯示最多 20 筆最新項目及其選擇性問題,因此稽核軌跡在工作時保持可見。
  8. 當工作階段結束時,按一下「清除歷史紀錄」即可一步重設項目、已捨棄計數與目前答案。

如果你偏好先處理 Excel 端,Excel 靜態下拉式選單逐步指南會在使用隨機來源之前,逐步說明驗證清單與命名範圍選項。

50/50 對應如何保持平衡

產生器會在一個元素的 Uint32Array 上呼叫 Crypto.getRandomValues,向 Web Crypto 請求單一 32 位元不帶正負號整數。該陣列持有從 0 到 4,294,967,295 中的一個整數,也就是完整的 2^32 來源範圍。對應函式將二元的「是」或「否」情況視為二個結果的問題,並計算可容納在 2^32 內的最大倍數:floor(2^32 / 2) × 2 = 2^32。因為該倍數等於來源範圍,所以每個有效的 Uint32 都會被接受,無需拒絕抽樣,而模數對應(接受值 mod 2)對偶數值產生 0、對奇數值產生 1。產生器接著將 0 呈現為「是」,將 1 呈現為「否」。在實際上沒有任何拒絕路徑執行的情況下,每個結果仍剛好獲得 4,294,967,296 個可能來源整數中的 2,147,483,648 個,因此 50/50 的分配在結構上即獲保證。

能力Excel 內建下拉式選單「是 / 否」產生器
設定值的位置儲存格輸入或貼上的文字「產生是 / 否」按鈕
隨機性的來源無;由使用者選擇每次點擊來自 Web Crypto 的一個 Uint32
重新計算行為保持靜態直到編輯保持穩定直到下次點擊
選擇性問題標籤最多 1,000 個 UTF-16 程式碼單位
本機歷史紀錄儲存格中無「最新優先」,上限 20 筆項目
失敗模式不適用若 Web Crypto 缺失則回報失敗
網路上傳僅在活頁簿同步時絕不會;未聯絡任何伺服器

保護一般有限對應的拒絕抽樣路徑仍然實作並在三元結果的邊界進行測試,但在二元情況下它處於休眠狀態:2 整除 2^32 沒有餘數,因此永遠不需要捨棄任何值。MDN 對 Crypto.getRandomValues 的參考資料記載了產生底層 Uint32 的具類型陣列填入行為,而該整數之上的對應屬於本機 JavaScript,非 Web Crypto 規格的一部分。對應器中還內建一個有界 128 次抽樣迴圈,以防損壞或被注入的來源導致頁面卡住;在正常的瀏覽器使用中,迴圈會在第一次抽樣時即完成。

「是 / 否」下拉式選單應保持靜態的情況

隨機的「是 / 否」並非建議。對於涉及醫療、法律、財務、安全、保全、就業、資格、合規、同意或緊急選擇的下拉式選單,絕不應以隨便的隨機提示填入,產生器本身也以淺白語言說明此限制。50/50 的分配在數學上是乾淨的,但對於高風險問題的正確答案仍然可能是「是」,即使經過深思熟慮的評估會說「否」,反之亦然。Web Crypto 的品質並不能取代專業判斷、有效的選擇清單或對後果的理解;平衡的二元結果並不能說明所問的問題是否恰當。

對於稽核抽樣、課堂練習、A/B 測試分組、擲硬幣記錄及其他低風險工作,靜態 Excel 下拉式選單加上瀏覽器隨機來源是一個穩固的模式:儲存格保持穩定,下拉式選單維持輸入乾淨,而產生器的「最新優先」歷史紀錄則作為內建的稽核軌跡,當工作完成時可一鍵清除。編輯問題會清除目前顯示的答案與任何先前的錯誤,使結果不會因較新的措辭而被誤標;同時歷史紀錄會保留以供比較。本機項目識別碼以單調遞增方式運作,可讓 React 風格的執行階段金鑰保持唯一,但本身並不充當持久識別碼或隨機資料。

如果你正在權衡選項,如何在 Excel 中製作多條折線圖對此有詳細說明。