在 Excel 2016 及更新版本中,公式 =TEXTJOIN(",", TRUE, A1:A10) 會將 A1 到 A10 儲存格中的值轉換成單一以逗號分隔的字串,例如 apple,banana,cherry,,並顯示在任何應該出現結果的目的儲存格中。第一個參數是分隔符,這裡是單一逗號;第二個參數是一個布林值,用來控制是否略過空白儲存格;第三個參數是要合併的範圍。將第二個參數設為 TRUE,這樣空白行就不會產生多餘的逗號;當你不知道該欄實際包含多少已填入資料的行時,請將範圍切換為較大的範圍,例如 A1:A1000。TEXTJOIN 以相同方式處理文字、數字和日期儲存格,並回傳一個文字值,你可以將它貼到另一欄、搜尋框、電子郵件表單或 SQL 編輯器中。對於沒有 TEXTJOIN 的舊版 Excel,常見的替代方法是在目的儲存格中輸入 =A1&", "&A2&", "&A3,但這種做法沒有原生略過空白的功能,而且在超過幾行之後很快就會變得難以處理。

convert column to comma separated list excel formula
Excel 公式:將欄位轉換為逗號分隔清單

Excel 公式:=TEXTJOIN(",", TRUE, A1:A10)

TEXTJOIN 於 Excel 2016 加入,並可在 Excel 2019、Excel 2021、Excel 2024 和 Microsoft 365 中使用。完整的函數簽章為 =TEXTJOIN(delimiter, ignore_empty, text1, [text2], …),因此你可以傳入單一範圍、多個個別儲存格,或兩者的混合。對於 A2:A200 中的姓名欄,公式會變成 =TEXTJOIN(",", TRUE, A2:A200)。第二個位置的 TRUE 是告訴 Excel 略過空白儲存格,而不會在原本的位置留下空槽,這也是手動建立的串接結果看起來像 apple,,banana, 多出逗號的最常見原因。

要將公式套用在一個小型範例上,假想 A1 到 A6 儲存格分別存放 Apple、空白、Banana、Cherry、空白、Date。在 B1 儲存格中輸入 =TEXTJOIN(",", TRUE, A1:A6) 並按下 Enter,就會產生字串 Apple,Banana,Cherry,Date:四個可見的值以三個逗號連接,兩個空白行則會被靜默過濾掉。如果你接著輸入 =LEN(B1) 來計算字元數,Excel 會回傳 24,這正好對應四個名稱加上三個分隔字元。這個小檢查是在你將結果複製到其他地方之前,確認空白行沒有被算入的一種可靠方式。

幾種變化形式可以涵蓋常見需求。若要以逗號加空格分隔,請將第一個參數改為 ", "。在小數分隔符為逗號的地區,若要改用分號而非逗號,請將其改為 ";"。若要將兩個欄的文字並排合併,請同時傳入兩個範圍:=TEXTJOIN(",", TRUE, A2:A50, B2:B50)。結果會是一個單一字串,其中 A 欄的每個儲存格後面會接著 B 欄對應的儲存格,並以逗號分隔,這在建構 SQL 風格的配對值時非常實用。當你需要的是純字串而非即時運作的公式時,請用 Ctrl+C 複製結果,然後以「選擇性貼上」的方式貼上值。

當 TEXTJOIN 在實際值上出錯時

TEXTJOIN 非常擅長以分隔符合併值,但它對值本身不做任何跳脫處理。如果某個儲存格包含字面的逗號,該逗號就會直接被輸出到結果字串中,因此一個包含 Smith, Jane 和 Doe, John 兩個姓名的欄位,用 TEXTJOIN 合併後只會在你自行加上引號的情況下產生 "Smith, Jane","Doe, John"。否則輸出結果看起來會像四個值而非兩個,這會破壞任何下游嘗試將清單重新剖析回欄位的處理。雙引號也會出現同樣的問題:包含文字 6" bolt 的儲存格會被原樣合併,這會破壞 CSV、JSON 以及許多將未跳脫引號視為字串開頭的 shell 環境。

TEXTJOIN 沒有內建選項可以將每個值包在雙引號中,也無法將內嵌的雙引號加倍,因為這些行為是 CSV 的特性,而不是儲存格合併的特性。Excel 確實提供了較舊的 CONCATENATE 函數和 & 運算子,但兩者也無法解決引號問題。當該欄包含帶有逗號、雙引號、分號或換行符的值時,你必須新增一個輔助欄,在合併前先將每個值包好並跳脫,或者使用能為你執行 CSV 引號處理功能的工具。

這就是專用的逗號清單產生工具所填補的實務空缺。一個專門為「欄位轉逗號」任務所建構的工具,能預設套用 CSV 風格的引號,將每個內嵌的雙引號加倍,並輸出一個任何懂得 CSV 格式的應用程式都能重新剖析回原始值,而不會遺失邊界的字串。

在瀏覽器中建立安全的引號清單

欄位轉逗號分隔清單工具可在單一瀏覽器分頁中執行相同的轉換,並套用 TEXTJOIN 無法做到的 CSV 引號處理。它接受每行一個值,可選擇進行修剪和去除重複,並輸出一個唯讀的輸出框,內含精確的值計數和複製按鈕。當你的 Excel 欄位包含帶逗號的姓名、帶引號的描述、帶混合標點的產品代碼,或任何其他合併後的字串需要往返經過其他剖析器的情況時,請使用它。

  1. 用 Ctrl+C 從 Excel 複製該欄,留下標題,然後將這些值每行一個貼到輸入框中。
  2. 保持啟用「修剪前後空格」,這樣複製儲存格時意外產生的前後空格就不會改變值。
  3. 保持啟用「移除空白行」,這樣來源欄中的空白行就不會出現在輸出中。
  4. 只有當重複的行在目的地真的沒有意義時,才啟用「移除重複的值」;比較會區分大小寫,因此 Apple 和 apple 會被視為不同。
  5. 保持啟用「為每個值加上 CSV 引號」;此工具會將每個值包在雙引號中,並將每個內嵌的雙引號加倍,這能保護像 Smith, Jane 和 6" bolt 這類的值。
  6. 點點「轉換欄位」,將顯示的值計數與你預期的行數進行比對,並檢查任何標點密集的項目。
  7. 點點「複製結果」,然後將加上引號的字串貼到應該放置它的試算表、SQL 編輯器、電子郵件欄位或設定檔中。

此工具接受 Windows CRLF、較舊的歸位字元以及 Unix 換行字元的換行符號,因此從 Excel、Notepad、VS Code 或一般電子郵件複製的清單,都能以相同方式進行剖析,不需手動清理。轉換會在當前頁面中執行,所貼上的值不會被上傳,重新載入分頁即可同時清除輸入和輸出。

Excel 公式與瀏覽器工具一覽

功能 Excel TEXTJOIN 欄位轉逗號分隔清單
輸出分隔符 任何你傳入的單一字元或短字串 預設為逗號加空格;加上引號的格式僅使用逗號
空白儲存格處理 可選,由第二個參數設定 可選,由「移除空白行」切換控制
為每個值修剪前後空格 否 是,由切換控制
將每個值包在雙引號中 否 是,預設啟用
將內嵌的雙引號加倍 否 是,預設啟用
移除重複的值 無內建選項 是,區分大小寫,於修剪後執行
用於驗證的結果計數器 需要額外的 LEN 或 COUNTA 公式 顯示於輸出旁
貼上大小上限 受限於 Excel 儲存格大小,32,767 字元 500,000 個輸入字元,10,000 行
執行運算的位置 在試算表內部 在瀏覽器分頁內部;不會上傳任何資料

一個實用的經驗法則是:當該欄只包含將由人閱讀的簡單識別碼時,使用 TEXTJOIN;當輸出會送入另一個剖析器,例如 CSV 匯入、API 呼叫或 SQL IN 清單時,則改用瀏覽器工具。這兩種方法是互補而非競爭:該工具接受任何貼上的清單,且不依賴 Excel 是否執行,因此它對於從 Google 試算表匯出的值或從純文字檔複製而來的值,都能正常運作。

你應該預先規畫的實際限制

Excel TEXTJOIN 受到目的儲存格大小的限制,在現代 Excel 中上限為 32,767 字元。一個由長名稱以逗號和空格合併而成的欄位,可能會意外地快速超過此上限,此時 Excel 會回傳 #VALUE! 錯誤,而不是截斷。當工作清單規模適中時,TEXTJOIN 是合適的工具;但當目的地是懂得 CSV 格式的應用程式時,更安全的做法是將該欄從 Excel 複製出來,透過沒有 32,767 字元限制、並在處理過程中套用正確引號的瀏覽器工具來執行。

3 步驟將 Excel 欄位轉換為逗號分隔清單指南更詳細地說明複製、貼上和轉換的流程,如果你想要一個從試算表本身開始的更精簡工作流程,可以參考。對於 SQL IN 子句、JSON 陣列、URL 查詢參數和命令列引數,無論是 TEXTJOIN 還是加上 CSV 引號的清單,單獨使用都不夠,因為這些目的地各自有不同的跳脫和引號規則,所以應改用為該目的地專門設計的格式化工具。

如果去除重複很重要,請記住瀏覽器工具的比對只有在修剪之後才會進行精確且區分大小寫的比較,這是刻意的設計,因為靜默地將大小寫標準化可能會改變仰賴大寫字母來表示意義的產品名稱、錯誤代碼和識別碼字串。在輸出區中有兩項安全機制能夠捕捉大多數錯誤:值的計數,應符合你在篩選後預期的行數;以及加上引號的文字本身,這能讓任何保留的標點(例如逗號或內嵌的雙引號)在貼到任何重要位置之前都顯而易見。

延伸閱讀:在單一本地端處理中比較兩個清單的相符項目。