筛选筛选条件,然后在Excel中的countif语句中应用

筛选筛选条件,然后在Excel中的countif语句中应用,excel,vba,excel-formula,Excel,Vba,Excel Formula,我有一个筛选条件表,如下所示: +----------+----------+------+------+------+ | Category | SpecName | Spec | Pass | Fail | +----------+----------+------+------+------+ | A | S1 | 3 | | | | A | S2 | 4 | | | | B

我有一个筛选条件表,如下所示:

+----------+----------+------+------+------+ | Category | SpecName | Spec | Pass | Fail | +----------+----------+------+------+------+ | A | S1 | 3 | | | | A | S2 | 4 | | | | B | S1 | 5 | | | | C | S1 | 2 | | | +----------+----------+------+------+------+ +----------+----+----+ | Category | S1 | S2 | +----------+----+----+ | A | 5 | 3 | | B | 4 | | | A | 5 | 5 | | C | 2 | | | A | 2 | 6 | +----------+----+----+ +----------+----------+------+------+------+ |类别|规格名称|规格|通过|失败| +----------+----------+------+------+------+ |A | S1 | 3 | || |A | S2 | 4 | || |B | S1 | 5 | || |C | S1 | 2 | || +----------+----------+------+------+------+ 我有一个表要应用筛选条件,如下所示:

+----------+----------+------+------+------+ | Category | SpecName | Spec | Pass | Fail | +----------+----------+------+------+------+ | A | S1 | 3 | | | | A | S2 | 4 | | | | B | S1 | 5 | | | | C | S1 | 2 | | | +----------+----------+------+------+------+ +----------+----+----+ | Category | S1 | S2 | +----------+----+----+ | A | 5 | 3 | | B | 4 | | | A | 5 | 5 | | C | 2 | | | A | 2 | 6 | +----------+----+----+ +----------+----+----+ |类别| S1 | S2| +----------+----+----+ |A | 5 | 3| |B|4|| |A | 5 | 5| |C | 2 || |A | 2 | 6| +----------+----+----+ 我想在filter criteria表中的Pass和Fail列中填入第二个表中的项目计数,其值>=相应的规范,如下所示

+----------+----------+------+------+------+ | Category | SpecName | Spec | Pass | Fail | +----------+----------+------+------+------+ | A | S1 | 3 | 1 | 2 | | A | S2 | 4 | 1 | 2 | | B | S1 | 5 | 0 | 1 | | C | S1 | 2 | 1 | 0 | +----------+----------+------+------+------+ +----------+----------+------+------+------+ |类别|规格名称|规格|通过|失败| +----------+----------+------+------+------+ |A | S1 | 3 | 1 | 2| |A | S2 | 4 | 1 | 2| |B | S1 | 5 | 0 | 1| |C | S1 | 2 | 1 | 0| +----------+----------+------+------+------+ 以下是如何使用脚本语言执行此操作的步骤:

  • 筛选第一个表以获取该行上类别的所有等级库筛选条件,如下所示
  • +----------+----------+------+ |类别|规格名称|规格| +----------+----------+------+ |A | S1 | 3| |A | S2 | 4| +----------+----------+------+
  • 将表2复制到变量iTable
  • +----------+----+----+ |类别| S1 | S2| +----------+----+----+ |A | 5 | 3| |B|4|| |A | 5 | 5| |C | 2 || |A | 2 | 6| +----------+----+----+
  • 对于每个等级库名称: 在iTable中查找具有规范名称的列 按规范过滤iTable中的规范名称列
  • 应用所有过滤器后,我们将:
  • +----------+----+----+ |类别| S1 | S2| +----------+----+----+ |A | 5 | 5| +----------+----+----+
  • 然后,只需对iTable中的行进行计数,并将其分配给criteria表的Pass列中的单元格
  • Excel公式是否可以这样做


    如果没有,有人知道如何使用VBA吗?

    正在为您的规范标准寻找替代布局。展开列以满足您的需要

    由于每个规格标准都有自己的列,因此使用寿命变得非常简单。你只需要调整你的公式,以符合你的标准数量

    根据布局末尾的表格,将以下公式放在D3中,并根据需要向下复制

    =SUMPRODUCT(($G$2:$G$6=A3)*($H$2:$H$6>=B3)*($I$2:$I$6>=C3))
    
    这将给出通过所有标准的计数。它也是一个执行类似于Calc的数组的函数。它可以在下一列中重复,但为了减少对数组计算的依赖性,并根据要检查的数据量可能加快速度,请将以下内容放在fail列的顶部,并根据需要进行复制:

    =COUNTIF($G$2:$G$6,A3)-D3
    
    基本上,它从总计数中减去通过次数。这假设您只能将通过和失败作为选项


    那么在结果表中,每个类别名称相同的条目最终都会有相同的通过和失败计数?相同类别名称的后续条目只是通过时也必须满足的附加标准?你想要一个S1>=3和S2>=4的类别a的计数?是类别2的最大发生率吗?即只有S1和S2?是否总是对该表进行排序,以便S2位于S1下方的行上?第一张桌子的布局可以稍微修改一下吗?这是正确的。我想要iTable中与所有条件匹配的所有条目的计数。对于S1>=3和S2>=4的类别A。可以修改布局,但类别未知。为了这个例子,我有2个。实际上我有6个,但这是一个变量,我不能做这个假设。我也不能保证顺序,因为客户希望能够自由地按照自己的意愿对其进行排序。这很漂亮,但我需要它来为不同数量的过滤器工作。类别A可能有6个过滤器,类别B可能与A共享2个过滤器,然后有自己的另一个过滤器。一旦我做了这个电子表格,我会把它交给别人,不再碰它,所以任何可能需要进行维护的公式拖动对我来说都不是一个选项。有没有一种方法可以让你完成如此惊人的工作,并让它接受变量过滤器?创建10列,如果没有使用标准,那就不重要了。只要它在第二个表中仍然为空。但是,这可能仍然不是您的选择。这可以通过VBA来完成,但VBA不是我的强项。我将此标记为答案,因为我最终使用了VBA。它并不完美,但考虑到过滤器不会改变太多,它会工作的。我只是不想以后再做这个东西的维护,但是。。。
    =COUNTIF($G$2:$G$6,A3)-D3