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计数器位于要连接的单元格的“块”内。