[算表] VBA 如何汇入资料本身包含逗号的csv档?

楼主: foolkids (翼をください)   2018-06-08 16:08:02
软件:Office Excel VBA
版本:2010
原本是透过 Line Input将csv档逐行读入,并透过Split指令拆成阵列
但是现在的问题是来源资料本身包含逗号,导致Split指令出错。
目前来源资料如下:
"aaaa","bbbb","cc,cc",1.23,0,"",500,"eee"
字串前后会有""夹住,数字不会有,有逗号的字串出现位置不定...
请问有前辈友好建议的吗?
作者: soyoso (我是耀宗)   2018-06-08 17:52:00
因要分割的逗号前双引号的个数为偶数如无合适的方法的话,可循环(逐字或逗号),判断逗号前双引号个数是否为偶数,是的话,置换其他分割字符。最后再以以新的分割字符来split
楼主: foolkids (翼をください)   2018-06-08 17:59:00
谢谢SO大,可是资料笔数不少,不知道这样会不会影响效能但是我还是会试试看,谢谢!
作者: soyoso (我是耀宗)   2018-06-08 22:13:00
觉得以循环和判断是会影响的如不以循环判断的话,也可以正规表示将,[0-9]和双引号,取代逗号为其他分隔符号
楼主: foolkids (翼をください)   2018-06-08 23:13:00
我有试着想要取代,但是逗号出现的位置没有规律,所以不知道怎么取代比较好。像是前后都是数字的逗号跟字串内的逗号其实就分不出来了
作者: soyoso (我是耀宗)   2018-06-08 23:20:00
回文的正规表示是可以将字串内的逗号排除的只针对,数字0-9或,"的部分来取代
楼主: foolkids (翼をください)   2018-06-09 05:37:00
呃… 我想不出来怎么取代,SO大可以解惑吗? QQhttp://discuz.bestdaylong.com/thread-37799-1-1.html是这个吗?Pattern?
作者: soyoso (我是耀宗)   2018-06-09 09:32:00
类似该网页,pattern内以括号包住条件可于取代以$1方式取出;需加上global为truepattern条件会是",([0-9""])";取代为";$1";split以";"
作者: cancelpc (阿吉)   2018-06-15 12:40:00
这个问题是一堆人都没按照正常 csv 规范产档。csv 规范中都有这些意外状况的处理方式。随便自己写产出 csv 档,遇到分隔符号有冲突,就自己乱订分隔符号,甚至用多个字符当分隔符号。csv 规范中有提到资料里有 , 时,该怎么处理。有 " 引号时该怎么处理。(当然分隔符号可以自订,但至少规范中都有考虑到,只是遇到很多人只做半套,遇到问题就改定分隔符号,没去处理。导致一些工具无法处理这些自订的 csv 格式)

Links booklink

Contact Us: admin [ a t ] ucptt.com