Arrays Excel索引匹配小-公式仅在手动模式下工作

Arrays Excel索引匹配小-公式仅在手动模式下工作,arrays,excel,indexing,excel-formula,vba,Arrays,Excel,Indexing,Excel Formula,Vba,我正试图根据我的需要调整一个公式,但出于某种原因,我似乎只能在手动计算模式下工作。如果选择自动模式,则公式每行返回0 在essense中,公式根据表DIL-2018-08-14第H列中匹配的第I列中的蓝色关键字返回所有匹配项。只有在手动模式下,并且只有在对每个单元格进行手动重新计算后,公式才能正常工作 有没有人可以建议,是否有必要避免这种情况,并使其在自动模式下工作 公式是: =IFERROR(INDEX('DIL-2018-08-14'!$H$9:$H$502,SMALL(IF(ISNUMBE

我正试图根据我的需要调整一个公式,但出于某种原因,我似乎只能在手动计算模式下工作。如果选择自动模式,则公式每行返回0

在essense中,公式根据表DIL-2018-08-14第H列中匹配的第I列中的蓝色关键字返回所有匹配项。只有在手动模式下,并且只有在对每个单元格进行手动重新计算后,公式才能正常工作

有没有人可以建议,是否有必要避免这种情况,并使其在自动模式下工作

公式是:

=IFERROR(INDEX('DIL-2018-08-14'!$H$9:$H$502,SMALL(IF(ISNUMBER(SEARCH(LEFT(I8,FIND(" ",I8)-1),'DIL-2018-08-14'!$H$9:$H$502)),ROW('DIL-2018-08-14'!$H$9:$H$502)-ROW('DIL-2018-08-14'!$H$9)+1),COUNTIF($J$7:J8,"*"&LEFT(I8,FIND(" ",I8)-1)&"*")+1)),"")

以下是您自己修复的步骤:

  • 将整个公式更改为硬编码值,如下所示:
=IFERROR(索引('DIL-2018-08-14'!$H$9:$H$502,1,1),”)

  • 检查它是否工作

  • 开始重新构建公式,直到它失败,用较少的硬编码值逐步构建解决方案

  • 看看哪里失败了
  • 想一个解决办法

我终于成功了!这是工作公式,以防任何人需要它。我将COUNTIF替换为静态列I中蓝色关键字的出现次数之和,这将重置每个新关键字的计数器

=IFERROR(INDEX(DIL!$H$9:$H$503,SMALL(IF(ISNUMBER(SEARCH(LEFT(I8,FIND(" ",I8)-1),DIL!$H$9:$H$503)),ROW(DIL!$H$9:$H$503)-ROW(DIL!$H$9)+1),SUM(--(ISNUMBER(SEARCH(LEFT(I8,FIND(" ",I8)-1),$I$6:I8)))))),"")

我认为这是一个数组,所以您是否按CTRL+SHIFT+Enter键?似乎COUNTIF正在自身循环,这导致了问题。新的问题现在仍然存在-如何增加小函数的k参数(当前使用COUNTIF),以便它在从1开始的每个新的蓝色关键字匹配上重置?此外,您可以突出显示公式的部分(它们本身作为公式存在)并按F9查看结果,因此
=if(a1:a10=“a”,行(a1:a10))
将显示为
{1,5,9}
如果a1,5,9是“a”,谢谢你的好主意。按照这种方法,我发现COUNTIF本身在循环,这导致了问题。现在的新问题是-如何增加小函数的k参数(当前使用COUNTIF),以便它在从1开始的每个新的蓝色关键字匹配上重置?或者我可以通过获得匹配的总数,使其以-1递增。@AntonAndonov-很高兴你能管理它。关于新问题,试着做一个最小的、完整的、可验证的例子,然后再问一遍-