如果值相同,则从Excel列中分配一个值

时间:2017-12-27 11:54:36

标签: excel excel-formula

我在Excel中找到列值的问题得到了一些帮助:Find column value Excel

表格如下:

A   17  8,5 5,666666667 4,25    3,4 2,833333333 2,428571429
B   5   2,5 1,666666667 1,25    1   0,833333333 0,714285714
C   5   2,5 1,666666667 1,25    1   0,833333333 0,714285714
G   4   2   1,333333333 1       0,8 0,666666667 0,571428571

我得到的代码基本上是根据最大数值的顺序选择A,B,C和G.最大的值是17,即A的一个点,然后是8,5,这给A另一个点。这很好。

然而,然后来了5.我现在得到B两次而不是第一次B和C(顺序无关紧要,但是当B和C具有相同的值时,我不想得到B的两个点)。如何解决这个问题?

(这个例子说明的真正问题是瑞典多联盟中当地董事会的席位数,其中不同政党的席位数量取决于市议会的席位数。)

修改:公式:=INDEX($J$16:$J$25,AGGREGATE(14,6,ROW($K$16:$W$25)/(K28=$K$16:$W$25),1)-ROW($J$16)+1)

Edit2:通缉结果:

Mandate    Party
1          A
2          A
3          A
4          B
5          C

1 个答案:

答案 0 :(得分:0)

要通过公式来做到这一点,我认为一个简单的方法是

    使用公式
  • 取消忽略原始数据
  • unique rank公式应用于该数据
  • 然后使用VLOOKUP返回排名1-n

以下公式和定义的名称将非常有用

origTbl     =Sheet2!$A$1:$H$4
unpivotTbl  =Sheet2!$A$8:$C$35

A8      =RANK(C8,$C$8:$C$35,0)+COUNTIF($C$8:C8,C8)-1
B8      =INDEX(origTbl,INT((ROWS($1:1)-1)/7)+1,1)
C8      =INDEX(origTbl,INT((ROWS($1:1)-1)/7)+1,MOD(7+ROWS($1:1)-1,7)+2)
  • A8:C8放到行35

B8C8中的公式中, 7 origTbl减去1的列数(例如:{{ 1}})

您在COLUMNS(origTbl)-1中所做的任何更改都会反映在决赛桌中 对于外观,您当然可以在某处隐藏UnPivot表。

注意:在我的语言环境中,小数点分隔符是点

enter image description here