Excel CountifS。 标准多列范围。 无序的比较testing
这是我的第一个问题,所以如果有什么问题请不要杀了我。 我在这个网站上find了很多解决scheme,但现在还没有。 很抱歉,我还无法发布图片。 这并不容易,但我会尝试。
关键点:
我的数据有以下标题:
决定_Id对手1对手2对手3 Suitor1 Suitor2 Suitor3 Suitor4
Decision_id是唯一的整数标识符。 其余的是string。
每一行代表一个特定的司法决定。 每个决定可以有最多3个对手(辩护方)和最多4个追求者(攻击方)。一个特定的一方可以是一个决定的追求者,另一个可以是另一个追随者。
我想要得到什么 :
交叉表,行和列标题都是我在表中遇到的不同方。 (没有问题,完成。)每个单元格显示特定的对手(由行标题定义)被特定的追求者(列标题)攻击了多less个不同的决定=>所有的对angular线单元格都等于零(一方不能攻击本身)和表是不对称的。
我努力了
申请到第一个细胞,并扩大:
=所有对手的固定范围:$ B $ 2:$ D $ 6“,”想要的对手值:$ A2“,”所有追求者的固定范围:$ E $ 2:$ H $ 6“,”想要的追求者价值:B $ 1“)
我有一个错误。 我想出了标准范围必须是相同的大小。 好的,创build虚拟空栏=>没有错误,但是,结果显然被低估了。 我认为只有当对手和追求者拥有相同的“号码”时才有一场比赛。 详细说明:对于每一行,excel都会testingopponent1和suitor1对应的值,然后是opponent2和suitor2,然后是opponent3和suitor3 …这实际上解释了为什么范围必须是相同的大小。
所以,我需要什么
对于每一行来说,是否要对所有对手进行优秀testing,以testing所需的对手价值。 如果至less有一个对手和一个追求者对应,给它一个匹配并且计数这个决定(尽pipe对手1和追随者3有要求的值)
备注
我已经做了一个VBA代码来完成这个工作,但是这个代码太慢了(整个表格大约需要5个小时),而且我希望对不同types的表格做相同的处理和/或修改这个表格。 所以我对“纯粹的Excel”感兴趣,快速解决scheme。
非常感谢你!
这里的困难部分是将多列范围分隔成单独的行 – 一种方法是在COUNTIF
内使用OFFSET
,即这个公式
=SUMPRODUCT(COUNTIF(OFFSET($B$2:$D$6,ROW($B$2:$D$6)-ROW($B$2),0,1),$A2),COUNTIF(OFFSET($E$2:$H$6,ROW($E$2:$H$6)-ROW($E$2),0,1),B$1))
这假定所有的追求者在任何一行上都是不同的,并且所有的对手在任何一行上都是不同的(尽pipe如果不是这种情况,可以修改公式)。
您可以将范围扩展到任意大小 – 尽pipe每个部分的行数必须相同
….或者使用MMULT
函数的另一个更晦涩的方法
=SUMPRODUCT(MMULT(($B$2:$D$6=$A2)+0,{1;1;1}),MMULT(($E$2:$H$6=B$1)+0,{1;1;1;1}))
{1; 1; 1}和{1; 1; 1; 1}表示每个部分的列数,所以如果有6个和8个需要相应地更改
另一种可能性是尝试这个数组公式:
=SUM(MMULT(-TRANSPOSE($B$2:$D$6=$A2),-($E$2:$H$6=B$1)))
使用CTRL + SHIFT + ENTERinput(或定义为名称,正常input,例如=Total
。
这应该做到这一点:
= COUNTIFS($B$2:$B$6,$A2, $E$2:$E$6, B$1) + COUNTIFS($C$2:$C$6,$A2, $E$2:$E$6, B$1) + COUNTIFS($D$2:$D$6,$A2, $E$2:$E$6, B$1) + COUNTIFS($B$2:$B$6,$A2, $F$2:$F$6, B$1) + COUNTIFS($C$2:$C$6,$A2, $F$2:$F$6, B$1) + COUNTIFS($D$2:$D$6,$A2, $F$2:$F$6, B$1) + COUNTIFS($B$2:$B$6,$A2, $G$2:$G$6, B$1) + COUNTIFS($C$2:$C$6,$A2, $G$2:$G$6, B$1) + COUNTIFS($D$2:$D$6,$A2, $G$2:$G$6, B$1) + COUNTIFS($B$2:$B$6,$A2, $H$2:$H$6, B$1) + COUNTIFS($C$2:$C$6,$A2, $H$2:$H$6, B$1) + COUNTIFS($D$2:$D$6,$A2, $H$2:$H$6, B$1)
这些看起来更简单,如果你把你的数据放到一个表中,或者为Opponent1,Opponent2,Suitor1列等定义命名范围。
- MS-Excel Power Pivot + Amazon Redshift:可能连接数据源?
- 如何衡量Excel计算速度?
- PHP中的代码为天花板function
- 从C#编写excel的有效方法
- HP Quality Center 12.20 Excel Uploader – testing实例中未显示testing用例
- Alpha Vantage API Excel
- 使用Exvantive Control for Excel同步Exact Online GL事务错误:“您正试图在工作表上的表格中移动单元格”
- 是否有可能在Flash应用程序中读取本地Excel 97-2003文件(.xls)?
- AWS数据湖摄取