迭代表行

时间:2017-09-09 16:42:17

标签: excel excel-formula

我正在使用Excel学习Rock Paper Scissors的心理学。我将游戏保存在一个名为 Games 的表中,列 Player0 (使用的是什么玩家0), Player1 Winner (可以是0,1或T代表领带)。

enter image description here

我想知道使用每个选项(1)(左侧的表)获得了多少胜利,所以我需要迭代表中的每一行以检查是否使用例如rock进行了胜利。 / p>

我尝试使用以下COUNTIF for rock

=COUNTIF( Games,   IF( IF( $D = 0, $B, IF( $D = 1, $C, FALSE ) ) = "R", TRUE, FALSE ) )

但是我无法弄清楚要使用什么来访问同一行中的其他列(而不是$ D,$ B,$ C)。

预期的计数是:

Rock Win - 3
, Paper Win - 0
, Scissor Win - 7
, Tie - 12

(1)示例:摇滚胜利将是Rock vs Scissor比赛。

2 个答案:

答案 0 :(得分:3)

在I4中

使用以下

=COUNTIFS(C:C,"R",E:E,"0")+COUNTIFS(D:D,"R",E:E,"1")

将pp更改为S,然后相应地将P更改为ppapper或siccor胜利

在I7中

使用以下内容:

=COUNTIF(E:E,"T")

在I8中使用以下内容:

=COUNTA(E:E)-1
OR
=SUM(I4:I7)

-1是考虑标题行。

要获得百分比,请在J4中使用以下内容并复制:

=I4/$I$8

警告:最后一个条目下方的所有单元格都必须为空白。

概念证明

POC

奖金

用于确定E栏中的获胜者结果:

=IF(C2=D2,"T",IF(OR(AND(C2="R",D2="S"),AND(C2="P",D2="R"),AND(C2="S",D2="P")),0,1))

ALTERNATIVE

(但不是首选!

由于有多种处理方式,这里有一个选项可以通过像数组计算而不是数组来获得第I列的计数:

分别为I4至I6

=SUMPRODUCT(($C$2:$C$23=LEFT($H4))*($D$2:$D$23="s")+($C$2:$C$23="s")*($D$2:$D$23=LEFT($H4)))

=SUMPRODUCT(($C$2:$C$23=LEFT($H5))*($D$2:$D$23="r")+($C$2:$C$23="r")*($D$2:$D$23=LEFT($H5)))

=SUMPRODUCT(($C$2:$C$23=LEFT($H6))*($D$2:$D$23="p")+($C$2:$C$23="p")*($D$2:$D$23=LEFT($H6)))

对于I7,您可以选择使用以下方式处理E列结果:

=SUMPRODUCT(--($E$2:$E$23=LEFT($H7)))

或者通过您的E栏结果并使用:

=SUMPRODUCT(--(C2:C23=D2:D23))

要获得总匹配数,请将上述结果相加或使用

=SUMPRODUCT(--(C2:C23<>""))

现在不使用类似操作的数组的原因是你不想使用完整的列引用,因为它会添加大量的额外计算。好处是你可以获得信息,即使用你桌子下面的细胞而不让它们把你的计数丢掉。

答案 1 :(得分:1)

摇滚胜利:

=COUNTIFS(C:C,"<>T",A:A,"R",B:B,"S")+COUNTIFS(C:C,"<>T",A:A,"S",B:B,"R")

纸赢:

=COUNTIFS(C:C,"<>T",A:A,"R",B:B,"P")+COUNTIFS(C:C,"<>T",A:A,"P",B:B,"R")

Scissor Win:

=COUNTIFS(C:C,"<>T",A:A,"P",B:B,"S")+COUNTIFS(C:C,"<>T",A:A,"S",B:B,"P")

领带:

=COUNTIF(C:C,"T")

enter image description here