VBA-查找命名区域中引用电子表格标题行的第一个单元格的位置



我所拥有的是零件描述,这些描述已拆分为单独的列。所有列都有标题,但并非所有列都包含每个部分的信息,例如:有些列可能有大小、材质和温度,而另一列可能只有大小和温度。我有一个函数可以将它们连接起来,忽略空格。我想在连接每个单元格之前引用列的标题。

期望结果:

当在B6=串联RangeValve(G6:J6,",")中输入以下内容时

我想看看这些结果。[项目]阀门,[类型]闸门,[尺寸]28IN

[]中的项在第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))

我不是100%这与OP的问题有关,但就标题和未来的读者而言,这对我很有效。

Dim Rng As Range, FirstIteminRng As Range
Set Rng = Range("A1:B10")
Set FirstIteminRng = Cells(Rng.Row,Rng.Column)
FirstIteminRng.Select

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

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.引用列标题

相关内容

最新更新