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

标签 excel vba concatenation named-ranges

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

期望的结果:

在 B6 中输入以下内容时 =ConcatenateRangeValve(G6:J6,",")

我想看看这些结果。 [项目]阀门,[类型]闸门,[DIM]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)

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

范围("NamedRange").Offset(-1,0)

对于所有其他情况:

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

关于excel - VBA-查找命名范围中第一个单元格的位置以引用电子表格的标题行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26802093/

相关文章:

sql - 从 SSIS 生成 excel 但在每一列中都得到报价?

vba - 不同工作表上的 UDF 相互调用返回错误 2015

c - c中的字符串连接,不使用函数

javascript - Array.concat() 返回一个空数组

java - 字符串池 : "Te" +"st" faster than "Test"?

excel - 系统错误 &H8000FFF (-247418113)。灾难性故障

excel - 如何将值插入非预先指定的数组大小?

ms-access - VBA中变量的空值

Excel - 如何确保在单元格中输入一个值时,另一个值会被清空(反之亦然)?

vba - 使用 VBA 将 Outlook 类别分配给 MailItem 时遇到问题