vba - 在同一单元格的每一行之后添加文本

标签 vba excel

我有以下 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 中重新创建了您的数据集:


enter image description here

代码将分解每一行,添加它是哪一行,然后转到下一行:

enter image description here

下面是代码:

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/

相关文章:

excel - VLookup 和 EXCEL

vba - 从 Excel 读取缓慢

excel - 错误编号未填充 'Excel Ran Out of Resources'错误

Excel列表框列表索引不突出显示

windows - 使用批处理文件在单独的实例中打开多个 Excel 文件

vba - 将 Range 属性存储为对象?

java - Apache POI - CONCAT 函数未实现错误

vba - 在 VBA 中向上舍入到最接近的较大整数

excel - 将单个单元格中的数据分成多行

excel - 使用宏格式化 Excel 中的单元格小数位