【问题标题】:Excel formula to return a range matching a criteria, then COUNTIF the resultsExcel 公式返回匹配条件的范围,然后 COUNTIF 结果
【发布时间】:2016-06-04 21:03:27
【问题描述】:

我整天都在为此苦苦挣扎。我有以下工作正常的工作表。 用户输入 SUBJECT STATE,在本例中为肯塔基州的 KY。 下面有一个名为“FullCompDataSet”的表,有 3 列。 我需要从这些数据中做 2 件事(下面以黄色突出显示的输出):

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

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

B.返回每条记录的键。我有这个公式:

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

所有这些都运行良好,但现在不是简单地将主体状态与 St/Prov 匹配,而是有一个我需要匹配的兼容状态列表(底部以蓝绿色突出显示的示例列表 )。所以,我需要的新输出是:

A. 6(因为主题状态KY匹配KY、IN和TN状态的记录)

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

谁能建议我需要用于 A 和 B 的新公式?我尝试了 VLOOKUP/INDEX/MATCH、OFFSET、INDIRECT 的各种组合,但一直没能得到它。如果有更好的方法来发布此问题,我深表歉意,我仍在学习发布。谢谢!

FullCompDataSet Table

Many-To-Many State Compatibility Map

【问题讨论】:

  • 如果您使用 Visual Basic,这将很容易。虽然不确定公式
  • 呃,我忘了说我有“无 VBA”的限制。我想知道如果我将 Subject State 与 St/Prov 连接起来并在 FullCompDataset 表中添加一列来标记匹配项,是否可以做到这一点...
  • 我通过在每个表中添加一列来解决这个问题。我在多对多状态兼容性图中添加了一个连接的 SubjectState&CompState 列。然后我在我的 FullCompDataSet 表的每一行中添加了相同的连接 SubjectState&CompState 列。这样我的旧公式现在的工作方式相同,因为这 2 个新列是唯一的匹配,就像以前的单实体“ST/Prov”一样。

标签: excel match where formula vlookup


【解决方案1】:

在使用 VBA 之外,我会使用以下方法;它本质上是与您正在使用的算法不同的表格内算法和/或一组函数。它将迎合所请求匹配的变化尺寸,并且如您所见,它还具有可调节的输出设置。您基本上需要执行 7 个不同的功能集(比听起来容易)。我已将它们包含在图片中;每个颜色集都使用与注释中显示的相同的功能。该算法工作得很好,并且使用比 vlookup 更复杂的方法。我已经在更大、更复杂的数据集上使用了它。您还可以通过分配多个键/身份集使其适应传统词典的功能。

【讨论】:

  • 7.中的函数应该是=VLOOKUP(O3,$A$2:$D$12,2,FALSE)
  • 谢谢765tgs!!我喜欢这种创造力,我从来没有想过这样做,现在我学会了一种可以在其他地方使用的技术!
【解决方案2】:

如果你有最新版本的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 会将{} 放在公式周围。

TEXTJOIN 公式于 2016 年 2 月在 OFFICE 365 中引入。它生成一个兼容状态的字符串。 SEARCH 试图找到匹配的正是这个字符串。当它找到匹配项时,它被传递给外部公式。一个用于计数,一个用于找到正确的密钥。

【讨论】:

  • 谢谢,斯科特!我没有 Office 365,但我可能需要研究一下——我没有意识到有这么多新功能!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-15
  • 2017-06-13
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多