Power Query 扩充行数的方法

参考:

Insert X Rows to Expand Table – Excel University (excel-university.com)

一张出运明细表中含有装箱率、件数、箱数,现在需要用Bartender制作外箱贴,外箱贴是有序号的,需要正好符合总外箱数。

在安排编号的时候并不会手动设定每一张外箱贴编号,我需要根据外箱数及不同SKU,自动生成外箱编号。举例:A有10箱,B有8箱。

SKU箱数装箱率
A102
B82

需要自动转化出另一张表:

编号SKU装箱率
1A2
2A2
3A2
4A2
5A2
6A2
7A2
8A2
9A2
10A2
11B2
12B2
13B2
14B2
15B2
16B2
17B2
18B2

我有预感Power Query能实现扩充行数。

实现方式为添加List列。

  = {1..[箱数]}

然后 Expand to new rows

image-20211202230714581

然后添加索引列即可。

具体代码:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"SKU", type text}, {"EAN", type text}, {"UNIT", Int64.Type}, {"CTNS", Int64.Type}, {"PCS", Int64.Type}, {"PCStoPrint", Int64.Type}, {"CTNStoPrint", Int64.Type}, {"CTN_NUM_F", type any}, {"CTN_NUM_T", type any}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "CTINS_LIST", each {1..[CTNS]}),
    #"Expanded CTINS_LIST" = Table.ExpandListColumn(#"Added Custom", "CTINS_LIST"),
    #"Added Index" = Table.AddIndexColumn(#"Expanded CTINS_LIST", "CTIN_ID", 1, 1, Int64.Type),
    #"Removed Columns" = Table.RemoveColumns(#"Added Index",{"CTINS_LIST"}),
    #"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"CTIN_ID", "SKU", "EAN", "UNIT", "CTNS", "PCS", "PCStoPrint", "CTNStoPrint", "CTN_NUM_F", "CTN_NUM_T", "RANGE"})
in
    #"Reordered Columns"

11.21

看完一部电影,无聊的夜晚,点开fb看到一位台大工商管理专业的学生贴作品集,在个人网站cv提到基本设计技能还提了Python/reactjs/JavaScript/c#…

然后无聊刷李船长笔记的视频刷到了轮船防海水腐蚀的方法-阴极保护法,隐隐约约想起高中学过,查了一下,牺牲电极法,确信高中知识后,查百科也看不懂,于是搜索引擎关键词带上“高中”,前排结果一个高中化学题解bilibili视频,点开后一知半解,推荐栏上是一个化学竞赛生的视频,讲述高中生一年时间学习完大学的课程,点开up主主页原来是一对高三一起考上清华的情侣。听到他们谈到高中学习的时候,下课做题啦、自习啦、数学题啦,我想起了自己的高中生活。然后想起来自己已经24岁了,living for meaninglessness。

从各种意义上我都会觉得自己是个失败者,本可以做很多事,却不去做,是个彻彻底底的懦夫。

大学毕业的时候,有人希望我能继续写,继续拍下去。

然而现在我感到自己无可救药地无趣下去。

比未老先衰更让我遗憾的是,好像自己从未认真年轻过。

但是我真的不想自卑,因为什么问题都解决不了。

是否愿意接受自己的平庸,是一个长期命题。

Excel VBA代码找回

开启了宏命令的Excel一不小心就会出现莫名奇妙的问题,轻则VBA代码丢失,重则工作薄损坏,无法打开或保存。确实很恶心。

在中文语言的Excel中新建了宏,在英文语言的Excel中很有可能就打不开了,甚至中文Excel保存后再次打开也会提示文件损坏,辛辛苦苦写的VBA代码就那样没了。

修复是不可能真正修复的,顶多就删除vbaProject.bin这样子,那么写的VBA代码就直接放弃了吗?显然不应该。

xlsx/xlsb实际上是一个压缩包文件,将其后缀改为zip解压,获得大致如下的目录结构。vbaProject.bin就存储了VBA工程文件,包括VBA代码。vbaProject.bin实际上也是一个压缩文件,还可以再解压,但是不能使用常规方式提取出代码。

这篇文章说明了office三件套的文件格式实际是ole文件(oledump.py | Didier Stevens

DESKTOP-K65CV8V :: Users/Desktop/book % tree -L 3
.
├── [Content_Types].xml
├── _rels
├── customXml
│   ├── _rels
│   │   └── item1.xml.rels
│   ├── item1.xml
│   └── itemProps1.xml
├── docProps
│   ├── app.xml
│   └── core.xml
└── xl
    ├── _rels
    │   └── workbook.bin.rels
    ├── calcChain.bin
    ├── connections.bin
    ├── metadata.bin
    ├── printerSettings
    │   └── printerSettings1.bin
    ├── queryTables
    │   └── queryTable1.bin
    ├── sharedStrings.bin
    ├── styles.bin
    ├── tables
    │   ├── _rels
    │   ├── table1.bin
    │   ├── table2.bin
    │   └── table3.bin
    ├── theme
    │   └── theme1.xml
    ├── vbaProject.bin
    ├── workbook.bin
    └── worksheets
        ├── _rels
        ├── binaryIndex1.bin
        ├── binaryIndex2.bin
        ├── binaryIndex3.bin
        ├── sheet1.bin
        ├── sheet2.bin
        └── sheet3.bin

借助该文提供的oledump.py(oledump.py | Didier Stevens)可对ole文件进行分析。

以下简单介绍利用oledump.py提取VBA代码的用法。

1、查看vbaProject.bin结构

image-20211118222429078

确认模块位置-以Module或模块开头的编号。

查看模块代码内容:

image-20211118222621902

Python about the metaclass

花了好多天去理解unittest.main()和Base.metadata.create_all()的实现方式,如何在不实例化的情况下知道子类的信息?

以下为实验代码,详细参考《Python Cookbook(第3版)中文版》

class Metaclass(type):
    childs = []
    def __init__(self, clsname, bases, clsdict):
        super().__init__(clsname, bases, clsdict)
        self.childs.append(clsname)

class Base(metaclass=Metaclass):
    pass


class Tree1(Base):
    pass

class Tree2(Base):
    pass

if __name__ == '__main__':
    for c in Base.childs:
        print(c)

输出结果:

Base
Tree1
Tree2

如何用Excel实现多重条件匹配与分段计价

有一个需求,需要对不同规格的包裹进行定价,在Excel里输入长宽高和重量,即可自动计算出定价信息。

但是包裹的尺寸和重量同时决定了定价。定价是分段计算的,包裹将根据尺寸和重量范围分为不同的包裹类型,比如有信件包裹、标准包裹、大尺寸包裹等。在每一个包裹类型下,对于不同的包裹重量,又有不同的定价标准。

Continue reading “如何用Excel实现多重条件匹配与分段计价”

Kindle进阶使用思路

有网友私信我Kindle使用的问题,不过小新对公众号疏于打理,几天后才看到消息,因此没有回复的机会了。与Kindle使用相关的经验其实老想分享,但是我懒,就一直搁置了起来,今天借着网友的提醒,决定弥补一下,可能会遗漏一些重要的内容,小新将会在以后补充,如有问题直接在本文留言。

Continue reading “Kindle进阶使用思路”

10.11 status

最近很喜欢落日飞车的歌。0.54

/

人的悲哀是无法感受也无法言说自己的情绪,因为活在空虚里所以连对空虚的体察都无法做到。 ​​​因为掌握的语言是如此贫乏、空洞,我只能像想要说出口的哑巴一样干着急。我想要大喊大叫,我想要毁灭一切。我反反复复觉得自己是个虚伪分裂的人,我快要爆炸了。 ​​​

7点起来还要上班,天哪我什么时候才会被开除,我什么时候才可以死掉。2.30

技术与人文

最近三天都宅在家里,睡觉、写了一些代码,博客网站修补了一下,更简洁了一些。

今天去看了看别人的博客。到了2021年,独立博客仍然存在,但大都是计算机专业学生、前端工程师的玩具,网站尽管花哨,却很少有意思的内容。技术与人文往往存在这样的矛盾:有内容,却缺少恰当的形式和载体;载体被打造得极为功能强劲,却几乎没有内容。

独立博客在今天,技术的展示比内容的展示更常见,这是没有问题的,其意义取决于我们如何看待这个对象,我们的目的。

Continue reading “技术与人文”

社交牛逼症

“社交牛逼症”这个词不知怎么就火了,到处都能听到、看到。查了一下,百度热词和微信指数都显示该词在8.25日热度从0陡然上升,但其实这个词被传播的时间还要更早一点。在B站搜索,最广泛传播的是8月1日的“社交牛逼症”视频,主角是“马牛逼”,视频主角与抖音账号“明星双喜哥”是同一人(即马牛逼),此后“社交牛逼症”相关的视频多数都与“马牛逼”有关。

Continue reading “社交牛逼症”

闲读记录

为什么卡夫卡的小说读起来老是像做梦 9.11

年纪大了,对恋爱电影无感。看了一下《花束般的恋爱》,没有撑到30分钟,就跳到了结局。9.12

我好焦虑。我希望对所有的一切都宽容一点。

\

在二楼南书房看完了《上海百年建筑史》,很不错,一口气看完。

现在南书房重新开放了,也不收费了。9.12

\9.13

世界没有意义,意义是自己赋予的。