名词 查询表 函数 行{}/列[] 单元格 表(Table) 列表(List) 记录(Record) 引用[查询表] =查询表表名 引用[应用的步骤] =步骤名 引用表中的[单元格](深化) =表{行数}[列标题名] 行数从0开始 (未完)…
数据源: "品名"一列 目标: 提取品名中的首字符,生成新列:"品名简称" 解决方案: 在[自定义列]中使用M函数Text.Start 步骤: 打开[自定义列]对话框 修改新列名为"品名简称" 光标移至等号后,输入字母"t"(不限大小写) 通过上下键找到M函数"Text.Start" 按下[Tab]键或[Enter]键完成M函数名的输入(亦可直接输入"Text.Start",但手动输入必…
数据源: "品名"."数量"."单价"三列 目标: 计算销售单价(单价*1.2) 解决方案: 在[自定义列]中使用乘法四则运算 步骤: 打开[自定义列]对话框 修改新列名为"销售单价" 鼠标双击[可用列]中的"单价"(亦可将光标移至等号后再以键盘敲入"[单价]") 键盘敲入"*1.2" 单击[确定] 最终效果: 目标: 计算销售金额(数量*销售单价) 解决方案: 在[…
数据源: 任意工作簿 目标: 使用自定义函数实现将数据源导入Power Query编辑器 操作过程: PowerQuery编辑器>主页>新建源>其他源>空查询 编辑栏内写入公式>调用 M公式: = (自定义参数名) => Excel.Workbook(File.Contents(自定义参数名), null, true) 固定结构: M公式 = (参数1,...,参数n) => 包含参数的表达式 M代码(生成自定义函数) (参数1,...参数n) => let…
最近一段时间准备使用AngularJs中的自定义Directive重构一下代码. 在这里说明一下,把自定义控件封装成Directive并不一定是要复用,而是要让代码结构更加清晰.就好像你将一个长方法拆分成多个独立的小方法,也未必要复用它们一样.职责独立等一票好处,会让后期维护更加轻松. 在重构的过程中,我遇到了这样一个问题,先上图: 图一: 这就是我要重构的界面,由于之前时间紧,将这三个Filter和两个button都写在了一个页面中.当时我已经预感到,如果将这里面的状态都写到一个scope上,…
数据源: 任意超级表 目标: 将超级表中的数据加载到Power Query编辑器中 操作过程: 选取超级表中任意单元格(选取普通表时会自动增加插入超级表的步骤)>数据>来自表格/区域 M公式:  = Excel.CurrentWorkbook(){[Name="超级表名"]}[Content] 扩展: 以二进制形式返回文件内容:= File.Contents("路径\文件名.后缀名") 从工作簿:= Excel.Workbook(二进制Excel工作簿,…
数据源: 任意数据源,包括文本和非文本两列 目标: 对数据进行替换操作 操作过程: [主页](或[转换])>[替换值] M公式: = Table.ReplaceValue( 表, 查找值, 替换值, 替换种类, { "列名1",..., "列名n"}) 替换种类: Replacer.ReplaceValue:全部替换(包括文本和非文本) Replacer.ReplaceText:局部替换(仅用于文本) 用于替换的特殊字符: Tab:#(tab) 回车:#(cr…
M语言基本上和其他语言一样,用敲键盘的方式写入.修改.删除,这个是废话. M语言可以在[编辑栏]或[高级编辑器]里直接写入.修改.删除,这个也是废话. M语言还有个地方可以写入.修改.删除,就是[自定义列],在Power Query编辑器的[添加列]选项卡下. 在[自定义列]里编辑M公式,除了可以用键盘以外,还可以用鼠标--需要输入列名时,双击[可用列]里的指定列,或者选取列名后单击[插入]. 好吧,这统统都是废话--…
数据源: 任意列中包含空单元格 目标: 将空单元格填充为其上或其下单元格中的内容 操作过程: 选取指定列>[转换]>[填充]>[向下] 选取指定列>[转换]>[填充]>[向上] M公式: 向下填充:= Table.FillDown( 表, {"列名1",...,"列名n"})  向上填充:= Table.FillUp( 表, {"列名1",...,"列名n"}) 最终效果: 如图…
数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳""总计",共7列7行数据,其中姓名列,第1.2行与第6.7行内容重复 目标: 留下第1.2.6.7姓名列中内容重复的行 操作过程: 选取指定列>[主页]>[保留行]>[保留重复项] M公式: = let columnNames = {"指定列名"}, add…