Excel、VBA、Power Query等
专栏文章
没有任何数据~~
最近问题
没有任何数据~~
最新评论
  • 分组后自动排序问题 at 2024-02-15 15:33:46

    看到已有问题里面有类似的提问和回答,参考https://pbihub.cn/qa/1320

    他们的函数嵌套更简单,但思路是一样的,通过分组、添加序号实现

  • 如何清除地址中的重复信息及不当填充的门牌号 at 2024-02-15 14:27:31

    这个基本没办法做。

    如果你有每个省、市、县市的准确列表,可能能够实现清除重复地址,使地址按照级别大小排列,但效率肯定很慢(文字对比太多)

    最后的门牌号,如何识别为不当填充?1号、2号可能都是正确地址,只保留一个最小的值是准确的吗?除非保证没有连续地址

  • 批量模糊替换 at 2024-02-15 13:27:43
    • 1.遍历RE列的内容
    • 2.遍历表中的Column50-Column54列
    • 3.每列遍历单元格,进行查找替换

    单列查找替换功能主要是:替换的值=Table.ReplaceValue(源表,each [Column50],"工时汇总",(x,y,z)=>if Text.Contains(x,"月汇总") then z else y,{"Column50"}),如果源表中某列的单元格包含“月汇总”会替换成“工时汇总”,否则不变。

    函数Table.ReplaceValue的用法为:

    Table.ReplaceValue ( 表 as table,旧值as any,新值as any,替换器 as function,要替换的列as list ) as table

    参考:https://zhuanlan.zhihu.com/p/598366196

    可以在此基础上进行变动【看解释,Table.ReplaceValue可以直接处理多列,应该可以减少一次循环】,由于涉及几个循环嵌套,需要逐步尝试得到正确步骤

  • PQ 网抓问题,带登录加 cookies 的网抓为什么还是无法抓取成功 at 2024-02-15 13:08:03

    可能是Cookie过期原因导致的,更新Cookie重新尝试。

    网页设计中用Cookie登录也会有期限,就比如你用网页登录后一个网址后,一段时间内这个网址能够记住你的登录状态,过几天再打开这个网页又会让你进行登录一样

  • Table.AddColumn 下 each 和 (x)=>互换使用的问题 at 2024-02-15 11:28:31

    参考:https://pqfans.com/1726.html

    当使用each时,有些_可以省略不写,而使用(x)=>写法时,x不能忽略,除非数据和x没有关系(比如增加一列常量)

  • 怎么用 power query 批量查询快递信息 at 2024-02-15 09:52:18

    思路:读取每个快递单号,
    把单号拼接到某个查询字符串、网址等,
    使用Web控件读取网页查询结果
    大概的思路跟写爬虫程序类似,如果有查询快递的API接口,返回结果一般是JSON格式,比较干净,分析结果更容易一些,

    如果拼接成网址,需要分析返回结果的网页结构,处理起来比较费劲

    另外,如果快递单不是同一家快递公司,尽量找一个第三方查询快递的平台,否则还需要判断快递单号属于哪个公司,发送给不同的网页,分析不同的返回结果

  • 分组后自动排序问题 at 2024-02-15 09:41:22

    虽然作者已经解决问题,也想试一下:

    已经习惯Excel公式写法,最初尝试引用上一行数据的方式,弄起来还挺费劲,后来还是通过分组变成表格数据、对每行表格添加序号,最后展开表格的方式解决:

    let
        源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
        更改的类型 = Table.TransformColumnTypes(源,{{"组别", Int64.Type}, {"姓名", type text}}),
        排序的行 = Table.Sort(更改的类型,{{"组别", Order.Ascending}, {"姓名", Order.Ascending}}),
        分组的行 = Table.Group(排序的行, {"组别"}, {{"计数", each _, type table }}),  
        转换 = Table.TransformColumns(分组的行, {"计数", (表)=> Table.AddIndexColumn(表, "索引", 1, 1, Int64.Type)}),
        #"展开的“计数”" = Table.ExpandTableColumn(转换, "计数", {"姓名", "索引"}, {"姓名", "序号"})
    
    in
        #"展开的“计数”"

    file

    file

    file

  • 数据合并的问题 at 2024-02-06 21:02:50

    使用Power Query 方式处理:
    导入数据后,打开高级编辑器,增加以下代码

    源 = Excel.Workbook(File.Contents("C:\Users\Administrator\Desktop\示例.xlsx"), null, true),
        Sheet1_Sheet = 源{[Item="Sheet1",Kind="Sheet"]}[Data],
        更改的类型 = Table.TransformColumnTypes(Sheet1_Sheet,{{"Column1", type any}, {"Column2", type any}, {"Column3", type any}, {"Column4", type any}, {"Column5", type any}, {"Column6", type any}}),
    
       //上面的为自动生成,下面为新增内容:
        表=更改的类型, //重命名,避免因为步骤名称不对,下面代码错误
        第一个日期 = Date.From(表{0}[Column1]),
        年 = Date.Year(第一个日期),
        月 = Date.Month(第一个日期),
        该月天数 = Date.DaysInMonth(第一个日期),
        日期所在行 = List.Transform({Date.Day(第一个日期)..该月天数}, (x)=>List.PositionOf(表[Column1],#date(年,月,x)) ),
        去掉找不到的行 = List.Select(日期所在行, each _ >-1),
    
        合并表格 = Table.Combine(List.Transform({0..List.Count(去掉找不到的行)-1},
            (x)=>let
               临时表=if x< List.Count(去掉找不到的行)-1 then 
                   Table.FirstN(Table.RemoveFirstN(表,去掉找不到的行{x}+1),去掉找不到的行{x+1}-去掉找不到的行{x}-1)
                 else
                    Table.RemoveFirstN(表,去掉找不到的行{x}+1),
               修改标题 =  Table.ReplaceMatchingRows(临时表,{{ 临时表{0}, 临时表{0} & [Column1="公司"] }}) ,
                 删空行 = Table.SelectRows(修改标题, each [Column1]<>null),
                 转置 = Table.Transpose(删空行),
                 删空列 = Table.SelectRows(转置, each [Column1]<>null),
                 转置恢复 = Table.Transpose(删空列),
                 提升的标题 = Table.PromoteHeaders(转置恢复, [PromoteAllScalars=true])
             in
                 提升的标题
    
    )),
        合并后标题 = Table.ColumnNames(合并表格),
        替换的值 = Table.ReplaceValue(合并表格,null,0,Replacer.ReplaceValue,合并后标题)
    in
        替换的值

    示例文件

    file

    处理结果:

    file

    最后选中第一列,右击——组合依据,依次对后面每一列添加求和聚合函数:

    file

    最后一步暂时没试出来怎么实现自动组合求和(也就是如何在标题名称不固定的情况下,如何写Table.Group方法!)

  • POWER QUERY 如何批量修改 Web 源地址? at 2024-02-06 15:03:11

    这个页面没有分页,需要在你看到有分页的地方分析id来源,查看了一下https://live.nowscore.com/schedule.aspx?f=ft1
    在这个网页,表格后面点击“亚”可以弹出类似你要收集数据的页面
    F12查看代码,里面的JS单击事件中可以找到你要的ID,比如onclick="AsianOdds(****id***)"

    file

    用web控件应该可以分析出这个内容,先获得ID后再取获取数据。