VBA中的转义字符

时间:2018-10-31 11:09:57

标签: excel vba excel-vba

我在互联网上看到过类似的话题,但是找不到适合我问题的合适话题。由于讨论时间太长,因此我将缩短讨论时间。因此,我需要将以“ ¦”分隔的A列,B列和C列串联起来。我需要使用“ ¦”进行拆分(无需问为什么我需要串联¦然后使用¦进行拆分-这是一个漫长的过程。这只是一个要点),但是数据中可能包含“ ¦” ”。是否可以先忽略或转义数据中的“ ¦”,以便将其视为分隔符?分隔符的更改也可以出现在数据中。我正在填写表格,所以我需要使用VBA。

例如

Column A     | Column B     | Column C     | Column D
111          | AAA          | 1A1          | 111¦AAA¦1A1
222          | BBB          | 2B2          | 222¦BBB¦2B2
333          | CC¦C         | 3C3          | 333¦CC¦C¦3C3 

如果我拆分上面的示例,它将看起来像这样,这是错误的。

Column A     | Column B     | Column C     | Column D
111          | AAA          | 1A1          | 
222          | BBB          | 2B2          | 
333          | CC           | C            | 3C3

3 个答案:

答案 0 :(得分:3)

您可以将|替换为您不使用的字符,例如用^(或使用某些模式,例如[ThisIsPipe])以及split()(或之后),例如,以^代替|(或注入的图案)。

恕我直言,对于[连接~~>拆分],最好使用那些未反映在工作表中的字符

答案 1 :(得分:1)

直言不讳,您的数据格式不正确,但这就是生命:)!您需要使用所谓的“文本限定符”,以使您用作分隔符的字符出现在要分隔的文本项中,而不被视为分隔符。

您所追求的例子:

"111"|"AAA"|"1A1" "222"|"BBB"|"2B2" "333"|"CC|C"|"3C3"

将第三条数据行复制/粘贴到新工作表中,然后在其上运行“文本到列”向导(TtCW)以获取定界文本。在第二步中,您将在右侧看到“文本限定符”下拉列表。

您可能需要使用VBA将数据与文本限定符连接起来,然后通过TtCW再次将其拆分。记录一个宏,以查看如何使其自动化并将其合并到代码中。

答案 2 :(得分:0)

我的解决方案使用不带vba的Get&Transform(需要最新的Excel或Power Query插件)。对于您的数据,我的工作状况很好,将CC¦C留在了B列。

从范围获取数据

使用|分割全部分隔符

右键单击最后一列->按¦分隔符分隔

重命名列标题