為什麼這篇excel換行符號char 10鄉民發文收入到精華區:因為在excel換行符號char 10這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者JieJuen (David)看板Office標題Re: [算表] excel儲存格的問題 (分...
以下作法可能不夠精簡,望能拋磚引玉 ^^
僅解釋原理,實際公式見檔案
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 來自: 218.164.49.72 (05/11 19:04)