我正在尝试连接2个特定列之间的选定范围。我的第一个列名是“Product-name”(第一列是固定的),第二个特定列是不固定的。它可以是第3,第4,第5或N.该列的名称是“价格”。我想连接介于这两列之间的所有列。我尝试了以下代码。
Sub test()
Cells(1, 1).Select
j = 1
Do
k = Cells(1, j).Value
Cells(1, j).Select
j = j + 1
Loop Until (k = "Product-name")
c1 = j
Do
k = Cells(1, j).Value
Cells(1, j).Select
j = j + 1
Loop Until (k = "Price")
c2 = j - 2
If (c2 > c1) Then
'I am doing something wrong here. Please let me know the correct syntax
CONCATENATE(Range(Columns(c1), Columns(c2)))
End If
End Sub
答案 0 :(得分:1)
@nbayly是正确的,你不能连接像这样的整个范围,即使你不能将结果分配给任何东西。
以下是使用不同技术进行此操作的一种方法。测试数据如下所示:
确保将Product和Price设置为列或标题单元格作为命名范围。如果你不确定我的意思,这是一个例子:
现在运行以下代码:
Sub concatTest()
Dim wks As Worksheet
Set wks = ActiveSheet
Dim colStart As String, colEnd As String
colStart = wks.Range("ProductName").Column
colEnd = wks.Range("Price").Column
Dim resultString As String
Dim LastRow As Integer: LastRow = wks.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
For eachRow = 2 To LastRow
resultString = ""
For y = colStart To colEnd
resultString = resultString & wks.Cells(eachRow, y)
Next y
Debug.Print resultString
Next eachRow
End Sub
结果在即时窗口中,您也可以将此数据放在某些列中: