哪个Excel';没有VBA自定义项,s公式可以做到这一点吗?

哪个Excel';没有VBA自定义项,s公式可以做到这一点吗?,vba,excel,excel-formula,Vba,Excel,Excel Formula,我不擅长用英语描述想法,所以我找不到这个任务的解决方案,然后我为excel编写了一个自定义UDF Public Function ArrCompare(Rng1 As Range, Rng2 As Range) As Variant Dim vR1, strC As String Dim i As Long, Ui As Long vR1 = Rng1.Value2 strC = Rng2.Cells(1, 1).Value2 Ui = UBound(vR1) For i = 1 To Ui

我不擅长用英语描述想法,所以我找不到这个任务的解决方案,然后我为excel编写了一个自定义UDF

Public Function ArrCompare(Rng1 As Range, Rng2 As Range) As Variant
Dim vR1, strC As String
Dim i As Long, Ui As Long
vR1 = Rng1.Value2
strC = Rng2.Cells(1, 1).Value2
Ui = UBound(vR1)
For i = 1 To Ui
    If InStr(1, strC, vR1(i, 1), vbBinaryCompare) > 0 Then vR1(i, 1) = True Else vR1(i, 1) = False
Next
ArrCompare = vR1
End Function
但我真的想知道什么本机合并函数可以做到这一点,或者哪个公式可以做到这一点

例如: 我有5个单元格(A1:A5),其值如下:

111
112
113
114
115
我在B1中有一个字符串内容“
1111111317110
”。 我写的UDF在Sumproduct中使用如下

=Sumproduct(--Arrcompare(A1:A5, B1)) in cell C1.
它将返回符合我的条件的单元格总数


有人知道没有vba,什么公式可以做到这一点吗?

与您的UDF相同的公式是:

=SUMPRODUCT(--ISNUMBER(SEARCH(A1:A5,B1)))
但我会排除范围中的空单元格,以便范围可以更大,以便为附加值做好准备:

=SUMPRODUCT(ISNUMBER(SEARCH($A$1:$A$100,B1))*($A$1:$A$100<>""))
=SUMPRODUCT(ISNUMBER(搜索($A$1:$A$100,B1))*($A$1:$A$100“)

您实际上可以使用COUNTIF:

=SUMPRODUCT(COUNTIF(B1,"*"&A1:A5&"*"))

@Rory
变体类似,但略有不同:

{=SUM(COUNTIF(B1,"*"&A1:A5&"*"))}


与Axel Richter类似,但也有一些不同:

{=COUNT(SEARCH(A1:A5,B1,1))}


将公式插入,然后按住Ctrl+Shift+Enter键以获取公式数组
{}

如果数字不总是3位数字,则此数组公式应该更加可靠,因为它将在
中搜索
,111,
,11111 3117110,

{=SUM(1-ISERR(FIND(","&A1:A5&",",","&B1&",")))}
或者只是

=SUMPRODUCT(1-ISERR(FIND(","&A1:A5&",",","&B1&",")))

谢谢你们,我也考虑过这个公式,然后我用复变函数写了它,我认为它不能用,哈哈。真不敢相信它能起作用。。。哦,我的头。。。(我发现UDF比native combine Isnumber(search())快了一点…还不知道为什么)+做得很好:)好吧,我为你抓拍了屏幕截图,可能我们之间发生了什么事lol@我担心这个网站被工作政策封锁了。这里有一个指向工作工作簿的链接:@Rory OMG,lol,下载的工作簿工作,但我电脑中的相同数据不工作。。。我发现“数字,数字,数字”会把excel和coma混淆为数字格式。。。干得好,RoryI认为这种方法在所有公式解中具有最好的性能。与UDF相比,它仍然需要120%的计算时间,但我会接受它。1。公式数组将降低性能,除非它是多范围公式。我将使用sumproduct+countif进行测试,搜索/查找方法比vba慢。thank@Sum您已经询问了公式,无论它是否比已经提供的变体具有更好的性能,我发布其他变体只是因为这些变体也应该在这里,这就是为什么我指定这些变体与已经提供的变体类似。