作者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/cn.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