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正确的密钥。