2016-09-26 37 views
2

我在糟糕的主意描述英語sothat我無法找到該任務的解決方案,那麼我寫爲Excel哪個Excel的公式可以在沒有VBA 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 

定製UDF但我真的想知道本地功能相結合可以做到這一點或哪個公式可以做到這一點?

實施例: 我有5個細胞(A1:A5)與值是這樣的:

111 
112 
113 
114 
115 

和我在B1的字符串內容 「111,113,117,110」。 我寫的UDF在SUMPRODUCT使用這樣

=Sumproduct(--Arrcompare(A1:A5, B1)) in cell C1. 

它將返回符合我的條件是細胞總數。

有沒有人知道什麼公式可以做到這一點,而無需vba?

回答

2

這將做同樣的公式,你的UDF是:

=SUMPRODUCT(--ISNUMBER(SEARCH(A1:A5,B1))) 

但我會排除空單元格範圍內,這樣的範圍可以大一些額外的價值有所準備:

=SUMPRODUCT(ISNUMBER(SEARCH($A$1:$A$100,B1))*($A$1:$A$100<>"")) 
+0

謝謝你,我沒想到這個公式一樣,那麼我要假寫在複雜的功能,我壽不能使用哈哈。不能相信它的工作......哦,我的頭......(我發現UDF比本地結合速度快(搜索())...不知道爲什麼) – Sum

+0

+很好:) –

2

其實你可以使用COUNTIF爲:

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

另一個好:) –

+0

實際上公式不工作,我做了測試:D – Sum

+1

@Sum它確實工作 - 我也測試了它。 – Rory

0

與類似3210變體,但稍有不同:

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

enter image description here


類似與@Axel Richter,但也有一些差異:

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

enter image description here

插入式到和然後按Ctrl + + 輸入獲得式陣列{}

+0

公式數組會降低性能,除非它是MultiRange公式。我將用sumproduct + countif進行測試,搜索/查找方法比vba慢。謝謝 – Sum

+0

@Sum你問過公式,不管它是否比已經提供的變體有更好的性能,我只發佈了其他變體,因爲這些變體也應該在這裏,這就是爲什麼我已經指定這些變體與已經提供的類似。 – Vasily

1

如果數字並不總是3個位數,這個數組公式應該是更可靠的一點點,因爲它會在,111,113,117,110,,111,搜索:

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

或只是

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