在excel中按条件检索单元格编号

在excel中按条件检索单元格编号,excel,vba,Excel,Vba,我需要检索一些用于另一个函数的单元格编号 基本上,我需要一个函数,它可以测试一个条件并检索行号,然后可以将行号附加到我选择的列字母中。 函数的形式为getcolnumbers(范围;标准;'column\u letter\u to\u be\u added\u to\u The\u numbers\u retrieved') Excel中有这样的函数吗?最简单的方法是将过程拆分为其他列。例如,添加一列C,其中 C1 = if(A1 > 5130, B1, "") 然后,根据您为A列提供的

我需要检索一些用于另一个函数的单元格编号

基本上,我需要一个函数,它可以测试一个条件并检索行号,然后可以将行号附加到我选择的列字母中。 函数的形式为
getcolnumbers(范围;标准;'column\u letter\u to\u be\u added\u to\u The\u numbers\u retrieved')


Excel中有这样的函数吗?

最简单的方法是将过程拆分为其他列。例如,添加一列C,其中

C1 = if(A1 > 5130, B1, "")

然后,根据您为A列提供的标准,C列将只包含您想要的B列的值。

最简单的方法可能是将您的过程拆分为其他列。例如,添加一列C,其中

C1 = if(A1 > 5130, B1, "")

然后,根据为A列提供的标准,C列将只包含您想要的B列的值。

您可以创建自己的用户定义函数:

Public Function getcolnumbers(r1 As Range, v As Variant, colid As String) As String
    Dim r As Range

    getcolnumbers = ""
    For Each r In r1
        If r.Value = v Then
            getcolnumbers = getcolnumbers & ";" & colid & r.Row
        End If
    Next r
    If Len(getcolnumbers) > 1 Then getcolnumbers = Mid(getcolnumbers, 2)
End Function
例如:

用户定义函数(UDF)非常易于安装和使用:

  • ALT-F11将显示VBE窗口
  • ALT-I ALT-M打开一个新模块
  • 粘贴内容并关闭VBE窗口
  • 如果保存工作簿,则自定义项将与工作簿一起保存。 如果在2003年以后使用Excel版本,则必须保存 文件的格式为.xlsm而不是.xlsx

    要删除UDF,请执行以下操作:

  • 如上所述打开VBE窗口
  • 清除代码
  • 关闭VBE窗口
  • 要使用Excel中的自定义项,请执行以下操作:

    =myfunction(A1)

    要了解有关宏的更多信息,请参阅:

    有关自定义项的详细信息,请参见:

    必须启用宏才能工作


    (注意:在工作表单元格中输入公式时,可能需要使用分号代替逗号)

    您可以创建自己的用户定义函数:

    Public Function getcolnumbers(r1 As Range, v As Variant, colid As String) As String
        Dim r As Range
    
        getcolnumbers = ""
        For Each r In r1
            If r.Value = v Then
                getcolnumbers = getcolnumbers & ";" & colid & r.Row
            End If
        Next r
        If Len(getcolnumbers) > 1 Then getcolnumbers = Mid(getcolnumbers, 2)
    End Function
    
    例如:

    用户定义函数(UDF)非常易于安装和使用:

  • ALT-F11将显示VBE窗口
  • ALT-I ALT-M打开一个新模块
  • 粘贴内容并关闭VBE窗口
  • 如果保存工作簿,则自定义项将与工作簿一起保存。 如果在2003年以后使用Excel版本,则必须保存 文件的格式为.xlsm而不是.xlsx

    要删除UDF,请执行以下操作:

  • 如上所述打开VBE窗口
  • 清除代码
  • 关闭VBE窗口
  • 要使用Excel中的自定义项,请执行以下操作:

    =myfunction(A1)

    要了解有关宏的更多信息,请参阅:

    有关自定义项的详细信息,请参见:

    必须启用宏才能工作



    (注意:在工作表单元格中输入公式时,可能需要使用分号代替逗号)

    不,您需要使用VBA编写一个-您尝试过吗?@MacroMan我正在尝试。我真的不熟悉宏我本来打算编辑你的问题,但是考虑到宏中也存在不一致性,我认为在这里指出它并让你编辑你自己的问题更为谨慎:在你的脑海中,列和行是颠倒的。列为字母(A、B、C等)并垂直排列,行为编号(1、2、3等)并水平排列。从概念上讲,这个问题没有缺陷,但将来如果你使用正确的答案,你会得到更好的答案vocabulary@RGA很抱歉。谢谢你指出无需道歉,只是想帮你得到最好的答案:)不,你需要用VBA写一个-你试过了吗?@MacroMan我正在尝试。我真的不熟悉宏我本来打算编辑你的问题,但是考虑到宏中也存在不一致性,我认为在这里指出它并让你编辑你自己的问题更为谨慎:在你的脑海中,列和行是颠倒的。列为字母(A、B、C等)并垂直排列,行为编号(1、2、3等)并水平排列。从概念上讲,这个问题没有缺陷,但将来如果你使用正确的答案,你会得到更好的答案vocabulary@RGA很抱歉。谢谢你指出不需要道歉,只是想帮你得到最好的答案:)嗨,这很有效。一个小问题。我正在另一个函数中使用结果。我检查了评估步骤。(我试图在getcolorcount函数中使用它
    =getcolorcount(“K21;K24;K28;W23)
    会导致错误。我应该将字符串转换为范围吗?@EchchamaNayak我不知道……问题可能是分号符号和逗号之间的差异notation@EchchamaNayakSine mu UDF()返回一组单元格地址,考虑将它封装在间接()函数中?在我的单元格中,用半冒号分隔,参数也是如此。它是有效的。一个小问题。我在另一个函数中使用结果。我检查了评价步骤。(我试着在GETCOLCONTULL函数<代码> = GETCOLLCOUNT中使用它。“K21;K24;K28;W23)导致错误。我是否应该将字符串转换为范围?@EchchamaNayak我不知道……问题可能是分号符号和逗号之间的差异notation@EchchamaNayakSIMUUDF()返回一个单元地址字符串,考虑将其封装在间接地址()中。我的工作表单元格中的函数??用分号分隔,参数也用分号分隔