2013-05-13 93 views
-1

在工作中,我经常需要将大量信息从一个表格复制到另一个表格(Excel 2007)。 问题是我想复制Sheet1上的一行,其中包含带换行符的文字包装文本到sheet2上的多个单元格,如下例所示。Excel vba宏,用于从1个单词包装单元格复制到多个单元格

Sheet1中看起来是这样的(但有50-200行):

Row A   B   C  D  E  F.... 
1  PN   Name  Task 

2  1-234  Text1  Text2 
          is word- 
          wrapped 

3  2-345  Text3  Text4 
          Text5 

,我想编写一个宏,可以帮助我将此信息复制到Sheet2工作,使我得到一个新行的每一行-打破。 Sheet2中应该是这样的:

Row A   B   C  D  E  F.... 

1  PN   Name  Task 

2  1-234  Text1  Text2 

3  1-234  Text1  is word- 

4  1-234  Text1  wrapped 

5  2-345  Text3  Text4 

6  2-345  Text3  Text5 

换句话说,我想在C列创建每个任务新行

谁能给我一些指点。 我经常不得不在晚上很晚才做这件事,直到我复制了所有的行之后,我才能睡觉。

谢谢!

+0

哈哈'不能去睡觉,直到我复制了所有的行'。好吧,你试过了什么?你有没有试图记录一个宏? – 2013-05-13 15:04:38

+0

使用excel 2007,我试图记录一个宏,但我不能让一个录制的宏工作。 – user2378059 2013-05-15 14:52:11

回答

0

我可以帮助人们更好地过去了,但现在,只是暗示:

设置范围变量列C:

Dim DataColumn as Range

Set DataColumn = Sheet1.Range("C:C")

设置一个row index = i从1到结束(直到A列为空)。每个内部循环增加这个i,如下所示。

做一个while loop因为你的端线会有所不同(你会被插入线)

在循环中,得到DataColumn.Rows(i).Value。在一个变量保存它作为字符串

做一个内部循环来查找值的所有断行字符: 搜索第一个换行符(我相信它Chr(10))在值(我相信这是InStr(text) VBA方法) 如果找不到,则结束此内部循环

如果找到 在第一个换行符前面获取Left(text)部分文本。替换该部分的行值。 (第一次不添加线条) 从存储值中删除该部分(为此使用Right(text))。 下一次循环迭代,再次搜索换行符。 这一次,您将在i行索引处添加行。 (DataColumn.Rows(i).EntireRow.Insert

复制上一行的所有数据并放入新的数据,使用C列左侧的文本部分。

Reapeat直到找不到linebreaks,然后出发。

相关问题