我有一张 excel 表,其中某些列中有integer,integerM
或类型的单元格integer,integerH
,例如1,30m
或5,2H
。对于所有列,我希望获得一个表达式,该表达式检查每个列单元格中的第二个整数是否有H
(小时) 或m
(分钟),在这种情况下,计算列中所有第二个整数的总小时数 (浮点值)。
例如,如果我们有一列包含四个单元格:
1,30m
5,2H
3,20m
4,1H
总金额为:
30m + 2H + 20m + 1H = 0.5 + 2 + 0.33333 + 1 = 3.83333 H
如何才能做到这一点?
答案1
假设您的第一个单元格是 A2,您可以在其右侧的任意列中进行计算。
- B2:(
=MID(A2,SEARCH(",",A2)+1,99)
查找逗号后面的内容) - C2:(
=VALUE(LEFT(B2,LEN(B2)-1))
提取“h”或“m”之前的数字) - D2:(
=LOWER(RIGHT(B2,1))
提取“h”或“m”)(尽管你不需要LOWER
- 参见斯科特的评论) - E2:(
=IF(D2="m",C2/60,IF(D2="h",C2,""))
计算小时数)
然后您可以对 E 列求和。
您可以将其放在一个单元格中并得到一个长公式,但这更容易调试并节省在公式中重复的时间。
答案2
benshepherd 的回答很好,我 +1。如果你想更改数据设置,我想我会留下另一个可能对某个地方的某人有用的答案。
- 首先,我会文本到列在里面数据制表符,以
,
- 接下来,我将单元格与和对齐
h
,m
然后执行另一次文本到列具有固定宽度,将非数字字符拉至下一个单元格。 - 然后,在第四列中,我可以使用类似公式
=IF(C1="h",B1,IF(C1="m",B1/60,0))
并对该列求和