2023-08
21

见鬼后攒经验

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

回到家后我依然控制不住自己,要打开Excel的VBA实现各种功能。

前几天说过,我想把一个一维数组输出到Excel的列单元格。发现即便我用了转置,依然无法实现,于是我硬是把那个一维数组变成二维数组,然后不需要转置就可以把那输出到列单元格。这样我就需要在赋值的时候多写一些字,输出到单元格那里时完全按照一维的大小去设定。后来我在某天尝试之中偶然发现普通的数组的确是可以用一个转置输出到列,教程也是这么说的,但是如果那个数组里面有一个空值,就会导致错误。系统就会显示出现“类型不匹配”。到底这个不匹配是个什么东西?我觉得如果这是python,如果这是在VSCode里,问题会被描述得很精确,实际上就是因为我输出的那个一维数组里面有空值。为什么二维数组里面有空值可以随意输出,但一维数组却不行?这是让我觉得非常无语,因为我就是对同样的数据用过一维数组跟二维数组输出,就内容来说,两个没有任何区别,但问题就是VBA这个奇怪的东西,当你把有空值的一维数组输出到列单元格就会出错。一维数组正常输出到行单元格的时候是不会出错的,而列的时候之所以出错,是因为输出到列必须在外层套一个转置。处理掉那个null对我来说很简单,因为我要输出到列的那个数组是从其它数组里赋值过去的,赋值的时候我多一条判断,如果那是空就直接送一对双引号,也就是让那个元素变成空字符串,而不是null就行。这样的话我就可以在一维数组外面套一个转置,然后输出到列单元格。对所有编程语言来说,null都是一个让人觉得很敏感的东西,很难说得清那到底是什么,所以几乎所有编程语言都有个isnull去判断那个东西是不是null。如果你要对某些字段进行运算,一旦在里面遇到null,你的汇总全部会失败。那种风格跟在Excel里面处理器空的单元格,有没有都无所谓完全不一样。

第一次我是在Power Query里遇到null,当时我就觉得很奇怪,为什么明明应该是有数的,但我连加之后汇总列却没有数?后来发现原来被连加的某些列是空的,这样就导致其它列即便有数,最后汇总也是空。所以我就经常做很无聊的事情,如果我要连加,我就先把那些列全部转为0,然后在整个操作结束以后,再把那些0全部转为空。这些看上去很无聊,多此一举的事情如果不干,根本得不到正确的结果。当然,如果我不是在PQ里可视化操作,我完全可以在汇总列那里用条件语句把之前连加的那些列全部都用公式先判断,然后再加。如果所有这些事情都是在高级编辑器里面完成,显然修改汇总列会比较简单,但如果不想敲键盘,直接选定那些可能被连加的列,然后设为0,最后再把那设为空,从鼠标和人的逻辑操作上来说是比较直观的。

我发现如果要在VBA要进行工作簿open的操作,界面会闪,但如果用的是ADO+SQL的查询,完全没有那种感觉,但实际上ADO+SQL是可以进行写入操作的,所以我到底能不能通过那个东西无感新建文件呢?

2023-08
20

USB摄像头又挂了

By xrspook @ 10:57:21 归类于: 烂日记

到此为止,我试过四次给自己剪头发,只用三次在家里。第三第四次我都用上了谷客队HD98 1080P摄像头。但就是在第四次剪头发的时候,好不容易我终于剪完后面,当我要换个角度剪侧面的时候,一个踉跄,卡了一下,直接让我扯了那个摄像头的USB线并踩了一脚。接着我就发现笔记本里摄像头的画面直接停留在扯淡那里。当我拔掉USB再插回去以后。电脑可以识别到有USB摄像头,但是屏幕一片漆黑。也就是说这一个踉跄直接毁掉了我的这个摄像头。这个谷客摄像头的购买是有一段风波的,我先是在闲鱼上买,收货后发现全部都是马赛克,接着我就在淘宝上又买了一个,但闲鱼那个是1080P的,淘宝上那个新的是720P的。720P收货发现没有问题。当我即将要回家,在那之前打算把1080P的丢掉之前我试了一下,发现。我领了半天以后那个东西可以了,于是我赶紧联系卖家,把款还给他。在第四次剪头发之前,我把720P的带回来单位,家里只剩下1080P。其实把720P带走的时候,我有想过万一这个1080P坏掉了,我还有个720P的做替代。我不知道这种事情是不是根本就不应该去想。因为事实证明,有时候你不去想那个东西就不会发生,但如果一个不小心不知道为什么想了一下,接着就真的应验了。幸好头已经剪完了后面,也就是最需要摄像头的地方。侧面虽然也挺难搞的,但是用镜子大概差不多凑合着也能行。

坏掉的摄像头插到电脑上电脑可以识别出有USB摄像头这个设备,而且电脑说这个设备运转正常,所以说我觉得这意味着这个摄像头的硬件是没有问题的,但有可能USB里面的某条数据线断了。为什么我会有这种猜想呢?因为当我把摄像头插到电脑上,然后掰那条线的时候,曾经试过有两回,摄像头的监视画面从黑色变成了白色,但只有那么一刹那,仅有那么两次,接下来无论我怎么把那个线怎么甩那个摄像头都是黑屏。但我又发现,当我狠狠地折腾那个摄像头的时候。老旧台式机的USB也好像出状况了,因为首先是我那个USB的网卡接收信号变得很差,接着是那个网卡好像直接就不工作了,处于断网的状态。所以我赶紧把那个摄像头拔掉,然后把电脑关机。我不知道是不是我折腾那个摄像头USB线的时候,数据线里面断掉的那个部分又与某些东西短路了。拔掉摄像头以后,我就把台式机给关掉了,所以台式机之后有没有好过来我不知道。我感觉应该没有问题。理论上是没有问题的,因为我试过单位的那台台式机的某个USB口质量实在太糟糕,所以在某一次插进去的时候插不进去,我感觉机子直接就短路了,直接关机。当我把那个U盘拔出来的时候发现那个USB口直接里面某些东西就翘起来了。那一次真的把我吓得够呛的,在断电的情况下我尽量又把那翘起来的金属还原,然后尽可能地让它们完全不会互相触碰,接下来我就直接用胶纸把那个USB口给贴上,再也不能插那个地方。当然了,在贴那个胶纸之前,我还是试过的电脑能开正常运行,什么问题都没有,只是USB口少了两个。如果要保证在移动搬动情况下,那个USB口也不出状况,我感觉最好还是在里面打一些胶。最好当然是硅橡胶,但是没有的话,热熔胶估计也行。但是我还没那么狠真的要那么干。

既然我判断是USB线断了导致摄像头用不了,所以我就把其中一条充电线剪了,然后跟摄像头的线接起来。两条USB线都是黑红白绿。USB充电线红线和黑线特别粗,摄像头的四线没有特别粗特别细的,但从剥线的难易程度来说,红线跟黑线剥得轻松一点,绿线跟白线实在是太难剥了,但是当我把摄像头跟充电线接一起以后,发现无论是白对绿还是绿对白,电脑都再也无法识别到USB摄像头。也就是说,我把摄像头的USB线剪断再接上这个操作宣告失败。

这个波折的摄像头,我得拿回单位用万用表测一下原装的USB口和充电线的USB口。确定那4根线的接口位置完全一致。如果那两根USB口的线任何一根或者全部两根都没办法在线头和金属口那边连通,就意味着我这是在瞎折腾,再换一条USB线连摄像头估计就可以了。

一个USB摄像头,怎么会这么的纠结

2023-08
19

活过来了

By xrspook @ 10:15:14 归类于: 烂日记

昨天说到,我遇到了码农的蓝调,吐槽了那么一番以后,我感觉好些了。之前觉得过不去的那些坎直接忽略掉一些,然后把重心放在另外一些上面,好像我又可以继续开展下去了。周四晚上没做运动,在办公室待到10点多才回宿舍。有单位作业的原因,也有我在纠结SQL的原因。埋怨不能解决问题,除非我不想用这个工具继续干下去,否则我就得想出对策。

常言道,退一步海阔天空。当我在那些点上没办法继续下去的时候,我往后退了一步,从整体上思考我为什么要做?我要做到一个什么效果?其实一开始的时候我并没有很具体的目标,有很多东西我想实现,而且我也知道我应该可以实现,所以杂乱无章的东西,应该从哪里开始?当我折腾了好几天以后我发现在已经做出来基本成熟的东西其实是雷同的。主体思路可以这么说是完全一样的,但是具体实施有一点点条件上的区别。它们的整体思路都是先设定一个日期范围,然后计算出期初库存、期间变化以及期末库存,最后把这三个东西拼起来,从整体上说就是这么简单。这其中主要区别是分组的条件。到底要分组多少个因素?在没有很仔细考虑这个问题的时候,你会觉得这些因素可以随意组合,但实际上把它们随意组合出来的那个效果到底你有没有其实不用的呢?还记得在我做这个之前我就研究过别人怎么把小计合计总计这种东西放在最后。结果原来是它们增加了一些排序的列。明细是1汇总之2,排序的时候先排这个,后面的再继续,这样就保证了汇总一定在最后。当时我不明白为什么那个人要把那个字段叫做排序A。当我自己实操过以后就明白到,因为排序估计是一个系统关键词不能直接用。之所以是A,因为非常有可能还会有B和C。如果你的那个表有小计合计和总计,就得有排序ABC。这样再组合其它的分组条件,你才能最终能让这三个汇总在它们应该有的地方,而不是乱糟糟的随意出现。当然了,之所以有三重的汇总,肯定是因为里面的条件列至少有三个。从技术上,的确能生成这样的表格,但实际上从使用角度考虑其实挺麻烦的,要一层一层选虽然关键词很明显,你把那些“计”选上了,那就是汇总的,你不选那些“计”全部都是明细。当我终于学会了这种明细汇总合并,学会了让它们正确排列以后,我反倒在纠结,乱糟糟一团东西真的很碍眼,当你要找自己想要的,反而得费点眼睛。当我有那个疑惑的时候,我上了个洗手间,蹲在坑上的时候我突然想到,如果我用VBA生成一个明细,然后我那些”计”就不用那么费劲。想生成就生成,不想生成就不用管他。要汇总还是要明细,任君选择。但我马上也明白到。因为现在我那个表格实际上是一个二维表,计算字段挺多,要把它们一个一个拉透视表值那里显然挺费手,而且一般的数据透视表没办法完成字符串拼接。最重要的是我花那么多时间,实际上只是通过一些参数去查询一个大表,最终我得根据查询出来的那些结果还去做数据透视表,我为什么不直接对数据源进行这个操作呢?想到这一点,你会觉得之前的努力好像全部都没有意义了。

然后我又马上明白到,要在一个普通数据透视表上面体现期初库存、变化数和期末库存(横向)是不可能。但是通过这种VBA的高度定制,我可以实现。所以我花时间做这种定制的目标就是能一目了然展示一些我经常想知道,但是以前我只能通过东拼西凑折腾一番才收集得到的信息。这样的好处除了方便以外,还有就是如果这种制作流程完全符合事实,我根本不用担心某一次自己手贱制造错误。要让这种费时费力的定制有意义,首先我得非常明确自己到底要的是什么,而不是一边做一边突然想到好像雷同的我也能做一做。

周四晚上退一步的时候,我还真想清楚了自己到底要的是什么。

2023-08
18

蓝调了

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

周四的傍晚时分,我突然有点码农蓝调的感觉,因为好像无论我怎么整,前面总有无数的奇奇怪怪的问题。这些问题居然没有大路的答案。原因是Excel的SQL已经被阉割到一种没人能说得清的程度了。我就想知道到底Excel里的SQL有什么样的函数,知道有什么函数,知道函数怎用,才能以各种叠加的方式得出我的招数,但问题是人微软自己的手册都没有说清楚到底Excel里的SQL可以怎么个用法?相比之下,Access写清楚了,SQL Server也写清楚了,不同版本的函数不一样,些高版本能轻而易举函数就能实现的功能旧版本也有替代方法。但是Excel里的SQL像一个谜一样。你得不断尝试直到绝望。因为你拿着那个问题去搜索,没有结果,结果都是其它数据库的,虽然都叫做SQL,但差别真的很大。

的确用VBA+ADO+SQL搭配能解决一些小数据的问题,而且速度很快,但为什么微软在这个基础上还要继续整出 Power Query和Power Pivot,因为他们知道在操控数据方面,VBA本身真的有很多限制。当我死磕了一周以后,我发现VBA要死要活折腾半天出来的东西如果在PP里两下就搞定了,而且那还是在可视化的情况之下。至于PP,那是不允许你用不可行的方式去操控的,所以虽然三个都在考验逻辑,但是在Excel的SQL里面,我觉得对我最大的考验是,我明明知道要那么干,我明明知道用其它工具应该怎么干,但是无论如何我在这个Excel VBA里面就干不出来。

我遇到的某些问题,跟SQL没有关系,纯粹是VBA数组的问题。VBA的一元数组,如果要输出的话,它会在一行里输出,但如果你要把这个一维数组在列里面输出,你就得做个转置。我遇到的问题是,即便我已经设定了转制。系统依然说我的类型错误,最后我是怎么干的呢?明明我那个是一维数组就可以实现了,但为了可以顺畅输出,我硬是把那个东西设置为了二维数组,另外一维完全是空的。这样的话在我输出到单元格的时候只给予一列的空间也就是那空的第二维根本不用管他。经过SQL处理生成的记录集,如果要输出到数组,通常是一个二维数组,那个二维数组跟VBA自己的数组又是转置的关系的,那个记录集的数组编码是从0开始的,VBA默认的数组是从1开始的。如果在VBA里把一个字符串打断赋值给数组那又是从0开始的。在python里,默认就是从0开始,什么东西都从0开始了,所以你不需要为长度跟起始数值还有突然间又有个转置之类烦恼。

周四我遇到一个算是逻辑意外的事件。我要筛选某个表里某一字段不包含某个关键词的记录,但问题是那个字段里的东西有关键词也有空,我需要筛选出来的记录是关键词以外的其它字符以及空的。当我where 字段A not like ‘%关键词%’的时候,结果出乎我的意料。因为那个关键词是包含的关系,所以我没有办法精确控制,所以我必须在关键词的前后加上%。这句筛选的结果是字段里所有那个字段的记录都没有被筛选出来。不就是一个包含的关系吗?Excel的SQL里面允许用正则吗?最终我用的方式是在where里面用两句话,一个是not like,筛选到那个字段里没有关键词,但是有其它字符的记录,另外一个是用or的关系搭配一个isnull(字段A),这到底是什么情况呢?如果在其他地方,一个contain之类的东西就能表达出来,如果允许用正着,正则也能很好表示不包含关键词,Excel的SQL到底允许我用什么工具呢?

SQL in Excel这把刀到底应该怎么玩???

2023-08
17

选择性透过

By xrspook @ 8:24:06 归类于: 烂日记

既然我不可抗拒不去上党课,所以我也就得选择晚点去、靠后坐、上党课的时候开小差。如果这种事情一个月只发生一次,又或者是好几个月才发生一次,我还可以忍受,但是这种事情已经到达了一周起码一次,这是我无法忍受的。毕竟我只是个什么都不是的群众。请外面的老师回来感觉好一点,如果是单位的领导又或者是某些小组学习就更加无聊,让人抓不到重点。外面的人过来讲课还有些新鲜感,虽然说的都是那些东西,但起码会带入一些我之前不知道的案例或者信息。如果是其它情况,他们就只是在读书,完全不切实际,就是把某些文章、某些讲话、某些书本里面的重点及段落的第一句话又或者是中心思想读一遍。这些年下来,我已经完全抓不到那些东西的重点了,虽然那些话会被重复一遍又一遍,但是对我来说就像某个小语种的外语一样,我知道他们在说,估计也能模仿一下一两句,但是完全抓不到重点,不知道他们在说什么。

那些学习就是学这么些东西吗?一次又一次地抓不到重点,我当然会讨厌这种学习。之所以会抓不到重点,是因为领学的那些人根本就没有在那个上面用过心。他们有用自己的脑子去考虑过你读的是什么吗?习大大说的那些话跟他们自己的实际工作有什么关系呢?不联系实际实际的哲学什么狗屁都不是。作为单位的领导,作为单位的中层,他们从来都不把这些先进性紧贴自己、往自己的工作上靠,所以出来的结果就是他们说了等于没说。你们的声音很好听吗?为什么我要听你们读书呢?如果要听读书,我还不如直接看一段视频,或者听一段专业人士的朗读。你们只是把那读出来,完全不经大脑就结束以后还得找我要感受?这是什么逻辑?不如反过来我给你读,你给我谈感受好了。所以上面一次又一次要以这些为主题写各种征文的时候我从来都不觉得那跟我有任何的关系。因为情况就像你叫我用一种我根本不认识的小语种写文章,我怎么知道该怎么写呢?即便我东拼西凑,哪怕是用AI整出来的一篇,我依然不知道那在说什么。

传达思想变成直接把上面的资料读一遍这叫做传达思想吗?最高领导有他们的方针政策,一层一层下来,你就必须把东西具象化,到达科长到班长的那种程度就应该更加贴合实际,把那些条条框框实现出来,而不是最高领导人说什么你就重复一遍。把时间都花在把那些句子读一遍又一遍上面,我觉得一点意思都没有。从来不会有个单位的领导或者中层站出来说,结合把最高领导人的那些指示转化为我们实际的工作应该怎么怎么做,从来没有。作为传达者中间人,他们不把最高领导人的东西具体化,不把上面的高深语言翻译过来,让最基层、最没有文化的人,比如像我这种也听得懂、知道该怎么做,一切都是扯淡。

我只会一门心思扑在最基础的工作上,你们愿意学而不思过日子是你们的事,我觉得那还不如不学。

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