2024-05
18

完成修正方案

By xrspook @ 9:50:33 归类于: 烂日记

周四下午,在接近下班之前打了个电话,知道了某个表格要怎么填写以后,我就开始修正自己的VBA方案。与其说是修正VBA方案,不如说是把VBA的方案更进一步,在那个方案上面增加内容。其实最需要增加的就只是一个仓号的拼接。要获取那个数据我有非常成熟的方案,因为去年夏天已经研究得足够透彻。虽然这样,但实际上实施起来的时候还是花了一点时间,尤其是要在VBA里把SQL的数据输出到数组,然后经过几番折腾以后,再输出到单元格。如果要我用Power Query实现这个功能,根本不用费脑子,马上就能实现,但是既然我那个 Excel用的是VBA,我也就懒得混合使用了。原来的内容没有改变,增加了两个数据项目,一个是仓号合并,另外的一个是单仓变化的的二维展示。二维展示实际上也是有一套成熟方案的,也是去年夏天,我已经把最困难的部分全部都研究透了,所以现在只是把那套方案里面的东西有选择性地挑选使用。

VBA方案实现了以后,我又在另外一个Power Query方案增加输出我需要的数据,然后我就没有继续干下去了,因为我不知道如果我要更进一步大范围改动之前的PQ方案的时候,我得花多少时间。当我觉得我必须得暂停结束的时候,已经是晚上接近9点。需要大改动的PQ方案,我需要实现一个累加计算。那个东西我是用来计算库存的。首先我会获得一个期初库存,然后得到一些每日的变化数,然后按照日期排序的方式,把它们累加起来。这是最关键的步骤。在VBA里面,如果要通过SQL的方式实现这个比较麻烦,但实际上在经典的SQL里有比较直接的解决方案,但是VBA的SQL没办法做到。PQ肯定有自己的方法实现这种累加,但是也没有非常直接的方案,也是通过多层套叠的方式试实现。就逻辑来说,实际上操作的步骤跟在VBA里的实现没差多少。回到宿舍以后,当我运动完毕,在洗澡之前,我稍微在微信上搜索了一下PQ的累加计算解决方案,结果发现是有的。看了一下代码以后,我觉得那是完全可行的,所以基本上我就确定这肯定没问题。打通了最后一个累加计算的问题,我确定只要我把需要的数据都准备到位,我就能得到我最终想要的表达效果。对一般人来说,在每天都有多个变化数的前前提下,每天都计算采购成本,简直是无尽的噩梦,但是其实只要理清思路,搞清楚到底是怎么个来龙去脉以后把这些步骤固化下来。只要把每天的数据都整理清楚,自然而然就能自动得到每天的采购成本。数据是出来了,花了九牛二虎之力,但我依然要问,为什么要逼着我们提供这些数据呢?因为实际上对绝大多数人而言,没办法纠结到这个程度,但即便我纠结到了这个程度,得出来的数据还是会有那么一点误差,虽然那些误差可能你根本看不到。

花了不到一天的时间,就重新整理出VBA跟PQ,我感觉成就感满满。

2024-04
27

2个Power Query方案

By xrspook @ 11:12:06 归类于: 烂日记

花了一个早上的时间写了两个Power Query的方法,主要是用于转换1~4层的标签和第4层对应的具体内容。其实如果有大表,我就是把那个大表分成两片,第1片用方法一处理,第2片用方法二处理,方法一跟方法二重叠的部分就是第4层的标签。

方法一,实际上我是把同一个步骤重复了三遍,分别是取第1第2层,第2第3层和第3第4层。这三个步骤分别对应的就是分类1~3。分类3所包含的内容实际上就是第4层的标签。在研究怎么整这个东西的时候,我只是做了第1第2层,后面那两个重复,我直接复制后修改里面的某些数字,就可以把东西重新定位,然后生成后面两个重复步骤的结果。三个步骤的结果出来了以后合并在一起,就可以直接加工出我想要的json格式。至于方法二,我感觉比方法一还要简单一些,因为实际上就只是做一个步骤而已,但是方法二有一个做超链接的过程,属于有超链接就做,没超链接就不处理。最后json的内容就是把方法一跟方法二的结果全部融在一起,最后一行手动删除一个逗号。

做出这两个PQ方案以后,可以让完全小白的人直接生成json,把相应条目复制到目标json文件,网页接着刷新就可以了。刷新这里可能会遇到浏览器缓存的问题,但这是后话了。PQ方案需要对电脑有要求,准确来说对office的版本有要求, Office 2016以下的可能会有点问题,即便是Office2016专业版也有可能出现某些状况,但我不确定状况一定会发生,因为我很少用那个版本office。虽然可能我一开始接触的Office365是基于Office2016的,但经过这么些年的迭代更新,我不知道现二者在Power Query上有什么差异性,在核心功能上会不会有一些变动。但是这个操作只需要那个处理网页数据的人做一次就可以了,其他人完全不需要涉及,所以即便对office有要求,那么在可以行得通的电脑上操作也就没有问题。主要是Excel数据转json格式的时候需要PQ支持。

Power Query的处理上,我主要在不新增列的情况下直接修改某一列的数据花费时间比较多,比如说在原有的数据上加上一对双引号。如果我要加的不是双引号而是其它乱七八糟的东西,可能我根本不会碰钉子,但因为双引号在PQ里是一个比较特殊的存在,准确来说在所有编程语言里,双引号都是很特别的存在。所以当你要自定义一列,在原来列数据的基础上加上双引号,那么实际上,你在写脚本的时候就得打4个双引号。有些时候你得用4个双引号,有些时候你得用3个双引号,我不知道为什么PQ就是不能让我用反斜杠,如果允许反斜杠的话,我就不会被双引号搞得非常晕了。把那些东西转化为json格式的时候,我必须添加大量的双引号。那个步骤虽然我已经很小心翼翼,但是也不免经常会有各种手贱的操作。另外一个让我手贱的原因是PQ的编辑器不知道为什么会自动给我添加双引号,有可能会给我添加双引号,有可能会给我添加半边括号,反正就是我不想它给我增加的,它老是很自觉不定时增加,于是到最后我不知道为什么出错了,结果发现原来是它给我增加了我不想要的东西。

最终,我花了一个上午实现了我的计划,感觉挺爽的。

2024-04
24

为啥要这么折腾呢

By xrspook @ 8:17:53 归类于: 烂日记

要做一个报销指引的时候,我首先想到的是做一个Word,然后再做一个目录,那么不管你前面有多少个分类,对这个Word和那些目录都是不受影响的,所以实际上就是把需要的东西全部都分在一页一页里面,然后就可以了,目录这种事,是由Word才能完成的,然后可以选择到底得显示到什么分类。目录这个东西,你可以把它当做是一个页码的指引,你也可以把它当做是一个超链接。无论哪一条,你都可以直接找到你要找的那个东西,如果你操作足够熟练,甚至不需要查、不需要肉眼找,只需要调出查询框,然后直接到达。报销项目页面包括了要完成这个报销需要准备的所有资料,有些表格是需要填写的,有些资料是需要预先准备的,比如各种合同、发票之类的东西。需要填写的表格我感觉应该有空表和范表,都带有超链接。这些表格不需要在Word里体现,只需要把空表和范表都放在Word同级或者下级的文件夹,通过超链接就可以直接到达。我感觉Office的超链接应该可以做到引用相对地址,万一真的做不到相对地址,用还可以把那些需要填写的空表和范表做一个排序,给一个序号,在Word里面把这些表格的序号给填上去,同样一目了然,非常快速就能找到你要的表格。这样的操作,谁都可以做。增加修改很方便,因为索引是系统自动完成的。这个也可以保存为PDF,以防有些人手贱,修改了某些东西。保存为PDF之后,超链接依然是可用的,至于那个PDF会不会自动根据Word生成一个一样的PDF目录,我不太清楚,万一真的不行,也可以跟根据Word的目录手动生成一个PDF的目录,可能一开始的时候不太习惯,习惯了以后PDF的目录也会很快完成。总的来说,我觉得Word的这套方案非常实在,无论大家喜欢用电子版,还是喜欢把Word的全套东西打印出来、用纸质查阅都很方便。

我不负责这个项目。一开始被委派了给予这个项目技术支持的人用的是Excel。因为她太熟悉Excel的超链接以及数据有效性操作,所以做了一套级联下拉的东西出来。这其实也没有什么问题,但关键是报销项目的具体附件她以二维展开的方式加在各级分类那里。一直以来我都觉得人肉实现二维操作是非常繁琐的,尤其是当你的附件超过你的显示器的程度,你会找得很麻烦。无论是分类作为列,还是附件作为列。最终的结果都要你在茫茫的东西里找你要找的东西,首先通过一个级联下拉搜索得出某个报销项目,然后同时会出现完成这个报销项目需要准备的附件。接下来她把这些附件全部都设定了超链接,这些超链接对应的表格全部都在这个Excel里面。我已经不记得我到底说了多少个全部。这个东西的维护,一般人不是说上手就能上手,这里里面可能有几十个空标或者范表。报销的人还得懂得在一系列的表格里把自己要的那个复制出来,这个操作可能超越了绝大多数人的能力范围。他们会复制一个文件夹,也会复制一个文件,但要在Excel里把其中一个工作表复制出来,而且还不能改变里面的格式,这个操作能难倒来报销80%的人。我没试过,设定了有数据有效性的Excel转化为网页或者PDF之后会有什么效果,转化为PDF,估计就没有然后了,转换为网页还能进行数据有效性级联下拉操作吗?我觉得这条路不太靠谱,但是直接跟她那么说,又好像打击了她的积极性。

最后我只能悄咪咪地自己努力学习jQuery+Json,努力憋一个网页的大招出来。

2024-04
12

有理有据地做选择

By xrspook @ 8:17:23 归类于: 烂日记

花了大概一天的时间整理出一个用来算库存价值的东西,这里我没有使用VBA,是因为我需要一个更稳的方式。之所以不用VBA,因为已经不需要跨文件加入数据了,所有东西都将在一个文件里解决,而且相对于我得用VBA来干掉的那些,这里的数据相对来说很少,所以这一次我用的是Power Query。我有考虑过要不要用Power Pivot,但最终可能我的数据要以普通表格或者是数据透视表的方式表现出来,通过查询生成的东西最终可能要粘贴到经典的纸质版二维表里,数据透视表在这个情况下就不怎么适合复制粘贴,尤其是当我的数据透视表选项里有合并居中的设定。

在这个做这个的过程中,我有考虑过用Excel自带的公式,但无论是经典的lookup还是新函数xlookup效率都太低了,我不知道是我的电脑太渣,还是的确就那么回事。如果用PQ,在一个低端的Excel里,的确可能效果是很糟糕的,但如果我已经把刷新好的数据发给别人,别人即便刷新不出来,数据也都能看到,不影响,但如果用的是高级的公式,可能那里就一团糟了。还记得多年以前,单位有异地储备玉米,对方把到达码头和已经装船发货地数据发给我,用了sumifs,那个时候我用的office是2003的,那个公式我根本没办法使用,全部显示的都是一团糟,所以我不得不为了打开那个文件看到里面的数据又在电脑上装了个WPS。那次之后,我才努力的尝试用office 2016,之所以会跳过2013,是因为2013在数据透视表方面有无可救药的bug。如果是office 2010,高级公式依然打不开,所以现在当我要实现某个功能的时候,我要考虑什么东西会高效一点,什么东西兼容性好一点。VBA的兼容性很好,但是不是人人都敢打开宏文件。因为在以前,宏文件通常都意味着有木马之类的东西。同时,我设定了宏万一某些时候有问题,别人就会只会弹出错误,的不到结果,也会让人很紧张。

这一次我做的文件,可能后面见到的人会很多,他们可能会用不同的电脑,可能是win10,也可能是win11,有可能是office 2021、2019,又或者是Microsoft 365,也有可能是WPS,到底的WPS里面能不能正常打开并使用PQ我不知道,我估计是不行的,但是能不能看到数据呢?我觉得应该可以,但是无法通过修改某些条件刷新出新的东西。

微软的AI据说很厉害,但关键是在中国和俄罗斯用不了,所以那些都是扯淡。前段时间说Excel通过安装插件可以使用Python,但是那个Python处理是需要把数据送到远端的服务器再传送回来的,我感觉最终会跟微软AI的命运差不多。现在的Power Query相对于我第一次在office 2016里看到的那个已经成熟了很多。还记得我是第一次在自己的笔记本电脑 office 2016家庭版里见到的PQ,那个时候那就是个四不像,中文英文各有一点,翻译都不全。有些功能也不知道是我用得不对还是怎么样,反正就会卡住。对照一些经典案例,的确能得到某些结果,但是我却一直都没有经常使用,因为真的不是每个office都兼容那个东西,而且不同版本的office看到的结果和刷新到的效率可能相差很远。

要解决同样的问题,到底用什么样的工具?当我手上的工具只有唯一的时候,就只能选那个,但是当我可以做选择的时候,我会考虑数据大小、运行速度,以及不同windows和不同office下的兼容性。

2023-12
21

确定使用365家庭版

By xrspook @ 9:16:24 归类于: 烂日记

38岁生日的这一天做成了一件事,就是终于找到了一个方案更换同事的office软件。因为我发现在win11系统之下,用office 2016的确会出问题,但这种问题你又说不准到底是因为什么,有时候会出现文件报错。公式自动发生了变化,比如某些不是数组公式的会变成了数组公式,让人觉得非常无语的是数据透视表的部分完全没了,只剩下纯粹数据本身。除了这些核心问题以外,表格的格式也发生了变化,比如行列距离,但最根本的问题我觉得是当我在用365的Excel的VBA访问某些被office 2016修改过的文件的时候,会出现一些莫名其妙的错误。之所以这么觉得,是因为这些错误发生的时间跟2016修改文件的时间比较吻合。在没有找到VBA出现问题的根本原因之前,我首先得排除这是2016造成的。2016 proplus的版本里也可以使用Power Query,但实际上数据刷新的时候,非常容易卡住。在365里可以刷出来的数据,2016会卡在那里,可能多刷几次也能行,但是那种体验会让人觉得挺崩溃。因为我是一个用了365好几年的人,但因为同事的电脑是2016,所以虽然365已经引进了一些动态公式,但是我却一直不敢学习使用,因为只能我能看得到,别人看不到,这样就没办法工作了。现在如果大家都用了365,我就可以怎么高端怎么方便怎么来。

近期我发现很普通的vlookup公式在365最新版本之下,会自动会变成一个动态公式,根本不需要把公式往下拉,它自动会显示一个蓝色的窗口,里面就是你需要下拉的那些东西。那种动态的感觉直接让我联想到了超级表格。365的其它查询公式也有这么牛逼的功能,我在看其它公式介绍的时候就发现了,但直到某一天,我自己用vlookup的时候才发现原来传统的公式也升级了这项功能。

本来我的设想是买office 2021的密钥,跟同事经过一番讨论以后还是觉得单位购买Microsoft 365家庭版比较划算。首先因为家庭版可以绑定的电脑比较多,其次是因为如果电脑经过一批又一批的更新换代,新的电脑自带了office,365可能就不需要购买了,但如果只是一次性买2021的话,经过几年的迭代,那个东西虽然买回来很贵,但实际上还是会有老化的时候。

我足足花了一个上午的时间才总算最终确定了这个Microsoft 365家庭版的方案。,但把365装在同事的电脑上,并确定可以使用,又不得不拖到了下午。首先找做表的人,然后是找要签名的人。接着找建立账号的人,最后找付款的人。付款的人说因为申请表还没有列出来,所以还不能那么快就付款,因为付款就会自动生成电子发票,电子发票的时间不能早于申请表的时间。所以最终的决定是先把office 2016卸载了,然后安装Microsoft 365,接着是用同事的某个家庭账号里面的共享子账号暂时支撑一段时间,等单位的家庭账号买回来了以后再把同事的365账号更新上去。

生日这天让我没料到的是明明是星期三,消消乐却有了更新,当我好不容易干完了20级以后发现原来星期四还有一个更新。1220的算是节日加更,我搞不懂这到底算是什么节日,圣诞吗?元旦吗?还是说澳门回归?平平淡淡就好,每周20级就可以了,一周折腾两次很心累。

© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress