【发布时间】:2021-02-02 17:33:13
【问题描述】:
使用任何超过几级深度的 Excel 函数时,以 Excel 呈现的单行格式很快就会变得难以阅读:
=IF(F3,24*IF(AC3,IF(ROW()=16,V3,MIN(IF(OR(1440*SUMIF(AC3:AC$16,TRUE,U3:U$16)>=1440*V3,NOT(AC3)),U3,IF(1440*SUMIF(AC3:AC$16,TRUE,Z3:Z$16)>=1440*V3,Z3,AA3)),V3)),U3),"")
所以我经常做的是,我会将它弹出到 Sublime 中并像代码一样缩进它,使其立即更容易分析:
=IF(
F3,
24*IF(
AC3,
IF(
ROW()=16,
V3,
MIN(
IF(
OR(
1440*SUMIF(AC3:AC$16,TRUE,U3:U$16)>=1440*V3,
NOT(AC3)
),
U3,
IF(
1440*SUMIF(AC3:AC$16,TRUE,Z3:Z$16)>=1440*V3,
Z3,
AA3
)
),
V3
)
),
U3
),
""
)
我已经完成了足够多的时间,这样可以节省我将其自动化的时间。我开始尝试编写一个正则表达式来做到这一点,类似于:
找到((?: {4})*)(.*?)\b(IF|AND|OR|MIN|MAX)\(替换\1\2\3(\n \1
但我无法让它工作,因为正则表达式在递归缩进方面遇到了困难。我发现了一个 Sublime 包,它可以将一系列单独的正则表达式捆绑到一个操作中,这可能有效,但我不确定如何处理它。
我怎样才能像这样自动缩进我的代码?是否有任何我可能不知道的替代方法?
【问题讨论】:
标签: excel regex parsing format sublimetext3