通过 Excel 中的一个关键字连接一列中的不同行数
Concatenate varying number of rows in one column by one keyword in Excel
你能帮我理解如何将一堆记录的所有行连接在一列中,但行数不同,并由指示第一行的关键字描述,如 'File*#' 吗?一个例子:
1 file# x stuff...
2 more stuff
3 more stuff.
4 file# x stuff...
5 more stuff
6 File # stuff
7 File# stuff
谢谢!
可能有更好的方法,但我认为这对你有用:
Sub Test()
Dim r As Range
Dim i As Integer
Dim lRow As Long
Dim x As Variant
Dim arr() As Variant
Dim aSht As Worksheet
Set aSht = ActiveSheet
Set r = ActiveSheet.Range("A1")
i = 1
Do While r <> ""
If Left(r.Offset(i, 0), 6) = "File #" Or r.Offset(i, 0) = "" Then
x = r.Resize(i, 1).Value2
ReDim arr(1 To UBound(x, 1))
For lRow = 1 To UBound(x, 1)
arr(lRow) = x(lRow, 1)
Next
If aSht.Cells(aSht.Rows.Count, 2).End(xlUp).Value = "" Then
aSht.Cells(aSht.Rows.Count, 2).End(xlUp).Value = Join(arr, ";")
Else
aSht.Cells(aSht.Rows.Count, 2).End(xlUp).Offset(1, 0).Value = Join(arr, ";")
End If
Set r = r.Offset(i, 0)
i = 1
Else
i = i + 1
End If
Loop
End Sub
注意:一个文件必须至少有 2 行。换句话说,第 1 行是 File...,第 2 行是 stuff。每个文件行必须开始:File
(space) #
。我可以让它更灵活,但它会工作得很好。
你能帮我理解如何将一堆记录的所有行连接在一列中,但行数不同,并由指示第一行的关键字描述,如 'File*#' 吗?一个例子:
1 file# x stuff...
2 more stuff
3 more stuff.
4 file# x stuff...
5 more stuff
6 File # stuff
7 File# stuff
谢谢!
可能有更好的方法,但我认为这对你有用:
Sub Test()
Dim r As Range
Dim i As Integer
Dim lRow As Long
Dim x As Variant
Dim arr() As Variant
Dim aSht As Worksheet
Set aSht = ActiveSheet
Set r = ActiveSheet.Range("A1")
i = 1
Do While r <> ""
If Left(r.Offset(i, 0), 6) = "File #" Or r.Offset(i, 0) = "" Then
x = r.Resize(i, 1).Value2
ReDim arr(1 To UBound(x, 1))
For lRow = 1 To UBound(x, 1)
arr(lRow) = x(lRow, 1)
Next
If aSht.Cells(aSht.Rows.Count, 2).End(xlUp).Value = "" Then
aSht.Cells(aSht.Rows.Count, 2).End(xlUp).Value = Join(arr, ";")
Else
aSht.Cells(aSht.Rows.Count, 2).End(xlUp).Offset(1, 0).Value = Join(arr, ";")
End If
Set r = r.Offset(i, 0)
i = 1
Else
i = i + 1
End If
Loop
End Sub
注意:一个文件必须至少有 2 行。换句话说,第 1 行是 File...,第 2 行是 stuff。每个文件行必须开始:File
(space) #
。我可以让它更灵活,但它会工作得很好。