在单元格中添加换行符到1000行数据

时间:2016-09-20 12:04:07

标签: excel-vba macros vba excel

我目前正在使用以下代码为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

由于

3 个答案:

答案 0 :(得分:1)

有几件事:

  • 最好早点绑定你的变量而不是迟到(更好的记忆 管理,利用intellisense等。)
  • 通常最好 尽可能避免使用“选择”。
  • 您的Stem变量是一个对象(Range Object),因此需要“Set”

试试这个:

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中的每个范围(即单元格),并添加新字符。希望更适合你。

答案 1 :(得分: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

答案 2 :(得分:0)

感谢大家的回答。我的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