- ·上一篇:excel表格下面怎么显示求和
- ·下一篇:excel表格怎么提速
excel表格停车时间怎么计费
1.怎样用EXCEL表计算小区停车费收费金额?
这个问题有意思。我用powerquery做了一个解答。
代码如下:
let
源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
更改的类型 = Table.TransformColumnTypes(源,{{"车牌", type text}, {"入场时间", type datetime}, {"出场时间", type datetime}, {"应收费金额", Int64.Type}}),
已添加自定义 = Table.AddColumn(更改的类型, "停车时长", each [出场时间]-[入场时间]),
更改的类型1 = Table.TransformColumnTypes(已添加自定义,{{"停车时长", type duration}}),
已添加自定义1 = Table.AddColumn(更改的类型1, "计费", each if [停车时长]<#duration(0,1,0,0) then 0 else
if [停车时长]<#duration(0,12,0,0) then 5 else
if [停车时长]>=#duration(0,12,0,0) then 5*Number.RoundUp([停车时长]/#duration(0,12,0,0)) else null),
已添加自定义2 = Table.AddColumn(已添加自定义1, "下一次计费时间起点", each if [停车时长]<#duration(0,1,0,0) then null else
if [停车时长]<#duration(0,12,0,0) then [入场时间]+#duration(0,12,0,0) else null),
已添加索引 = Table.AddIndexColumn(已添加自定义2, "索引", 0, 1),
已添加自定义3 = Table.AddColumn(已添加索引, "是否应再计费", each try if [入场时间] <;=已添加索引[下一次计费时间起点]{[索引]-1} then 0 else [计费] otherwise [计费]),
删除的其他列 = Table.SelectColumns(已添加自定义3,{"车牌", "入场时间", "出场时间", "停车时长", "下一次计费时间起点", "是否应再计费"}),
删除的列 = Table.RemoveColumns(删除的其他列,{"下一次计费时间起点"}),
重命名的列 = Table.RenameColumns(删除的列,{{"是否应再计费", "计费"}})
in
重命名的列
这里边的难点是停车时长如果在1-12小时内,多次进出只收一次费。我是这么设想的:第一次停车超过1小时后,立即计算其下一个应计费时间区间(即进入时间+12小时),然后和后面入场时间相比,如果入场时间小于这个下一个应计费时间区间,则不计费;如果大于,则计费。
但里边还有好多细节我没梳理清楚,还不知道是不是有遗漏的特殊情况没考虑到
提供了一个示例文件供参考:链接: /s/ 提取码: v***r
用法:确保excel是2016及以上版本(低版本需自行百度下载安装powerquery插件),替换原始数据区域,然后在【数据】选项卡点击”刷新“,最新结果就出来了。
