需要Excel VBA宏将单元格划分为多个单元格,具体取决于特定字符

时间:2011-07-08 13:57:25

标签: excel vba

我有一个邮件列表,里面有大学招股说明书的名称和地址,取自.tab文件,在excel文件中。但地址包含在一个单元格中,每一行都由一个回车分隔。

我真的需要一个可以运行的宏,它将不同的部分分成不同的单元格。我基本上了解结构,但不了解VBA的功能。

需要扫描直到出现回车符,将前面的数据,减去回车符号放入新单元格,然后继续,直到单元格中没有剩余字符,因为最后没有回车符。

这可能吗?

2 个答案:

答案 0 :(得分:4)

您可以在没有VBA的情况下执行此操作,如下所示:

(我假设您的数据在A栏中)

  1. 在B列中使用此公式替换回车:=SUBSTITUTE(A1,CHAR("10"),"|")
  2. 复制B列并使用PasteSpecial - 值将实际数据复制到C列
  3. 使用C列上的文本到列按文件拆分文本从D开始分成​​单独的单元格
  4. 希望这有帮助

答案 1 :(得分:4)

以下是VBA宏的代码:

Dim rngSource As Range
Dim rngDestination As Range

Set rngSource = Sheet1.Range("A1:A5") ' or wherever your list is
Set rngDestination = Sheet1.Range("C1") ' parsed data will be placed here

rngSource.TextToColumns _
    Destination:=rngDestination , _
    DataType:=xlDelimited, _
    Other:=True, _
    OtherChar:=vbLf ' This is where you define your delimiter character

其中vbLfChr(10)相同,假设这是您的分隔符。根据您的回车风格,您可能需要使用vbCr(或等效地,Chr(13))。

请注意,@ Jon Egerton的非宏观方式可以正常工作。但是,如果它需要不止一次,我倾向于厌倦了所有的点击,选择,打字,复制,特殊粘贴,在错误的地方粘贴,不得不重新开始等等。我发现VBA宏很多更可重复使用。我想这是一个品味问题。