【问题标题】:Excel vba macro for that copy from 1 word-wraped cell to multiple multiple cellsExcel vba 宏,用于从 1 个自动换行的单元格复制到多个多个单元格
【发布时间】:2013-05-13 14:54:03
【问题描述】:

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

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 列中的每个任务创建一个新行

谁能给我一些指点。 我经常在深夜这样做,直到我复制所有行才能睡觉。

谢谢!

【问题讨论】:

  • 哈哈can't go to bed until I copied all the rows。好的,你试过什么?您是否尝试过录制宏?你用的是什么版本的excel
  • 我正在使用 excel 2007,我尝试录制宏,但我无法让录制的宏工作。

标签: excel line-breaks vba


【解决方案1】:

我以后可以提供更好的帮助,但现在只是提示:

将 Range 变量设置为 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列左边的文字。

重复直到没有找到换行符,然后继续。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 2010-10-09
    • 2020-02-15
    • 1970-01-01
    • 2013-07-11
    相关资源
    最近更新 更多