在Excel中重新编码所需的公式

时间:2013-06-25 13:50:13

标签: excel excel-formula formula

说我有下表(VAR代表变量):#

VAR1 VAR2  VAR3  VAR4    OUT 
 1     1     1     1    VAR4
 0     1     1     0    VAR3
 1     0     0     0    VAR1
 1     1     0     0    VAR2

因此,每个变量编码为1或0。 VAR4加权大于VAR3,VAR3加权大于VAR2等

如果只有一个VAR为1,那么输出中会给出VAR。 但是,如果多个VAR为1,则输出仅为权重最高的VAR, 即,如果VAR2和VAR4为1,则所有其他0,则输出列为VAR4。

Excel中的输入公式是什么,或者有什么快速的方法可以做到这一点?

4 个答案:

答案 0 :(得分:4)

我会说放入E7:

="VAR" & IF(D7=1,4,IF(C7=1,3,IF(B7=1,2,IF(A7=1,1,0))))

其中A是VAR1的列,VAR2的B列,VAR3的C列和VAR4的D列。 只需将公式放在E列中 (检查指数;上面的公式是第7行(E7))

答案 1 :(得分:1)

以下数组公式将完成工作。请注意,它不要求VAR名称的格式为VAR + number,即它将从数据列第一行中的名称中选择所需的名称。

=IFERROR(INDEX($A$1:$D$1,1,IF(SUM(A5:D5)=0,1/0,MAX({1,2,3,4}*A2:D2))),"-")

ISERROR和1/0陷阱所有权重为零的情况并返回“ - ”而不是VAR名称。如果不会出现所有零权重的情况,则公式简化为:

=INDEX($A$1:$D$1,1,MAX({1,2,3,4}*A2:D2))

此公式将输入单元格E2并向下复制。由于它是一个数组公式,因此应使用 Control - Shift - Enter 组合键输入。

答案 2 :(得分:0)

如果表位于工作表的开头,请使用以下公式:

=IF(D2=1,$D$1,IF(C2=1,$C$1,IF(B2=1,$B$1,IF(A2=1,$A$1,0))))

答案 3 :(得分:0)

此公式将随着您的数据增长而变得更加灵活:

=LOOKUP(TRUE,1/$A2:$D2=1,$A$1:$D$1)

A2:D2 = 1如果包含1,则返回每列的TRUE / FALSE数组 1 / A2:D2 = 1将反转该数组 在反向数组中找到TRUE将返回具有First(或最后因为它被反转)匹配的位置为TRUE,并在该位置使用标题。

此公式 需要输入数组,您可以将其作为普通公式输入

如果所有权重均为0,则公式将返回#N/A