作者foolkids (翼をください)
看板Office
標題[算表] VBA 如何匯入資料本身包含逗號的csv檔?
時間Fri Jun 8 16:08:02 2018
軟體:Office Excel VBA
版本:2010
原本是透過 Line Input將csv檔逐行讀入,並透過Split指令拆成陣列
但是現在的問題是來源資料本身包含逗號,導致Split指令出錯。
目前來源資料如下:
"aaaa","bbbb","cc,cc",1.23,0,"",500,"eee"
字串前後會有""夾住,數字不會有,有逗號的字串出現位置不定...
請問有前輩友好建議的嗎?
--
┌─────────────────────────────┐
│就這樣,終於到了啟程的日子。
│
│和來機場送行的朋友們說著玩笑話,其實內心恍恍惚惚像在作夢。
│
│也似乎是因為,
為了走到「出發」這一步,耗盡了全部心力。 │
└─────────────────石田裕輔《不去會死!》─┘
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.71.9.169
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1528445287.A.CDB.html
1F:→ soyoso: 因要分割的逗號前雙引號的個數為偶數 06/08 17:52
2F:→ soyoso: 如無合適的方法的話,可迴圈(逐字或逗號),判斷逗號前雙 06/08 17:52
3F:→ soyoso: 引號個數是否為偶數,是的話,置換其他分割字元。最後再以 06/08 17:53
4F:→ soyoso: 以新的分割字元來split 06/08 17:53
5F:→ foolkids: 謝謝SO大,可是資料筆數不少,不知道這樣會不會影響效能 06/08 17:59
6F:→ foolkids: 但是我還是會試試看,謝謝! 06/08 17:59
7F:→ soyoso: 覺得以迴圈和判斷是會影響的 06/08 22:13
8F:→ soyoso: 如不以迴圈判斷的話,也可以正規表示將,[0-9]和雙引號,取 06/08 22:15
9F:→ soyoso: 代逗號為其他分隔符號 06/08 22:15
10F:→ foolkids: 我有試著想要取代,但是逗號出現的位置沒有規律,所以不 06/08 23:13
11F:→ foolkids: 知道怎麼取代比較好。像是前後都是數字的逗號跟字串內的 06/08 23:13
12F:→ foolkids: 逗號其實就分不出來了 06/08 23:13
13F:→ soyoso: 回文的正規表示是可以將字串內的逗號排除的 06/08 23:20
14F:→ soyoso: 只針對,數字0-9或,"的部分來取代 06/08 23:21
15F:→ foolkids: 呃… 我想不出來怎麼取代,SO大可以解惑嗎? QQ 06/09 05:37
17F:→ foolkids: 是這個嗎?Pattern? 06/09 05:56
18F:→ soyoso: 類似該網頁,pattern內以括號包住條件可於取代以$1方式取 06/09 09:32
19F:→ soyoso: 出;需加上global為true 06/09 09:33
20F:→ soyoso: pattern條件會是",([0-9""])";取代為";$1";split以";" 06/09 09:41
21F:→ cancelpc: 這個問題是一堆人都沒按照正常 csv 規範產檔。csv 規範 06/15 12:40
22F:→ cancelpc: 中都有這些意外狀況的處理方式。 06/15 12:40
23F:→ cancelpc: 隨便自己寫產出 csv 檔,遇到分隔符號有衝突,就自己亂 06/15 12:42
24F:→ cancelpc: 訂分隔符號,甚至用多個字元當分隔符號。 06/15 12:42
25F:→ cancelpc: csv 規範中有提到資料裡有 , 時,該怎麼處理。有 " 引 06/15 12:45
26F:→ cancelpc: 號時該怎麼處理。(當然分隔符號可以自訂,但至少規範 06/15 12:45
27F:→ cancelpc: 中都有考慮到,只是遇到很多人只做半套,遇到問題就改定 06/15 12:45
28F:→ cancelpc: 分隔符號,沒去處理。導致一些工具無法處理這些自訂的 c 06/15 12:45
29F:→ cancelpc: sv 格式) 06/15 12:45