Excel 公式到 return 匹配条件的范围,然后对结果进行 COUNTIF
Excel formula to return a range matching a criteria, then COUNTIF the results
我整天都在为此苦苦挣扎。我有以下 sheet 工作正常。
用户输入 SUBJECT STATE,在本例中 KY 代表肯塔基州。
下面有一个名为 table 的 "FullCompDataSet",有 3 列。
我需要根据这些数据做两件事(下面以黄色突出显示的输出):
一个。计算 FullCompDataSet 中 "ST/Prov" 与 SUBJECT STATE 匹配的记录数。我有这个公式:
=COUNTIF(FullCompDataSet[ST/Prov],SubjectStateAbbreviation)
乙。 Return 每条记录的Key。我有这个公式:
{=SMALL(IF(FullCompDataSet[ST/Prov]=SubjectStateAbbreviation,FullCompDataSet[Key]),ROW()-18)}
所有这些都工作正常,但现在不是简单地将主题状态与 St/Prov 匹配,而是我有一个我需要匹配的兼容状态列表(底部突出显示的示例列表蓝绿色)。所以,我需要的新输出是:
一个。 6(因为主题状态 KY 匹配状态 KY、IN 和 TN 中的记录)
乙。 413, 420, 434, 418, 404, 410
任何人都可以建议我需要用于 A 和 B 的新公式吗?我已经尝试了 VLOOKUP/INDEX/MATCH、OFFSET、INDIRECT 的各种组合,但一直无法得到它。如果有更好的方法 post 这个问题,我很抱歉,我仍在学习 post。谢谢!
除了使用 VBA 之外,我会使用以下方法;它本质上是与您正在使用的算法和/或函数集不同的 in-sheet 算法。它将满足请求匹配的不断变化的尺寸,并且如您所见,它还具有可调节的输出集。您基本上需要执行 7 个不同的功能集(比听起来容易)。我把它们包括在图片中;每个颜色集都使用与评论中所示相同的功能。该算法运行良好,使用的并不比 vlookup 更复杂。我在更大更复杂的数据集上使用了它。您还可以通过分配多个 key/identity 集来使其像传统词典一样发挥作用。
如果你有最新版本的office 365你可以使用下面两个公式来得到你想要的:
计数:
=SUM(IF(ISNUMBER(SEARCH(FullCompDataSet[ST/Prov],TEXTJOIN(" ",TRUE,IF(CompatState[State]=SubjectStateAbbreviation,CompatState[Compatible States],"")))),1,0))
对于小号:
=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 将在公式周围放置 {}
。
2016年2月,OFFICE 365引入了TEXTJOIN公式。它使一个字符串的状态兼容。 SEARCH 试图找到匹配项的正是这个字符串。当它找到匹配项时,它会传递给外部公式。一个用于计算,一个用于找到正确的密钥。
我整天都在为此苦苦挣扎。我有以下 sheet 工作正常。 用户输入 SUBJECT STATE,在本例中 KY 代表肯塔基州。 下面有一个名为 table 的 "FullCompDataSet",有 3 列。 我需要根据这些数据做两件事(下面以黄色突出显示的输出):
一个。计算 FullCompDataSet 中 "ST/Prov" 与 SUBJECT STATE 匹配的记录数。我有这个公式:
=COUNTIF(FullCompDataSet[ST/Prov],SubjectStateAbbreviation)
乙。 Return 每条记录的Key。我有这个公式:
{=SMALL(IF(FullCompDataSet[ST/Prov]=SubjectStateAbbreviation,FullCompDataSet[Key]),ROW()-18)}
所有这些都工作正常,但现在不是简单地将主题状态与 St/Prov 匹配,而是我有一个我需要匹配的兼容状态列表(底部突出显示的示例列表蓝绿色)。所以,我需要的新输出是:
一个。 6(因为主题状态 KY 匹配状态 KY、IN 和 TN 中的记录)
乙。 413, 420, 434, 418, 404, 410
任何人都可以建议我需要用于 A 和 B 的新公式吗?我已经尝试了 VLOOKUP/INDEX/MATCH、OFFSET、INDIRECT 的各种组合,但一直无法得到它。如果有更好的方法 post 这个问题,我很抱歉,我仍在学习 post。谢谢!
除了使用 VBA 之外,我会使用以下方法;它本质上是与您正在使用的算法和/或函数集不同的 in-sheet 算法。它将满足请求匹配的不断变化的尺寸,并且如您所见,它还具有可调节的输出集。您基本上需要执行 7 个不同的功能集(比听起来容易)。我把它们包括在图片中;每个颜色集都使用与评论中所示相同的功能。该算法运行良好,使用的并不比 vlookup 更复杂。我在更大更复杂的数据集上使用了它。您还可以通过分配多个 key/identity 集来使其像传统词典一样发挥作用。
如果你有最新版本的office 365你可以使用下面两个公式来得到你想要的:
计数:
=SUM(IF(ISNUMBER(SEARCH(FullCompDataSet[ST/Prov],TEXTJOIN(" ",TRUE,IF(CompatState[State]=SubjectStateAbbreviation,CompatState[Compatible States],"")))),1,0))
对于小号:
=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 将在公式周围放置 {}
。
2016年2月,OFFICE 365引入了TEXTJOIN公式。它使一个字符串的状态兼容。 SEARCH 试图找到匹配项的正是这个字符串。当它找到匹配项时,它会传递给外部公式。一个用于计算,一个用于找到正确的密钥。