【问题标题】:Add line breaks in cell to 1000 rows of data将单元格中的换行符添加到 1000 行数据
【发布时间】:2016-09-20 12:04:07
【问题描述】:

我目前正在使用以下代码为 C 列中的单元格数据添加换行符并将其复制到 K 列。我需要将换行符应用于一系列数据。我在 C 列中有 1000 行数据。 任何帮助将不胜感激。

Sub Macro
    Dim Stem As Variant
    Stem = ThisWorkbook.Worksheets ("Sheet1").Range("C2")
    Range ("K2").Select
    Range("K2").FormulaR1C1 = Stem & Chr(10) & ""
End Sub

谢谢

【问题讨论】:

  • 尝试用谷歌搜索“excel vba loop through range”(不带引号),看看这是否能让你朝着正确的方向前进。

标签: excel macros vba


【解决方案1】:

试试这个:

Sub copyAndNewLine()
'copy column C to K
Columns("C").Copy Destination:=Columns("K")

'loop through all cells in K and add new line
For i = 2 To Cells(Rows.Count, "K").End(xlUp).Row
    Cells(i, "K").Value = Cells(i, "K").Value & vbCrLf
Next i
End Sub

【讨论】:

  • 它说运行时错误 1004 应用程序定义或对象定义错误。
  • End sub 被排除在代码之外,我只是将它复制到一个空工作表中并运行正常,即使 C 为空也没有错误。当您从 VBA 编辑器 (F8) 以步进模式运行它时,请尝试查看失败的行。另请注意,您发布的代码会一直运行到第一个空单元格,如果您的数据中的任何单元格为空白,它将停止。使用我的 for 循环可能会更好,因为它会搜索特定列中的最后一个单元格并检查当您不想为空单元格添加新行时,IF 的内容。
【解决方案2】:

有几点:

  • 早绑定变量总比晚绑定好(更好的内存 管理,利用智能感知等)
  • 通常最好 尽可能避免使用“选择”。
  • 您的 Stem 变量是一个对象(范围对象),因此需要“设置”

试试这个:

Sub Macro
    Dim WS As Worksheet
    Dim Stem As Range
    Dim R2 As Range
    Dim Rng as Range

    Set WS = ActiveWorkbook.Sheets("Sheet1")
    Set Stem = WS.Range("C2", Cells(WS.Range("C2").End(xlDown).Row, WS.Range("C2").Column))
    Set R2 = WS.Range("K2", Cells(Stem.End(xlDown).Row, WS.Range("K2").Column))

    R2.Value = Stem.Value
    'New Code
    For Each Rng In R2
        Rng.Value = Rng.Value & Chr(10) & ""
    Next Rng
    'Old Code: R2.End(xlDown) = R2.End(xlDown) & Chr(10) & ""

End Sub

这样做是首先设置您正在使用的工作表。然后,使用 Range(cell1, cell2) 格式设置工作范围(Stem)。 Cell1 我定义为“C2”。下一个表达式是使用 Cells() 函数。它相当于 VBA 中的“C2”并按 Ctl+Down,然后查看您所在的行。

然后,我以类似的方式设置您的目标范围 R2,但我使用 Stem 范围来确定它应该有多大。

最后,要获得准确的副本,您的目标范围必须与起始范围的大小相同。 .value 到 .value 表达式粘贴数据。然后,您的额外字符将添加到您的新数据字段中。

.End(xlDown) 的注意事项...如果您的数据中间有空白行,它将停在那里,而不是一直走到最后。希望这会有所帮助!

编辑: For Each 循环将遍历目标范围 R2 中的每个范围(即单元格),并添加新字符。希望它更适合你。

【讨论】:

  • 谢谢。此代码仅对 K 列中的最后一行数据应用换行符。
  • 根据我对您问题的理解,这就是它的意图。您具体在哪里需要换行符?我可以修改我的答案。
  • 谢谢我需要在每个有数据的单元格中。
  • 我修改了代码。如果您找到适合您的答案,请确保您点击投票箭头旁边的勾选,让人们知道我们已经回答了您的问题。希望这会有所帮助!
【解决方案3】:

感谢大家的回答。我 atlas 能够编写我的第一个脚本并获得在单元格内添加换行符的代码。

Sub AddLineBreak()
Dim Stem As Variant
Stem = ThisWorkbook.Worksheets("Sheet1").Range("C2")

Dim i As Integer
i = 2
'this will terminate the loop if an empty cell occurs in the middle of data
Do While Cells(i, "C").Value <> ""
  Cells(i, "K").Value = Cells(i, "C").Value & vbCrLf
  i = i + 1
Loop

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 2014-03-08
    相关资源
    最近更新 更多