You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA中SQL实现INPUT表层级末行插入至OUTPUT表

解决Excel VBA中SQL层级末尾行插入问题

核心逻辑

INPUT表的层级末尾行,指的是不存在子节点的行——即没有其他行的name字段以当前行的name作为父层级标识。由于Excel VBA依赖的Jet SQL不支持LAG/LEAD函数,我们可以通过NOT EXISTS子查询实现筛选,再将结果插入OUTPUT表。

可直接使用的SQL语句

INSERT INTO OUTPUT (name, [1H], [2H], [3H], [4H], [5H], [6H])
SELECT i.name, i.[1H], i.[2H], i.[3H], i.[4H], i.[5H], i.[6H]
FROM INPUT i
WHERE NOT EXISTS (
    SELECT 1
    FROM INPUT j
    -- 默认按前缀匹配层级,若有特定分隔符可修改此条件
    WHERE j.name LIKE i.name & '*' 
      AND j.name <> i.name
)

关键注意事项

  • 以数字开头的字段名(如1H、2H)必须用方括号[]包裹,避免Jet SQL解析报错。
  • 若层级使用特定分隔符(如-、/),可优化匹配条件以提升精准度:
    例如父节点为部门A、子节点为部门A-小组1时,可将子查询的WHERE条件改为:
    WHERE j.name LIKE i.name & '-%'
    
  • 确保INPUT与OUTPUT表的字段类型完全一致,否则会出现插入失败的情况。

内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:20:00