Excel公式返回一个匹配条件的范围,然后COUNTIF结果

我一整天都在苦苦挣扎。 我有以下工作表很好。 用户inputSUBJECT STATE,在这种情况下肯塔基州的KY。 下面有一个名为“FullCompDataSet”的表,有3列。 我需要从这些数据中做两件事( 输出如下所示的黄色 ):

A.统计“ST / Prov”与SUBJECT STATE匹配的FullCompDataSet中的logging数。 我有这个公式:

=COUNTIF(FullCompDataSet[ST/Prov],SubjectStateAbbreviation) 

B.为每个logging返回密钥。 我有这个公式:

 {=SMALL(IF(FullCompDataSet[ST/Prov]=SubjectStateAbbreviation,FullCompDataSet[Key]),ROW()-18)} 

所有这一切都运行良好,但现在,而不是简单地匹配主体州的圣/ Prov,我有一个兼容的国家,我需要匹配的列表(底部突出显示在蓝绿色的例子列表 )。 所以,我需要的新产出是:

A. 6(因为主题状态KY匹配KY,IN和TN状态中的logging)

B.413,420,434,418,404,410

任何人都可以build议我需要用于A和B的新公式? 我已经尝试过各种VLOOKUP / INDEX / MATCH,OFFSET,INDIRECT的组合,但一直没能得到它。 我很抱歉,如果有更好的方式发布这个问题,我还在学习发布。 谢谢!

FullCompDataSet表

多对多状态兼容性图

在使用VBA之外,我会使用下面的方法; 它实质上是一个不同的表内algorithm或一组函数,你正在使用的。 它将迎合要求的比赛尺寸的变化,你也看到它也有可调的输出设置。 你基本上需要执行7个不同的function集(比听起来容易)。 我已经把他们包括在图片中了。 每种颜色都使用与注释中所示相同的function。 algorithm工作得很好,并没有比查找更复杂。 我用它在更大和更复杂的数据集上。 您还可以通过分配多个密钥/身份集来使其适应像传统字典一样的function。 在这里输入图像说明

如果您有最新版本的Office 365,则可以使用以下两个公式来获得所需内容:

对于伯爵来说:

 =SUM(IF(ISNUMBER(SEARCH(FullCompDataSet[ST/Prov],TEXTJOIN(" ",TRUE,IF(CompatState[State]=SubjectStateAbbreviation,CompatState[Compatible States],"")))),1,0)) 

对于SMALL:

 =SMALL(IF(ISNUMBER(SEARCH(FullCompDataSet[ST/Prov],TEXTJOIN(" ",TRUE,IF(CompatState[State]=SubjectStateAbbreviation,CompatState[Compatible States],"")))),FullCompDataSet[Key]),ROW(1:1)) 

两者都是数组公式,并且在退出编辑模式时必须用Ctrl-Shift-Enter确认。 如果做得正确,Excel将在公式周围放置{}

TEXTJOIN公式是在2016年2月在OFFICE 365中引入的。它使得单个string的状态是兼容的。 这是SEARCH试图find匹配的string。 当它find一个匹配它传递给外部公式。 一个数和一个find正确的密钥。

在这里输入图像说明