2017-01-03 125 views
1

我正在尋找一個Excel函數,它比較兩個單元格並返回這兩個單元格之間匹配字符的數量。在excel中比較兩個單元格並返回匹配的字符數

我希望函數忽略的情況下,即A = A,B = B等

實施例:

A1 = abcdefB1 = Afcblm .. C1 = 4(匹配字符數= 4(afcb

函數應該比較兩個單元格中的所有字符,然後返回每個字符h在兩個單元中都存在,而不管順序如何。

我已創建下面

=SUM(IFERROR(IF(MID(A1, ROW(INDIRECT("$1:$" & LEN(A1))), 1)=MID(B1, ROW(INDIRECT("$1:$" & LEN(B12))), 1), 1, 0), 0)) 

函數時我應用此實施例C1 = 1上述和相信這個問題是由於該功能順序地比較字符它不工作。

+0

A1可以包含同一個字母的多個實例嗎?例如A1 = abacdef? – Ben

+0

那裏;在上面的公式中有一個錯誤 - Len(B12)代替LEN(B1)。但它仍然只能比較處於相同位置的字母,例如axbx和艾比會給2但abcd和dcba會給0 –

回答

2

這將工作,如果使用按Ctrl + + 輸入進入,而不是僅僅輸入

=SUM(IF(ISERROR(FIND(MID(A1,ROW(INDIRECT("$A$1:$A$"&LEN(A1))),1),B1)),0,1)) 

你就會知道,如果它被正確輸入,因爲花括號將被要麼放在公式邊上的公式如下:{=...}

它通過打破單元格中的文本A1成單個字母

a 
b 
c 
d 
e 
f 

它隨後執行FIND,以檢查是否字母可在細胞B1,返回1或0

1 
1 
1 
0 
0 
1 

找到最後求和陣列完成處理並返回4根據需要


更新 根據Tom Sharpe的建議作 - 爲不區分大小寫使用 SEARCH代替 FIND

=SUM(IF(ISERROR(SEARCH(MID(A1,ROW(INDIRECT("$A$1:$A$"&LEN(A1))),1),B1)),0,1)) 
+0

好的答案。 OP可能希望將FIND更改爲SEARCH以忽略大小寫。 –

+0

謝謝 - 我更新了包含此建議的答案 – CallumDA

0

只是爲了完整性,這將是這樣做的另一種方式。它強制將A1中的每個字母與B1中的所有字母進行比較。

=SUM(IFERROR(IF(MID(A1, ROW(INDIRECT("$1:$" & LEN(A1))), 1)=TRANSPOSE(MID(B1, ROW(INDIRECT("$1:$" & LEN(B1))), 1)), 1, 0), 0)) 

如果你想找到多少個不同的字母分別在兩個小區中,你可以使用這個

=SUM(ISNUMBER(SEARCH(MID("abcdefghijklmnopqrstuvwxyz",ROW($1:$26),1),A1))*ISNUMBER(SEARCH(MID("abcdefghijklmnopqrstuvwxyz",ROW($1:$26),1),B1))) 

他們兩個都是數組公式,並必須與按Ctrl進入輸入

相關問題