繁体   English   中英

没有VBA UDF,哪个Excel公式可以执行此操作?

[英]Which Excel's formula can do this without VBA UDF?

我不好用英语描述想法,因此找不到解决方案,然后为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中有一个字符串内容“ 111,113,117,110 ”。 我写了像这样在Sumproduct中使用的UDF

=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<>""))

您实际上可以使用COUNTIF:

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

如果数字不总是3位,则此数组公式应该更可靠一点,因为它将在,111,113,117,110,搜索,111,

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

要不就

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

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

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

在此处输入图片说明


@Axel Richter相似,但也有一些区别:

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

在此处输入图片说明

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM