【问题标题】:Return cell that contains all of these things返回包含所有这些内容的单元格
【发布时间】:2016-03-10 00:55:21
【问题描述】:

我已经为此苦苦挣扎了几天,所以也许有人可以提供帮助。如果没有,我想我将不得不重新考虑我的策略。
我正在尝试在我们工厂的机器上设置一个切割表,它还可以给出机器上的估计时间(基于数据库,我们需要这个来计算成本),我的基本想法是这样的:

对于一项工作,用户选择机器、材料、组件以及该工件所需的不同切割(孔的形状和尺寸、组件的边缘等),然后工作表返回估计值基于这些变量的时间。
棘手的一点:我将数据库设置为一个包含每个变量组合的长列表,如下所示:Machine 1 - Wood - Post - 14mm holes - etc.

但是用户可能并不总是将变量放在相同的顺序,从而阻止使用 CONCATENATE 和 VLOOKUP,所以我试图找到一个公式来查找包含用户选择并返回的项目的单元格关联单元格的值。基本上是一个 VLOOKUP,它在其中搜索位,而不是一个精确的字符串。

如果指定单元格包含列表中的所有项目,我有这个公式返回 True 或 False:

=SUMPRODUCT(--ISNUMBER(SEARCH(things,A1)))=COUNTA(things)

但我不知道如何检查数据库中的所有组合。

提前致谢!

【问题讨论】:

  • 开发一个用户表单,以便您可以控制数据输入。

标签: excel formulas


【解决方案1】:

听起来您需要某种数据库后端和大量使用通配符的查询,但也许这可以帮助您入门。

以M2为标准公式,

=INDEX(F:F,AGGREGATE(15,6,ROW(G$1:INDEX(G:G,MATCH("zzz",G:G)))/
                         (ISNUMBER(SEARCH(I2,G$1:INDEX(G:G,MATCH("zzz",G:G))))*
                          ISNUMBER(SEARCH(J2,G$1:INDEX(G:G,MATCH("zzz",G:G))))*
                          ISNUMBER(SEARCH(K2,G$1:INDEX(G:G,MATCH("zzz",G:G))))*
                          ISNUMBER(SEARCH(L2,G$1:INDEX(G:G,MATCH("zzz",G:G))))), 1))

  

AGGREGATE function 计算四个 SEARCH functions 并返回匹配所有四个的第一行。

【讨论】:

  • 我把它放在我的床单上,让它适合我的需要,效果很好!谢谢!
【解决方案2】:

=IFERROR(1/(1/MAX(IF(MMULT(IFERROR(SEARCH(D2:G2,A2:A6),-(10^6)),TRANSPOSE(D1:G1<>"")*1)>0,
B2:B6))),"Combination not found")

作为数组公式(输入时按ctrl + shift + enter而不是enter)。

这里的假设是 A 列中的条目是唯一的,并且 A 列中每个条目中的项目也是唯一的(即没有“a - b - b - d”)。用户提供的物品也必须是唯一的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多