我有以下 Excel 单元格:
D001
D002
D003
345
(在同一个单元格中)
我需要在同一单元格的每一行之后添加一串文本,如下所示:
D001 First Text
D0002 Second Text
D003 Third Text
345 Fouth Text
我找到了一个代码,它可以让我计算同一个单元格上有多少行,但我没有找到任何方法使用它在每一行的文本之后写:
Public Sub CountLines()
Dim H1 As Double
Dim H2 As Double
Dim row As Long
row = 1
While Cells(row, 1).Value <> ""
With Cells(row, 1)
.WrapText = False
H1 = .height
.WrapText = True
H2 = .height
.Offset(0, 1).Value = H2 / H1
End With
row = row + 1
Wend
End Sub
我想这样做的正确方法是在他在 VBA 上找到任何行更改(Ch(10))之前使用 For 来编写文本,但我无法使其工作
谢谢您的帮助。
最佳答案
添加文本以计算换行符
此代码将遍历 A 列中具有任何值的所有单元格。
我已经在我的 Excel 中重新创建了您的数据集:
代码将分解每一行,添加它是哪一行,然后转到下一行:
下面是代码:
Sub AddText()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets(1)
Dim myCell As Variant, myRange As Range, tempArr() As String
Dim i As Integer
Set myRange = ws.Range("A1", ws.Cells(ws.Rows.Count, "A").End(xlUp))
For Each myCell In myRange
tempArr = Split(myCell, Chr(10))
myCell.Value = ""
For i = 0 To UBound(tempArr)
tempArr(i) = tempArr(i) & " text " & i
If i = UBound(tempArr) Then
myCell.Value = myCell.Value & tempArr(i)
Else: myCell.Value = myCell.Value & tempArr(i) & Chr(10)
End If
Next i
Next myCell
End Sub
如果您希望它从基数 1 而不是基数 0 计数,请更改行
myCell.Value = myCell.Value & tempArr(i)
(以及 If 语句中的以下一个)到 myCell.Value = myCell.Value & tempArr(i) + 1
我应该再次提到,这已经为 A 列中的动态范围设置了。这意味着如果您在
A2
中添加更多格式相同的数据,代码也将应用到它,一直到 A 列中的最后一组数据。
关于vba - 在同一单元格的每一行之后添加文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40218553/