【问题标题】:Dynamic Checklists with Multiple Criteria具有多个标准的动态清单
【发布时间】:2020-03-09 15:01:40
【问题描述】:

我有一个动态清单,可以根据多个标准更改显示的问题。它有效,但我希望有一种更有效的方法,尤其是在增加标准的情况下。

例子:

假设有 2 个条件可以是“Y”或“N”。检查表 A 上的参数设置为只显示 Criteria1=Y 和 Criteria2=N 的问题。

问题 1 是 [Y,N],应该显示出来。

Question2 不是 [Y,N] 并且不应显示。

问题 3 不是 [Y,N],不应显示。

问题 4 是 [Y,N],应该显示出来。

因此,清单 A 显示:

问题1

问题4

一个接一个,例如 Question2 和 Question3 不存在。

我目前使用辅助列计数(参数匹配),用于每种可能性(Y/Y、Y/N、N/Y、N/N)。然后对每一行进行查找。 (在上面的示例中,对于清单 A 中的第二个问题,它会根据“2”在“是/否”列上进行查找,并为第二个“显示”问题提取 Question4)。

效果很好,可以根据参数立即“制造”/更改 200 行清单。但是,我希望有一种比创建列来计算所有可能组合更好的方法。

是否有一些公式组合可以确定 Y/N 的第二个组合是第 4 行?这几乎就像 => COUNTIFS(for specified parameters) = 2 是哪一行?

也许是行/计数组合?一些数组公式/SUMPRODUCT?

【问题讨论】:

  • 能否请您展示一些您的代码?
  • 没有任何代码,只有 Excel 函数(主要是查找函数)。它更多地是关于结构,(使用帮助列来确定多个条件匹配计数)。我正在寻找一种优雅的方法来确定第 n 个匹配的位置(多个标准),它不需要帮助列。好像 SUMPRODUCT 应该可以做到,但我还没弄清楚怎么做。

标签: dynamic lookup


【解决方案1】:

我使用 INDEX、SMALL 和 COUNTIFS 解决了这个问题:

IF(A13=0,"",INDEX(MAIND,SMALL(IF(COUNTIFS(A13,INDEX(MAIND,,MATCH(A13,NCT,0))),B13,INDEX(MAIND,,MATCH(B13, NCT,0)),C13,INDEX(MAIND,,MATCH(C13,NCT,0)),D13,INDEX(MAIND,,MATCH(D13,NCT,0))),BaseQuestions!$A$1:$A$316 ,""),COUNTIF(B$12:B13,B13))+ROW(CAQ)-1,COLUMN(IQ)))

参数位于 A、B、C 和 D 列中,从第 13 行开始。MAIND 是一个范围名称,其中存在问题和包含/排除切换。 NCT 是用于确定要查看 MainD 中哪一列的标题。 CAQ 是问题列表的顶部。 IC 是包含问题的列。

COUNTIFS 计算 MainD 中切换列表所有与 A、B、C 和 D 列中的参数匹配的行。切换列表中的每一列都包含参数值(如果应该显示该问题)或“xx ", (实际上可以是参数值的任何)。 Small 函数然后选择与所有标准匹配的第 n 个问题(A-D 中的参数),其中 n 是 A-D 匹配中的参数数。因此,在动态问卷的第 9 行中,它显示了 MainD 中第 9 行与 A-D 匹配的 MainD 行中的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-30
    • 2020-03-25
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    相关资源
    最近更新 更多