VBA-查找指定范围中的第一个单元格的位置,以引用电子表格的标题行

我所拥有的部分描述是我已经拆分成不同的栏目。 所有列都有标题,但不是所有列都包含每个部分的信息,例如:一些列可能具有大小,材质和温度,而另一列可能只有大小和温度。 我有一个函数来连接它们忽略空格。 我想在每个连接的单元格之前引用列标题。

预期结果:

在B6 = ConcatenateRangeValve(G6:J6,“,”)中input以下内容

我想看看这些结果。 [项目]阀,[types]门,[DIM] 28英寸

[]中的项目是在行1:1,我有麻烦让我的函数引用该行与我在拉相同的列的标题。 我认为它需要的是确定我在哪里工作的单元在整个电子表格中。 我试图通过定义C,将其值设置为我范围内第一个单元格的列号,然后在循环中逐步增加1。 我无法得到它的工作。 所有其他部分都很好。 见下文:

Function ConcatenateRangeValve(ByVal cell_range As Range, _ Optional ByVal seperator As String) As String Dim newString As String Dim cellArray As Variant Dim i As Long, j As Long Dim C As Long cellArray = cell_range.Value With Range("cell_range") C = .Column End With For i = 1 To UBound(cellArray, 1) For j = 1 To UBound(cellArray, 2) If Len(cellArray(i, j)) <> 0 Then newString = newString & (seperator & "[" & cells(1, C) & "]") newString = newString & (cellArray(i, j)) End If C = C + 1 Next Next If Len(newString) <> 0 Then newString = Right$(newString, (Len(newString) - Len(seperator))) End If ConcatenateRangeValve = newString End Function 

预先感谢您提供的任何帮助。

你可以做很多不同的方式,但是你可以像使用表一样在一个范围内引用单元格。 如果您的命名范围包含标题:

Range("NamedRange").Cells(1,1)

如果您的命名范围从标题下方开始:

Range("NamedRange").Offset(-1,0)

对于所有其他情况:

Range(Cells(1,Range("NamedRange").Column))

所以,我是VBA的新手,显然我使用的命名范围是错误的。 我提出的解决scheme是更换

 With Range("cell_range") C = .Column End With 

 ' cell_range(1).column returns the column index of the starting range from the passed variable C = cell_range(1).Column 

这将返回与电子表格中列的数字相对应的数组的第一个单元格所在的位置。 这使我可以使用C来引用列标题