Arrays Excel多行中的每行多个条件(欢迎使用数组或脚本解决方案)(企业营业额阈值)

Arrays Excel多行中的每行多个条件(欢迎使用数组或脚本解决方案)(企业营业额阈值),arrays,excel,multiple-conditions,Arrays,Excel,Multiple Conditions,我正在整理一张表格,计算一组企业在几个国家是否达到特定的营业额阈值 A列为国家(第2行=全球;第4-34行=欧盟成员国);C-H列为各企业的营业额(全球和各欧盟成员国) 必须满足四个标准,我正在与no(iii)作斗争。作为背景,标准(ii)为: (ii)所有合并公司在至少三个成员国的合并营业额均超过1亿欧元 我找到了解决办法 标准(iii)是 (iii)在(ii)项下包括的三个成员国中,每个成员国至少有两家公司的营业额超过2500万欧元 在将这两个标准拆分为各自的数组时,我会得到每个国家的正确真

我正在整理一张表格,计算一组企业在几个国家是否达到特定的营业额阈值

A列为国家(第2行=全球;第4-34行=欧盟成员国);C-H列为各企业的营业额(全球和各欧盟成员国)

必须满足四个标准,我正在与no(iii)作斗争。作为背景,标准(ii)为:

(ii)所有合并公司在至少三个成员国的合并营业额均超过1亿欧元

我找到了解决办法

标准(iii)是

(iii)在(ii)项下包括的三个成员国中,每个成员国至少有两家公司的营业额超过2500万欧元

在将这两个标准拆分为各自的数组时,我会得到每个国家的正确真/假值: 一个成员国的总营业额超过1亿

一个成员国至少两家公司的营业额超过2500万

但是,将这两个公式与IF(AND())组合成一个公式是行不通的

{=IF(AND(MMULT(C4:H31+0;TRANSPOSE(COLUMN(C4:H31)^0))>=100*10^6;(MMULT(IF(C4:H31>=25*10^6;1;0);TRANSPOSE(COLUMN(C4:H31)^0)))>=2);TRUE;FALSE)}
有没有办法做到这一点,或者使用数组(首选)或者VBA

非常感谢


ElEsido

正如您所说,您的两个公式分别运行良好。他们都在做的是给你一个1和0的列向量,你可以通过对元素求和得到一个计数

要组合它们,需要对每一对元素进行标量乘法,这样就可以得到另一个列向量,可以用相同的方式进行计数,如下所示:-

=SUM(IF(MMULT(C4:H10+0,TRANSPOSE(COLUMN(C4:H10)^0))>=100, 1, 0)*IF((MMULT(IF(C4:H10>=25,1,0),TRANSPOSE(COLUMN(C7:H10)^0)))>=2,1,0))
为了简单起见,我只在几行数据上测试了它,所以您需要将它扩展到您的实际数据,并将数以百万计的数据放回去


正如您所说,您的两个公式分别运行良好。他们都在做的是给你一个1和0的列向量,你可以通过对元素求和得到一个计数

要组合它们,需要对每一对元素进行标量乘法,这样就可以得到另一个列向量,可以用相同的方式进行计数,如下所示:-

=SUM(IF(MMULT(C4:H10+0,TRANSPOSE(COLUMN(C4:H10)^0))>=100, 1, 0)*IF((MMULT(IF(C4:H10>=25,1,0),TRANSPOSE(COLUMN(C7:H10)^0)))>=2,1,0))
为了简单起见,我只在几行数据上测试了它,所以您需要将它扩展到您的实际数据,并将数以百万计的数据放回去


非常感谢你,汤姆!把你的公式放到IF(…>=3;TRUE;FALSE)中,正好满足了我的需要!再次感谢你!非常感谢你,汤姆!把你的公式放到IF(…>=3;TRUE;FALSE)中,正好满足了我的需要!再次感谢你!
{=IF(AND(MMULT(C4:H31+0;TRANSPOSE(COLUMN(C4:H31)^0))>=100*10^6;(MMULT(IF(C4:H31>=25*10^6;1;0);TRANSPOSE(COLUMN(C4:H31)^0)))>=2);TRUE;FALSE)}
=SUM(IF(MMULT(C4:H10+0,TRANSPOSE(COLUMN(C4:H10)^0))>=100, 1, 0)*IF((MMULT(IF(C4:H10>=25,1,0),TRANSPOSE(COLUMN(C7:H10)^0)))>=2,1,0))