pur*_*ion 7 database spreadsheet worksheet-function microsoft-excel
我正在尝试开发一个 Excel 公式,该公式将计算以下格式的时间范围字符串的实际持续时间: 1:00am – 3:00am
根据这篇文章,它似乎应该像减去两次一样简单。例如,要获取两次(4:55:00)之间的小时、分钟和秒,文章说要执行以下操作:
=TEXT(B2-A2,"h:mm:ss")
Run Code Online (Sandbox Code Playgroud)
这是我走了多远:
=TEXT(RIGHT(B2,SEARCH(" – ",B2))-LEFT(B2,SEARCH(" – ",B2)),"h:mm:ss")
Run Code Online (Sandbox Code Playgroud)
我想知道问题是否可能是我的文本字符串除了时间之外没有“日期”组件。是能够进行减法运算以将日期“捏造”到字符串中的唯一解决方案吗?或者除了简单地单独分解小时和分钟组件并以这种方式计算持续时间之外,还有另一种替代方法吗?如果可能的话,我还想补偿任何潜在的从下午到上午的时间跨度,例如晚上 9:00 - 上午 12:00。
这是复杂的解决方案之一。最好只是粘贴它并希望最好,而不是试图坐下来解析它。
=INT(MOD(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)+(MID(B2,FIND(":",B2,FIND("-",B2))+1,2) - MID(B2,FIND(":",B2)+1,2))/60+IF(MID(B2,FIND("m",B2)-1,1)=MID(B2,FIND("m",B2,FIND("-",B2))-1,1),IF(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)+(MID(B2,FIND(":",B2,FIND("-",B2))+1,2) - MID(B2,FIND(":",B2)+1,2))/60<0,24-IF(LEFT(B2,2)="12",12,0),0),12-IF(AND(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)<>0,MID(B2,FIND(":",B2,FIND("-",B2))-2,2)="12"),12,0)),24)) & ":" & TEXT((MOD(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)+(MID(B2,FIND(":",B2,FIND("-",B2))+1,2) - MID(B2,FIND(":",B2)+1,2))/60+IF(MID(B2,FIND("m",B2)-1,1)=MID(B2,FIND("m",B2,FIND("-",B2))-1,1),IF(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)+(MID(B2,FIND(":",B2,FIND("-",B2))+1,2) - MID(B2,FIND(":",B2)+1,2))/60<0,24-IF(LEFT(B2,2)="12",12,0),0),12-IF(AND(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)<>0,MID(B2,FIND(":",B2,FIND("-",B2))-2,2)="12"),12,0)),24)-INT(MOD(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)+(MID(B2,FIND(":",B2,FIND("-",B2))+1,2) - MID(B2,FIND(":",B2)+1,2))/60+IF(MID(B2,FIND("m",B2)-1,1)=MID(B2,FIND("m",B2,FIND("-",B2))-1,1),IF(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)+(MID(B2,FIND(":",B2,FIND("-",B2))+1,2) - MID(B2,FIND(":",B2)+1,2))/60<0,24-IF(LEFT(B2,2)="12",12,0),0),12-IF(AND(MID(B2,FIND(":",B2,FIND("-",B2))-2,2) - LEFT(B2,FIND(":",B2)-1)<>0,MID(B2,FIND(":",B2,FIND("-",B2))-2,2)="12"),12,0)),24)))*60,"00")
Run Code Online (Sandbox Code Playgroud)
编辑:最后一次修正了公式。
致辞评论:
要添加这些输出,要添加一系列这些输出,您可以使用以下公式:
=TEXT(SUM(VALUE(B2:B3)),"h:mm:ss")
Run Code Online (Sandbox Code Playgroud)
您必须将此作为数组公式输入。通过在输入公式时按 Ctrl+Shift+Enter 来执行此操作。
试试这个公式:
=A2+(A1>A2)-A1
Run Code Online (Sandbox Code Playgroud)
在哪里
A1包含您的“从”时间
A2包含您的“到”时间
然后,您可以使用 TEXT 函数将其格式化为字符串,
或使用数字格式[h]:mm:ss。
即使时间跨度超过午夜(即晚上 9:34 到凌晨 3:45),它也应该起作用
首先,正如 Lance 所提到的,您需要在时间字符串中的时间和 AM/PM 符号之间添加一个空格。
最简单的方法是通过 Excel 的查找和替换功能。按Ctrl+ ,在“查找内容H”中输入“am” ,然后在“替换为”中输入“am”(前面有一个空格)。对“pm”做同样的事情。
编辑:[删除嵌套替代品] 嵌套SUBSTITUTES毕竟是一个坏主意。至少在不添加 TRIM 的情况下是这样。
这是我的另一种过度杀伤方法。
使用下面的公式创建名称(“tt”)(其中 $A1:$A10 是包含时间字符串的范围。
=TRIM(SUBSTITUTE(SUBSTITUTE($A1:$A10,"a"," a"),"p"," p"))
Run Code Online (Sandbox Code Playgroud)
然后使用此公式获取持续时间(基于上面的第一个公式):
=RIGHT(tt,LEN(tt)-FIND("-",tt,1)-1)+
(LEFT(tt,FIND("-",tt,1)-2)>RIGHT(tt,LEN(tt)-FIND("-",tt,1)-1))-
LEFT(tt,FIND("-",tt,1)-2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2843 次 |
| 最近记录: |