ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: halosy

[求助] 求助递归找公司层级关系

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-10-18 10:48 | 显示全部楼层
试试:
  1. = Table.AddColumn(源, "L2", each List.Reverse(List.Generate(()=>[groupCode],each _<>null,each 源{[groupCode=_]}?[upGroupCode]?)){2}?)
复制代码

00.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-18 11:22 | 显示全部楼层
kirete 发表于 2024-10-18 09:27
DAX有专门对应层级的函数

好强大,我去试一下,感谢啦,大神!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-18 11:35 | 显示全部楼层

可以了,解决了。但是这里有个问题还是不太明白,如果我写groupcode = tablegroup[groupCode],这样写的话,就是 groupcode = 列 ,那返回应该是 一列的 TRUE或者FALSE,那么SelectRows,会不会把TRUE的结果找到呢,或者  把前面的 each 去掉,Table.SelectRows(tablegroup, groupcode = tablegroup[groupCode]),这样会不会去找到 返回TRUE的结果行呢

TA的精华主题

TA的得分主题

发表于 2024-10-18 11:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
halosy 发表于 2024-10-18 11:35
可以了,解决了。但是这里有个问题还是不太明白,如果我写groupcode = tablegroup[groupCode],这样写的 ...

这样语法错了,[groupCode]所在的计算环境是selectrows的第一参表示的表,用each给它提供了每一行。此时写成表[字段],表示的一整个列表,文本等于列表返回的始终是false,此处的表跟一参表示的表是两个表。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-18 12:43 | 显示全部楼层

这个用迭代,代码更简洁,我理解理解,感谢大神!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-18 12:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
飞天篮球猪 发表于 2024-10-18 11:49
这样语法错了,[groupCode]所在的计算环境是selectrows的第一参表示的表,用each给它提供了每一行。此时写 ...

哦,明白了。感谢大神!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-18 14:53 | 显示全部楼层
飞天篮球猪 发表于 2024-10-18 11:49
这样语法错了,[groupCode]所在的计算环境是selectrows的第一参表示的表,用each给它提供了每一行。此时写 ...

代码中,if upgroupcode = "0bbddf" or upgroupcode = null  then groupcode中的 upgroupcode = null 好像不对,这样写判断不出来null,所以这个地方该如何改写呢,
还有一个问题,上面定义upgroupcode的时候,把 try otherwise 去掉就会报错,是不是因为 循环查找到到最上面一级 总部运营 的时候,那一行的 upGroupCode 是空值 的原因,如果是空值的话,Table.SelectRows( tablegroup,each groupcode = [groupCode])[upGroupCode]{0} 直接选出来 空值 就好了呀,为什么会报错呢

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-18 15:18 | 显示全部楼层
飞天篮球猪 发表于 2024-10-18 11:49
这样语法错了,[groupCode]所在的计算环境是selectrows的第一参表示的表,用each给它提供了每一行。此时写 ...

upgroupcode = try Table.SelectRows( tablegroup,each groupcode = [groupCode])[upGroupCode]{0} otherwise null 这句话 把 try、otherwise 去掉,会报错,是不是因为 循环查询到 groupCode 是最上面一级 总部运营的代码,那么 对应的 upGroupCode 是空值,然后再去 用空值查的时候,groupCode 那列 没有空值,所以就会报错,是这样的吧
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-10-18 16:29 , Processed in 0.037839 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表