2013-05-13 92 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,然後出發。

相關問題