看板 Office 關於我們 聯絡資訊
以下作法可能不夠精簡,望能拋磚引玉 ^^ 僅解釋原理,實際公式見檔案 http://2y.drivehq.com/p/SplitRow.xls 現在假設有一字串 aaaa@bbbb@cccc 在一個儲存格中,@是想要分隔的地方, 該如何取出第1.(aaaa) 2.(bbbb) 3.(cccc) 組字串呢? 最好能夠輸入1就得第1組,輸入2就得第2組,才夠方便~ Excel函數中,FIND是用來找特定字元的,可以從某個位置 例如第10個字之後開始找; 但是我們想找的是第1個.第2個特定字元 @ 而能夠找出第幾個字元的函數是SUBSTITUTE, 它可取代指定的第幾個特定字元 假設把第一個@取代成X aaaaXbbbb@cccc 這時候利用FIND可找到X的位置 再利用MID即可取出字串 運用MID時,需要知道起點與想取出的字串長度 第1組的起點自然是1,長度是第1個X的位置減1 但第2組的起點與長度就比較麻煩, 當然可以寫不同的式子處理,但最後一組時又不一樣 (最後一組第3組的終點並非第3個X,因為沒有第3個X) 所以,我們先把原字串的頭尾都加上@ @aaaa@bbbb@cccc@ 然後不管要第幾個@,用SUBSTITUTE改@為X 丟數值給MID時,式子就統一了! 而這個問題中,@為CHAR(10)即換行符號 (所以不方便用資料剖析與WORD ?) X當成定義名稱,可以把它定為某個資料中不會出現的字元 如"|" 如此一來,要給MID的開始位置即 start_num =FIND(X,SUBSTITUTE(CHAR(10)&Y&CHAR(10),CHAR(10),X,第幾筆)) 其中Y就是原資料 "第幾筆"是代表 要取出Y中第幾組資料 而結束位置 end_num =FIND(X,SUBSTITUTE(CHAR(10)&Y&CHAR(10),CHAR(10),X,第幾筆+1))-1 長度即兩者相減,故MID式為 MID(Y,start_num,end_num-start_num) 以上即為公式的主體, 剩下的就是輸入要取出哪一格、第幾筆的數字了。 ※ 引述《wwwwkyo (戀雲)》之銘言: : (若是和其他不同軟體互動之問題 請記得一併填寫) : 軟體:excel : 版本:2003 : 我想請問的是如何將同一個儲存格的資料分開 : 某些欄位會有多筆資料再同一儲存格 : 希望可以將這些資料分開 : 儲存格裡面的資料沒有固定是幾筆資料 : 同一儲存格資料分開後 : 其他欄位的資料可以複製過去 : 例如 : A B C D E : 1 1984/6/6 RDSC MRKKK 154SD8 DD84E : DEFR 0D4D45 : D84235 : 2 1984/6/7 EDSA FTRFS D458DD D4E84 : DEDS D48425 : BTDC : 希望修正資料為 : A B C D E : 1 1984/6/6 RDSC MRKKK 154SD8 DD84E : 2 1984/6/6 DEFR MRKKK 0D4D45 DD84E : 3 1984/6/6 MRKKK D84235 DD84E : 4 1984/6/7 EDSA FTRFS D458DD D4E84 : 5 1984/6/7 DEDS FTRFS D48425 DD84E : 6 1984/6/7 BTDC FTRFS DD84E : 如果需要使用VB來處理 : 那我該如何寫 : 麻煩各位大大的幫忙..<(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.164.51.8 ※ 編輯: JieJuen 來自: 114.47.33.149 (11/03 23:16)
JieJuen:簡單應用 #19ssTSd3 9202 04/08 04:59
※ 編輯: JieJuen 來自: 218.164.49.72 (05/11 19:04)