Excel 根据列名计算值
Excel value calculation based on column name
我有一个 table,其中列名是邮政编码,每个邮政编码下都有收入,但是有些 postal 里面有字母或者是空的,这导致我的公式 return错误。
想法是计算每个区域的收入,其中区域名称是手动输入的,并通过邮政计算 - 例如 - 2000 到 2299 之间的邮政编码是索非亚。
问题是即使邮政s中有字母,如何使公式起作用?
这就是公式:
=SUMPRODUCT(
($B:$CW)
*(
IF(
ISBLANK($B:$CW);
0;
IFERROR(
REPLACE(
$B:$CW;
5;
2;
""
);
$B:$CW
)
)>=2000
*(
IF(
ISBLANK($B:$CW);
0;
IFERROR(
REPLACE(
$B:$CW;
5;
2;
""
);
$B:$CW
)<=2299
)
)
)
)
它应该做什么 - 基于带有邮政编码的列对收入求和,但针对 2000 到 2299 之间的邮政编码进行过滤。
它的作用 - 计算所有邮政编码的收入,不考虑 >= 2000 和 <= 2299。
也许:
=SUMPRODUCT(
($B:$CW)
*( --IF( ISBLANK($B:$CW),
0,
IFERROR(
REPLACE( $B:$CW,
5,
2,
"" ),
$B:$CW ) ) >=2000 )
*( --IF( ISBLANK($B:$CW),
0,
IFERROR(
REPLACE( $B:$CW,
5,
2,
"" ),
$B:$CW ) ) <=2299 )
)
(抱歉重新格式化)
或更简化的版本:
=SUM( $B:$CW
* ( LEFT( $B:$CW, 4 ) >= "2000" )
* ( LEFT( $B:$CW, 4 ) <= "2299" )
)
无助版本
=LET( p; $B:$CW;
sr; $B:$CW;
f; NUMBERVALUE(IF(ISBLANK(p);1000;IFERROR(REPLACE(p;5;2;"");p)));
SUM($B:$CW*(f>=2000)*(f<=2299)) )
其中 p 是 post 代码,sr 是销售收入值。
我找到了替代解决方案,所以我把它留在这里:
第一部分我写了列的公式,所以我检查列名中是否有空格或字符串并替换它们,然后转换为数字。
第一个公式:
=NUMBERVALUE(IF(ISBLANK($B:$CW);1000;IFERROR(REPLACE($B:$CW;5;2;"");$B:$CW)))
然后我根据第一个公式的结果进行计算:
=SUMIFS($B:$CW;$B:$CW;">=2000";$B:$CW;"<=2299")
我有一个 table,其中列名是邮政编码,每个邮政编码下都有收入,但是有些 postal 里面有字母或者是空的,这导致我的公式 return错误。
想法是计算每个区域的收入,其中区域名称是手动输入的,并通过邮政计算 - 例如 - 2000 到 2299 之间的邮政编码是索非亚。 问题是即使邮政s中有字母,如何使公式起作用?
这就是公式:
=SUMPRODUCT(
($B:$CW)
*(
IF(
ISBLANK($B:$CW);
0;
IFERROR(
REPLACE(
$B:$CW;
5;
2;
""
);
$B:$CW
)
)>=2000
*(
IF(
ISBLANK($B:$CW);
0;
IFERROR(
REPLACE(
$B:$CW;
5;
2;
""
);
$B:$CW
)<=2299
)
)
)
)
它应该做什么 - 基于带有邮政编码的列对收入求和,但针对 2000 到 2299 之间的邮政编码进行过滤。
它的作用 - 计算所有邮政编码的收入,不考虑 >= 2000 和 <= 2299。
也许:
=SUMPRODUCT(
($B:$CW)
*( --IF( ISBLANK($B:$CW),
0,
IFERROR(
REPLACE( $B:$CW,
5,
2,
"" ),
$B:$CW ) ) >=2000 )
*( --IF( ISBLANK($B:$CW),
0,
IFERROR(
REPLACE( $B:$CW,
5,
2,
"" ),
$B:$CW ) ) <=2299 )
)
(抱歉重新格式化)
或更简化的版本:
=SUM( $B:$CW
* ( LEFT( $B:$CW, 4 ) >= "2000" )
* ( LEFT( $B:$CW, 4 ) <= "2299" )
)
无助版本
=LET( p; $B:$CW;
sr; $B:$CW;
f; NUMBERVALUE(IF(ISBLANK(p);1000;IFERROR(REPLACE(p;5;2;"");p)));
SUM($B:$CW*(f>=2000)*(f<=2299)) )
其中 p 是 post 代码,sr 是销售收入值。
我找到了替代解决方案,所以我把它留在这里:
第一部分我写了列的公式,所以我检查列名中是否有空格或字符串并替换它们,然后转换为数字。
第一个公式:
=NUMBERVALUE(IF(ISBLANK($B:$CW);1000;IFERROR(REPLACE($B:$CW;5;2;"");$B:$CW)))
然后我根据第一个公式的结果进行计算:
=SUMIFS($B:$CW;$B:$CW;">=2000";$B:$CW;"<=2299")