Excel 计算单元格值是否为命名范围的一部分

Excel 计算单元格值是否为命名范围的一部分,excel,vba,Excel,Vba,我有一个命名范围(“类别”),其中包含例如水果、蔬菜、苏打水等。然后我有3个其他命名范围,用于类别中的每个条目。例如,我会吃苹果、桔子、葡萄,并将其命名为“水果”。现在我想评估一个长长的条目列表,看看它们是否属于每个类别。例如,我想评估可口可乐是否是水果系列的一部分。出于同样的原因,在Excel中使用简单公式时,我无法实现这一点。我尝试过使用下面的函数,但也不起作用。如果有人能帮忙,我将不胜感激 Function RangeInCell(rngCellToCheck As Range,

我有一个命名范围(“类别”),其中包含例如水果、蔬菜、苏打水等。然后我有3个其他命名范围,用于类别中的每个条目。例如,我会吃苹果、桔子、葡萄,并将其命名为“水果”。现在我想评估一个长长的条目列表,看看它们是否属于每个类别。例如,我想评估可口可乐是否是水果系列的一部分。出于同样的原因,在Excel中使用简单公式时,我无法实现这一点。我尝试过使用下面的函数,但也不起作用。如果有人能帮忙,我将不胜感激

    Function RangeInCell(rngCellToCheck As Range, rngRangeToCheckWith As Range) As Boolean

        On Error Resume Next
        RangeInCell = Not Application.Intersect(rngCellToCheck, rngRangeToCheckWith) Is Nothing
        Err.Clear: On Error GoTo -1: On Error GoTo 0

    End Function

只要你的范围是合格的,我认为这应该在多个工作簿之间工作。未经测试

Function RangeInCell(rngCellToCheck As Range, rngRangeToCheckWith As Range) As Boolean

    Dim ret as Variant
    ret = Application.Match(rngCellToCheck, rngRangeToCheckWith, 0)

    RangeInCell = (Not IsError(ret))

End Function
作为工作表功能,我认为这也应该做到(在单个工作表/工作簿中测试)


您只是想检查项目是否存在,还是想返回匹配的类别名称?您的函数是寻找两个范围对象的交集,而不是对值做任何处理。我建议你用错(火柴(“可口可乐”,水果,0),假的)。小故障医生:不,不幸的是,那不起作用。然而,我必须将苹果和水果与其他细胞联系起来。我必须在不同的工作表中输入ISNUMBER公式,而实际命名的范围是不同的。我不知道这是否是我问题的原因。或者:
=if(iError(匹配(“可口可乐”,水果,0)),FALSE,TRUE)
一个简单的countif=COUNTIF(水果,“可口可乐”)>0
=IF(ISERROR(MATCH("coca-cola",Fruits,0)),FALSE,TRUE)