论文部分内容阅读
最近在计算加班工时过程中,遇到一个问题,如图1所示,在同一个单元格内,既有文字又有数字,现在希望根据文字条件求出文字后面数字的和,例如出现“双”的情况下,计算“双”后面的数值之和,出现“节”时计算“节”后面的数值之和。手工计算虽然可行,但工作量相当之大而且也很麻烦,有没有简单一些的方法呢?
我们可以利用数组公式解决这一问题:选择G3单元格,在编辑框输入公式“=SUM(IFERROR(SUBSTITUTE(B3:F3,"双",)*1,0))”,这里的“SUBSTITUTE”是字符串替换函数,功能是将一个字符串中的部分字符串用新的字符串替换,“B3:F3”表示单元格区域,“IFERROR”函数用于处理公式中的错误,如果计算结果为错误则返回“0”,按下“Ctrl+Shift+Enter”组合键转换为数组公式,执行之后可得“16”的结果;选择H3单元格,在编辑框输入公式“=SUM(IFERROR(SUBSTITUTE(B3:F3,"节",)*1,0))”,转换为数组公式,执行之后可得“12”的计算结果,双击或拖拽填充柄,效果如图2所示。
如果不想使用数组公式,计算“双”可以使用“=SUMPRODUCT(--TEXT(SUBSTITUTE("双"&B3:F3,"双双",),”0%;;0;!0”))”的公式,计算“节”可以使用“=SUMPRODUCT(--TEXT(SUBSTITUTE("节"&B3:F3,"节节",),”0%;;0;!10”))”的公式,这里添加“O%”是为了解决小数的问题,执行之后可以获得同样的计算结果。
我们可以利用数组公式解决这一问题:选择G3单元格,在编辑框输入公式“=SUM(IFERROR(SUBSTITUTE(B3:F3,"双",)*1,0))”,这里的“SUBSTITUTE”是字符串替换函数,功能是将一个字符串中的部分字符串用新的字符串替换,“B3:F3”表示单元格区域,“IFERROR”函数用于处理公式中的错误,如果计算结果为错误则返回“0”,按下“Ctrl+Shift+Enter”组合键转换为数组公式,执行之后可得“16”的结果;选择H3单元格,在编辑框输入公式“=SUM(IFERROR(SUBSTITUTE(B3:F3,"节",)*1,0))”,转换为数组公式,执行之后可得“12”的计算结果,双击或拖拽填充柄,效果如图2所示。
如果不想使用数组公式,计算“双”可以使用“=SUMPRODUCT(--TEXT(SUBSTITUTE("双"&B3:F3,"双双",),”0%;;0;!0”))”的公式,计算“节”可以使用“=SUMPRODUCT(--TEXT(SUBSTITUTE("节"&B3:F3,"节节",),”0%;;0;!10”))”的公式,这里添加“O%”是为了解决小数的问题,执行之后可以获得同样的计算结果。