我在Excel 2003中使用VBA.这是我遇到的问题最简单的例子.我想只用逗号将一个字符串拆分成行中的单元格.
在Cell A1中,我有以下字符串:
A B,C
Run Code Online (Sandbox Code Playgroud)
在VBA中,如果我说Range("A1").TextToColumns Comma:=True,Space:=False,它会做我期望的.单元格A1是A B,单元格B1是C
但如果我有这个字符串:
A B C,D
Run Code Online (Sandbox Code Playgroud)
然后,如果我使用Range("A1").TextToColumns Comma:=True,Space:=False它,它无论如何都会被SPACES分割!单元格A1是A,单元格B1 B,单元格C1是C,D(?!)
TextToColumns当有多个空格时,为什么会自动按空格分割,即使我明确告诉它不要?这是一个已知的错误?有没有解决方法,除了自己手动将字符串解析为列?
您希望显式设置DataType为xlDelimited,否则Excel假定您的数据按固定宽度列排列,而Excel初始猜测这些列的宽度是空格所在的位置 - 忽略您在参数列表中选择的任何分隔符.
尝试以下操作,您将看到它重现您的结果:
Range("A1").TextToColumns DataType:=xlFixedWidth
Run Code Online (Sandbox Code Playgroud)
这给出了与省略DataType参数相同的结果:
Range("A1").TextToColumns
Run Code Online (Sandbox Code Playgroud)
请注意,Excel文档在这方面是错误的:它说xlDelimited是默认值,但显然xlFixedWidth是现实中的默认值.
所以,长话短说,你想要的是:
Range("A1").TextToColumns DataType:=xlDelimited, Comma:=True, Space:=False
Run Code Online (Sandbox Code Playgroud)
编辑它看起来比Excel文档可能有点错误.这实际上闻起来像Excel-VBA中的一个错误.请参阅以下评论中的讨论.
| 归档时间: |
|
| 查看次数: |
3836 次 |
| 最近记录: |