Excel 如何在两个单元格之间换行';s值

Excel 如何在两个单元格之间换行';s值,excel,vba,Excel,Vba,我试图根据两个单元格的值完成一个换行公式。更具体地说,应急和结束。例如: ` 意外事故“XXX” 断开总线1 断开总线2 断开总线3 断开总线4 结束 -------------------` 我想要的输出是这样的 意外事故“XXX” 断开总线1 断开总线2 断开总线3 断开总线4 结束 将其合并到应急和结束之间的一个单元格中 我还必须为10000行代码做这件事。我是否应该输入一个标识符或类似于意外事件的唯一ID号?愿意接受任何建议或解决方案 所以我使用了换行文字和字符(10)来换行,但无

我试图根据两个单元格的值完成一个换行公式。更具体地说,
应急
结束
。例如: `

意外事故“XXX” 断开总线1 断开总线2 断开总线3 断开总线4 结束
-------------------`


我想要的输出是这样的

意外事故“XXX”
断开总线1
断开总线2
断开总线3
断开总线4
结束

将其合并到
应急
结束
之间的一个单元格中

我还必须为10000行代码做这件事。我是否应该输入一个标识符或类似于
意外事件的唯一ID号
?愿意接受任何建议或解决方案

所以我使用了换行文字和字符(10)来换行,但无法找出特定单元格值或标识符的代码


=C2&Q&C3&Q&C4&Q&C5&Q&C6&Q&C7
其中
Q=CHAR(10)

使用示例中的代码并对其进行操作以供您使用:

如:

With Worksheets(1).Range("c1:c10000") 'Change the worksheet & Range
     Set c = .Find("Contingency", lookin:=xlValues) 'change the lookup text 
     If Not c Is Nothing Then
        firstAddress = c.Address
        Do
             c.Value = 5 ' Put your concatenate code here instead of this line
            Set c = .FindNext(c)
        If c is Nothing Then
            GoTo DoneFinding
        End If
        Loop While c.Address <> firstAddress
      End If
      DoneFinding:
End With
使用工作表(1.Range(“c1:c10000”)更改工作表和范围 设置c=.Find(“意外事件”,lookin:=xlValues)”更改查找文本 如果不是,那么c什么都不是 firstAddress=c.地址 做 c、 Value=5'将连接代码放在这里,而不是这一行 集合c=.FindNext(c) 如果c什么都不是 后进先出 如果结束 在c.AddressFirstAddress时循环 如果结束 完成查找: 以
摘自:

以下代码在所有行上循环,用“偶然性”标识行,并将非空单元格值连接在一起

Private Sub ConcatCells()
    Dim ws As Worksheet
    Dim currentRow As Long, concatRow As Long, lastRow As Long
    Dim WithinBlock As Boolean

    Set ws = ActiveWorkbook.Worksheets("Whatever")

    With ws
        lastRow = .Cells(.Rows.Count, "C").End(xlUp).Row
        For currentRow = 1 To lastRow

            If Left(.Cells(currentRow, "C").Value, 11) = "CONTINGENCY" Then
                WithinBlock = True
                concatRow = currentRow
                .Cells(concatRow, "D").Value = .Cells(currentRow, "C").Value

            ElseIf Left(.Cells(currentRow, "C").Value, 3) = "END" Then
                WithinBlock = False
                .Cells(concatRow, "D").Value = _
                    .Cells(concatRow, "D").Value & vbLf & _
                    .Cells(currentRow, "C").Value

            ElseIf WithinBlock And .Cells(currentRow, "C").Value <> "" Then
                .Cells(concatRow, "D").Value = _
                    .Cells(concatRow, "D").Value & vbLf & _
                    .Cells(currentRow, "C").Value

            End If
        Next currentRow
    End With
End Sub
Private Sub ConcatCells()
将ws设置为工作表
变暗当前行为长,concatRow为长,lastRow为长
Dim WithinBlock作为布尔值
设置ws=ActiveWorkbook.Worksheets(“任意”)
与ws
lastRow=.Cells(.Rows.Count,“C”).End(xlUp).Row
对于currentRow=1到lastRow
如果左(.Cells(currentRow,“C”).值,11)=“偶然性”,则
WithinBlock=True
concatRow=currentRow
.Cells(concatRow,“D”).值=.Cells(currentRow,“C”).值
ElseIf Left(.Cells(currentRow,“C”)。值,3)=“END”,然后
WithinBlock=False
.单元格(concatRow,“D”)。值=_
.单元格(concatRow,“D”).值和vbLf&_
.单元格(当前行,“C”).值
ElseIf带有块和.Cells(当前行,“C”)。值“”,则
.单元格(concatRow,“D”)。值=_
.单元格(concatRow,“D”).值和vbLf&_
.单元格(当前行,“C”).值
如果结束
下一行
以
端接头

您可以使用它。如果您有最新版本的Excel,
TextJoin
应该这样做,请添加一个示例屏幕截图,说明您的两个(或七个)在哪里单元格通常位于显示所需输出的位置。@Asger我已经在Description中发布了示例输出,我的Concatatent代码中会有什么内容,并且我不断收到无效的外部过程编译错误。我发现了我的错误。我刚刚添加了一个标记,该标记已设置,而currentRow计数器位于要连接的单元格的“块”内。