是的,有一种使用SUM()
,和使用数组公式的方法。IF()
COUNT()
您可以使用的基本公式是(假设您的顶部数组是A1:F6
,包括标题,因此数据位于A2:F6
):
{=SUM(IF($B$2:$F$2=$B2:$F2,1,0))/COUNT($B$2:$F$2)}
使用数组公式,您可以使IF()
函数返回 1 表示匹配,0 表示不匹配,迭代行中的每个元素。 SUM()
将匹配项相加,然后除以COUNT()
处理的单元格数,即可得出相似度指数。
上面的示例适用于示例中的顶部 USA/USA 单元格,您可以填写该单元格,但每个新对角线都需要调整以将固定行号更改为新行。所以英国专栏的顶部是:
{=SUM(IF($B$3:$F$3=$B3:$F3,1,0))/COUNT($B$3:$F$3)}
COUNT()
如果您事先知道有多少列/国家/地区,则可以将其删除。
注意:您不要键入花括号。当您完成输入公式后,您必须在编辑时按Ctrl- Shift-Enter以使它们出现并将公式视为数组公式。出于这个原因,这些公式通常称为CSE 公式(Ctrl-Shift-Enter)。
更新:
你可以用一个公式来完成,填充单元格,也可以使用INDIRECT()
and COLUMN()
。
{=SUM(IF(INDIRECT("$B$"&COLUMN(B2)):INDIRECT("$F$"&COLUMN(B2))=$B2:$F2,1,0))/COUNT(INDIRECT("$B$"&COLUMN(B2)):INDIRECT("$F$"&COLUMN(B2)))}
这利用了列号与行号相同的事实,提供了转置。
更新 2:
实际上,COUNT()
可以消除并SUM()
替换为,AVERAGE()
因为所有匹配项都是 1,均值是正确的值。
所以这适用于所有单元格:
{=AVERAGE(IF(INDIRECT("$B$"&COLUMN(B2)):INDIRECT("$F$"&COLUMN(B2))=$B2:$F2,1,0))}
更新 3:
如果您迫切需要在上对角线上不显示任何内容,制作下三角块,那么您可以使用IF()
包装上述公式,检查列是否大于行,并在这种情况下使单元格空白。然后,您可以用公式填充整个块,它看起来正确,无需删除。
{=IF(COLUMN(B2)>ROW(B2),"",AVERAGE(IF(INDIRECT("$B$"&COLUMN(B2)):INDIRECT("$F$"&COLUMN(B2))=$B2:$F2,1,0)))}