这些公式可以简化吗?为什么INDIRECT函数在MATCH公式中的ISBLANK测试中似乎不起作用?

以太网战

概要

我需要一个数组公式,该公式需要从Sheet1获取一定长度的数据行。对于该行,在每个不为空白的列中,我需要获取该列的Sheet1标头值,并将该数据显示在Sheet2上的连续行中(该行的单元格之间没有任何空格)。

背景

我在工作表1上有一张数据表(雇员和行业证书,失效日期是该表的单元格数据),电子表格正在跟踪的每位雇员都有一行。认证是专栏。

我们正在使用此信息链接到ID徽章打印机软件(Bodno Silver),在此我们仅限于将数据列链接到特定的文本框。

问题在于并非每个人都拥有所有认证。这些行上用空格隔开,以分隔每位员工确实拥有的证书。在徽章软件模板中设置所需的文本框(每个文本框都链接到特定列)时,我很快意识到,由于并不是每个人都获得每份认证,如果我们按原样使用数据,则在它们之间会有很多奇怪的空白。列出的认证,而不是连续的列表。

我做了什么

我对此的解决方案(除了“使用更好的软件”之外,如果有人知道的话,我会向更好的人开放),是创建一个新的工作表和数组公式,除了我和id打印机,没人会使用软件。该工作表将具有一个相似的数据表,该数据表将在到期日期之间散布有空白单元格的数据行,并将其中具有日期的单元格的匹配列标题放入具有相同最大长度的连续行中(消除了空白单元格) )。

从本质上讲,这将使我能够规避徽章软件的限制,并且每个文本框都是MatchCert1,MatchedCert2,MatchedCert3等,最高可达原始的最大证书数量。

图片可能比我的文字更好地解释了我要做什么:

Sheet1(来源)

工作表1

Sheet2(结果)

工作表2

数组公式

我做了一段时间。我认为这将是一个简单的INDEX,MATCH,ISBLANK公式(我可以使用适当的相对和绝对单元链接来创建),然后扩展到整个页面,变成巫婆狩猎,而我为所有这些为自己的罪过祈祷可能是圣洁的。还有很多谷歌搜索...。我很快意识到这可能毕竟不是那么简单。

最后,我得出以下两个数组公式,以正确显示我要做什么:

培训科第一栏

{=IFERROR(INDEX(Sheet1!$E$2:$P3,1,MATCH(FALSE,ISBLANK(Sheet1!E3:Q3),0)),"")}

(足够容易,对吗?我是这么认为的...)

在对此进行思考之前,我一直在努力思考如何使公式具有通用性,以便可以在整个表格中使用它。

我只是公开发布以下内容而感到肮脏,但是这里...

第二列到最后一列的数组公式

{=IFNA(INDEX(INDIRECT(ADDRESS(ROW($E$2),(MATCH(E3,Sheet1!$2:$2,0)+1),1,1, "Sheet1")&":"&ADDRESS(ROW(E3),COLUMN($Q3),1)),1,MATCH(FALSE, ISBLANK(INDEX(INDIRECT("Sheet1!"&ADDRESS(ROW(E3),(MATCH(E3,Sheet1!$2:$2,0)+1),1)&":"&ADDRESS(ROW(E3),COLUMN($Q3),1)),0,0)), 0)),"")}

(请不要报警…)

[ninja edit]尽管此数组公式适用于从第二列到最后一列的结果,但如果结果范围后没有空白列,则该列公式将不起作用。实际的电子表格具有水平运行的4个不同的认证组,但是我能够轻松地在另一张表的相应数据中添加一个空白列,因此我就放手了。我也想给别人一个答案,以解决为什么在这里也是这种情况[/ edit]

结果

第一个数组公式以及使用ISBLANK的INDEX MATCH非常简单。

对我来说,最大的问题是,为什么第二个数组公式需要嵌套在ISBLANK函数内部的附加INDEX函数,所以让我连续几天疯了。

在拆解函数并进行试验时,我意识到,如果ISBLANK函数内部具有任何INDIRECT引用,而ISBLANK函数本身就是MATCH函数内部的对象,则匹配的结果始终为1:

{=MATCH(FALSE,ISBLANK(INDIRECT("$E3:$Q3")), 0)}

上面的ALWAYS返回1,但是如果我将范围显式放入,该函数将正常工作这不是我的选择,因为我需要使用上一个单元格的地址动态返回比赛的开始位置。

但是,添加INDEX函数(列和行值为0)以封装INDIRECT函数可提供正确的答案。我只是通过反复试验弄清楚了这一点。

问题

可以让更多知识的人让我知道是什么导致了这种现象吗?

作为一个更广泛的问题,考虑到我仅限于使用公式(不使用VBA),我还想知道我是否以错误的方式进行此操作,或者是否有一种更简单的方法来完成此操作,而又没有这种庞然大物式?

我知道这张纸可能会在一年内需要维护-祝自己好运!

斯科特·克莱纳(Scott Craner)

将此放入E3,上下复制

=IFERROR(INDEX(Sheet1!$2:$2,AGGREGATE(15,6,COLUMN(INDEX($E:$P,MATCH($C3,Sheet1!$C:$C,0),0))/(INDEX(Sheet1!$E:$P,MATCH($C3,Sheet1!$C:$C,0),0)<>""),COLUMN(A:A))),"")

至于为什么您的公式不起作用,它太复杂了以至于无法解析。请注意,除非工作表是变量,否则应尽可能避免INDIRECT。INDEX几乎总是可以代替它使用。

INDIRECT和ADDRESS都是易失性函数。每次Excel重新计算时,易失函数都会重新计算,从而导致许多不必要的计算。

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么 CSE 公式在 NameManager 中不起作用,但在单元格中起作用?

为什么VLOOKUP公式导致HYPERLINK公式不起作用?

在Excel中,正是为什么EOMONTH()(及其他)在数组公式中不起作用?

为什么我在我的 r 代码中创建的公式不起作用

手动创建的公式似乎不起作用……但为什么呢?

公式在VBA中不起作用

为什么集群似乎在Spark Cogroup函数中不起作用

为什么函数 lsqcurvefit 在 Matlab 2015b 中似乎不起作用?

试图理解python,为什么这个函数不起作用?[添加公式]

为什么我的SUMIF公式不起作用?

为什么这个DAX公式不起作用?

为什么我的Google应用QUERY公式不起作用?

为什么这个公式不起作用?它不断出现公式解析错误

Sympy 简化欧拉公式不起作用

公式不起作用

我可以使用 Excel INDIRECT 函数运行包含在引用单元格中的文本的公式吗?

为什么URL Hepler在测试中不起作用?

为什么方法验证在测试中不起作用?

为什么这些 getter/setter 中的 1 个起作用而其他的不起作用

有人可以向我解释为什么绑定方法在这些示例中不起作用

当修剪不起作用时,如何从Excel单元格中删除空格的公式是什么?

日期比较在Excel公式中不起作用

数组公式中VLOOKUP和IMPORTRANGE的组合不起作用

python中的数学公式不起作用

按查询公式中的名称分组不起作用

通过应用程序脚本在Google表格中引用查询公式的单元格值似乎不起作用

为什么我在构造函数中的绑定不起作用?

为什么此.slideToggle函数在jQuery中不起作用?

为什么默认参数在模板函数中不起作用?