如何在EmEditor中计算两个日期列之间的间隔天数
EmEditor计算两日期列间隔天数方法
适用场景:日期为日/月/年(dd/MM/yyyy)格式,A列为起始日期、B列为结束日期,需在C列输出相差天数。
方法1:宏脚本(兼容所有EmEditor版本,稳定性最高)
- 先打开目标文件,确认列已被正确分隔识别(点击列头可选中整列即为正常识别),点击C列列头选中整列待填充区域。
- 按快捷键
Alt+F11调出宏编辑器,新建空白宏文件,粘贴以下代码:
document.selection.Replace("^.*$", function(match) { const colAVal = match.GetCell(1, eeCellIncludeNone); const colBVal = match.GetCell(2, eeCellIncludeNone); if (!colAVal || !colBVal) return ""; // 解析dd/MM/yyyy格式日期 const [dA, mA, yA] = colAVal.split("/").map(Number); const [dB, mB, yB] = colBVal.split("/").map(Number); const timeA = new Date(yA, mA - 1, dA).getTime(); const timeB = new Date(yB, mB - 1, dB).getTime(); // 计算间隔天数,取绝对值兼容B列日期早于A列的场景 const dayDiff = Math.round(Math.abs((timeB - timeA) / 86400000)); return `${dayDiff}天`; }, eeReplaceAll | eeReplaceSelOnly | eeReplaceCellMode);
- 按
F5运行宏,C列会自动填充所有行的间隔结果,示例中A列25/11/2022、B列29/11/2022对应行将输出4天。
方法2:内置列计算(v22及以上版本可用,操作更快捷)
- 右键点击C列列头,选择「插入列/计算列」选项。
- 在弹出的表达式输入框中填入以下公式:
=abs(datediff("d", datevalue(cell(1), "dd/MM/yyyy"), datevalue(cell(2), "dd/MM/yyyy"))) & "天"
- 勾选「应用到所有行」后点击确定,即可直接生成结果。
注意:如果你的实际日期格式不是
日/月/年,只需对应修改代码里的日期解析逻辑、或是公式里的日期格式串即可,例如年/月/日格式就把格式串替换为yyyy/MM/dd。
内容的提问来源于stack exchange,提问作者Heisenberg
相关产品推荐
相关产品推荐

