[算表] VBA 如何匯入資料本身包含逗號的csv檔?

看板Office作者 (翼をください)時間6年前 (2018/06/08 16:08), 編輯推噓0(0029)
留言29則, 3人參與, 6年前最新討論串1/1
軟體: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://www.ptt.cc/bbs/Office/M.1528445287.A.CDB.html

06/08 17:52, 6年前 , 1F
因要分割的逗號前雙引號的個數為偶數
06/08 17:52, 1F

06/08 17:52, 6年前 , 2F
如無合適的方法的話,可迴圈(逐字或逗號),判斷逗號前雙
06/08 17:52, 2F

06/08 17:53, 6年前 , 3F
引號個數是否為偶數,是的話,置換其他分割字元。最後再以
06/08 17:53, 3F

06/08 17:53, 6年前 , 4F
以新的分割字元來split
06/08 17:53, 4F

06/08 17:59, 6年前 , 5F
謝謝SO大,可是資料筆數不少,不知道這樣會不會影響效能
06/08 17:59, 5F

06/08 17:59, 6年前 , 6F
但是我還是會試試看,謝謝!
06/08 17:59, 6F

06/08 22:13, 6年前 , 7F
覺得以迴圈和判斷是會影響的
06/08 22:13, 7F

06/08 22:15, 6年前 , 8F
如不以迴圈判斷的話,也可以正規表示將,[0-9]和雙引號,取
06/08 22:15, 8F

06/08 22:15, 6年前 , 9F
代逗號為其他分隔符號
06/08 22:15, 9F

06/08 23:13, 6年前 , 10F
我有試著想要取代,但是逗號出現的位置沒有規律,所以不
06/08 23:13, 10F

06/08 23:13, 6年前 , 11F
知道怎麼取代比較好。像是前後都是數字的逗號跟字串內的
06/08 23:13, 11F

06/08 23:13, 6年前 , 12F
逗號其實就分不出來了
06/08 23:13, 12F

06/08 23:20, 6年前 , 13F
回文的正規表示是可以將字串內的逗號排除的
06/08 23:20, 13F

06/08 23:21, 6年前 , 14F
只針對,數字0-9或,"的部分來取代
06/08 23:21, 14F

06/09 05:37, 6年前 , 15F
呃… 我想不出來怎麼取代,SO大可以解惑嗎? QQ
06/09 05:37, 15F

06/09 05:56, 6年前 , 16F

06/09 05:56, 6年前 , 17F
是這個嗎?Pattern?
06/09 05:56, 17F

06/09 09:32, 6年前 , 18F
類似該網頁,pattern內以括號包住條件可於取代以$1方式取
06/09 09:32, 18F

06/09 09:33, 6年前 , 19F
出;需加上global為true
06/09 09:33, 19F

06/09 09:41, 6年前 , 20F
pattern條件會是",([0-9""])";取代為";$1";split以";"
06/09 09:41, 20F

06/15 12:40, 6年前 , 21F
這個問題是一堆人都沒按照正常 csv 規範產檔。csv 規範
06/15 12:40, 21F

06/15 12:40, 6年前 , 22F
中都有這些意外狀況的處理方式。
06/15 12:40, 22F

06/15 12:42, 6年前 , 23F
隨便自己寫產出 csv 檔,遇到分隔符號有衝突,就自己亂
06/15 12:42, 23F

06/15 12:42, 6年前 , 24F
訂分隔符號,甚至用多個字元當分隔符號。
06/15 12:42, 24F

06/15 12:45, 6年前 , 25F
csv 規範中有提到資料裡有 , 時,該怎麼處理。有 " 引
06/15 12:45, 25F

06/15 12:45, 6年前 , 26F
號時該怎麼處理。(當然分隔符號可以自訂,但至少規範
06/15 12:45, 26F

06/15 12:45, 6年前 , 27F
中都有考慮到,只是遇到很多人只做半套,遇到問題就改定
06/15 12:45, 27F

06/15 12:45, 6年前 , 28F
分隔符號,沒去處理。導致一些工具無法處理這些自訂的 c
06/15 12:45, 28F

06/15 12:45, 6年前 , 29F
sv 格式)
06/15 12:45, 29F
文章代碼(AID): #1R6ZbdpR (Office)