ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 新人才学M语言,请教关于M语言中{}和[]在使用中的疑问

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-5-22 21:47 | 显示全部楼层 |阅读模式
本帖最后由 xiaoya6976 于 2022-5-22 21:49 编辑

{}表示list,[]表示Record;一个是一维数组,一个是以键值对的形式存在;特殊情况下{}也可以用于索引;这个我能搞明白

但是为什么在不同的函数中,对列进行引用时,有的是用{}表示,有的又是用[]表示?

比如在求和函数里面
=List.Sum(已添加自定义[北京] & 已添加自定义[上海] & 已添加自定义[天津])//这里面的列都是用[ ]来表示

而在去重函数里面
=Table.Distinct(更改的类型,{"姓名"})//在这里的列又是用{} 这种形式来表示,假如改成=Table.Distinct(更改的类型,[姓名])这种形式就出错

请高人指点,完全摸不着头脑




TA的精华主题

TA的得分主题

发表于 2022-5-23 08:12 来自手机 | 显示全部楼层
第一句话错了。
{1, 2, 3} list,[ A = 1, B = 2 ] record。

TA的精华主题

TA的得分主题

发表于 2022-5-23 09:25 | 显示全部楼层
ezhou2020 发表于 2022-5-23 08:12
第一句话错了。
{1, 2, 3} list,[ A = 1, B = 2 ] record。
  1. 而在去重函数里面
  2. =Table.Distinct(更改的类型,{"姓名"})//在这里的列又是用{} 这种形式来表示,假如改成=Table.Distinct(更改的类型,[姓名])这种形式就出错
复制代码
{"姓名"} 也是列表, 就是说这个里面可以可以是对各列字段进行除重!

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-23 10:38 | 显示全部楼层
luzwales 发表于 2022-5-23 09:25
{"姓名"} 也是列表, 就是说这个里面可以可以是对各列字段进行除重!

我的意思是,为什么在这里就不能用[姓名],也可以解释为对“姓名”这个键所包含的值进行去重啊?

主要是没搞明白在什么情况下用{},什么情况下用[],整糊涂了

TA的精华主题

TA的得分主题

发表于 2022-5-23 10:48 | 显示全部楼层
xiaoya6976 发表于 2022-5-23 10:38
我的意思是,为什么在这里就不能用[姓名],也可以解释为对“姓名”这个键所包含的值进行去重啊?

主要 ...

[姓名] 是指 姓名 这一列的所有数据。
{“姓名”} 是指包含 “姓名” 的list;同时也可以是{“姓名”,"年龄"}。
放到Table.Distinct函数里,{"姓名"}指的,这个table里所有的列标题组成的list中的"姓名"

TA的精华主题

TA的得分主题

发表于 2022-5-23 13:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
还有个问题,在M函数中,单独的 [姓名] = _[姓名]

TA的精华主题

TA的得分主题

发表于 2022-5-23 14:32 | 显示全部楼层
List.Sum(已添加自定义[北京]   一参实质上是  表[列名] 的形式,意思是 通过深化的方式 得到 “已添加自定义” 这张表的 [北京] 这列的数据。

TA的精华主题

TA的得分主题

发表于 2022-5-23 14:33 | 显示全部楼层
而 Table.Distinct(更改的类型,{"姓名"})  二参不是以深化的方式得到列。这仅仅是这个函数的定义要求它二参要这么写而已。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-23 21:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
flashevil 发表于 2022-5-23 14:33
而 Table.Distinct(更改的类型,{"姓名"})  二参不是以深化的方式得到列。这仅仅是这个函数的定义要求它二 ...

那意思是不是说在M函数里面写公式的时候,需要引用“列”的表达方式到底是用{}还是用[]是根据不同类型函数来规定的?

就像List.Sum(已添加自定义[北京]   不能写成List.Sum(已添加自定义{"北京"}   仅仅是因为前面是个list函数,所以只能用list的下级Record的形式[]来引用列?

而在Table函数的下级是list,所以只能用{}的形式来引用列?

那么在Record函数中,因为没有更下级了,所以也是[]的形式来引用列?

谢谢,主要是在这个概念上比较混乱,想搞清楚以后在自己编写公式的时候,到底用什么来引用列

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-23 22:13 | 显示全部楼层
sake.su 发表于 2022-5-23 10:48
[姓名] 是指 姓名 这一列的所有数据。
{“姓名”} 是指包含 “姓名” 的list;同时也可以是{“姓名”," ...

谢谢,大概理清了一点,还有疑问在楼上已经写了,感谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 09:29 , Processed in 0.033440 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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