我有 10 個帶有資料的單元格在一行中,我必須通過使用 excel 中的“文本到列”功能并將輸出放在單獨的列/區域中來將它們一一分隔。是否可以分隔多個單元格并按順序放置輸出?以下是我的目標示例:

我的目標是將 Col_A 到 Col_D 單元格值分隔,并將輸出放在 Part1 和 Part 2 列的右側,如下所示:

我現在使用的方法是使用“文本到列”功能手動將每個 Col_A 到 Col_D 1 by 1 分隔到它們各自的輸出列中。
有沒有辦法讓我按順序一次性將 Col_A 值分隔為 Col_D 值?
PS:我不太擅長 VBA,所以如果解決方案需要 VBA/宏,請給我留下一些檔案。謝謝你。
uj5u.com熱心網友回復:
=TRANSPOSE(FILTERXML("<x><y>"&SUBSTITUTE(TEXTJOIN(";",,1:1),";","</y><y>")&"</y></x>","//y")) 是沒有 VBA 的最佳選擇(如 JvdV 已經發布)
對于非 Windows,您可以在第一列的單元格中使用它:
=IFERROR(IF(ISEVEN(COLUMN()),RIGHT(INDEX(1:1,,ROUNDUP(COLUMN()/2,0)),LEN(INDEX(1:1,,ROUNDUP(COLUMN()/2,0)))-FIND(";",INDEX(1:1,,ROUNDUP(COLUMN()/2,0)))),LEFT(INDEX(1:1,,ROUNDUP(COLUMN()/2,0)),FIND(";",INDEX(1:1,,ROUNDUP(COLUMN()/2,0)))-1)),"")
uj5u.com熱心網友回復:
使用 ms365,嘗試:

公式E1:
=TRANSPOSE(FILTERXML("<t><s>"&SUBSTITUTE(TEXTJOIN(";",,A1:D1),";","</s><s>")&"</s></t>","//s"))
對于以前版本的 Excel,會有多個路由;一個可能是:
=FILTERXML("<t><s>"&SUBSTITUTE($A1&";"&$B1&";"&$C1&";"&$D1,";","</s><s>")&"</s></t>","//s["&COLUMN(A1)&"]")
向右拖動。或者,更動態一點:
=INDEX(CHOOSE({1;2},MID($A1:$D1,FIND(";",$A1:$D1) 1,LEN($A1:$D1)),LEFT($A1:$D1,FIND(";",$A1:$D1)-1)),MOD(COLUMN(),2) 1,CEILING(COLUMN(A1)/2,1))
確認CtrlShiftEnter并向右拖動。
uj5u.com熱心網友回復:
只是為了記錄,另一個適用于所有 Excel 版本:
=TRIM(MID(SUBSTITUTE(INDEX($A1:$D1,INT((1 COLUMNS($A1:A1))/2)),";",REPT(" ",99)),99*ISEVEN(COLUMNS($A1:A1)) 1,99))
并復制正確。
或者,對于 O365,如果將結果回傳到矩形范圍是可以接受的:
=LEFT(MID(A1:D1,FIND(";",A1:D1)^{0;1} {0;1},99),FIND(";",A1:D1)^{1;9}-1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/335709.html
標籤:擅长 excel-公式 excel-2016
