博文

用AI Agent低成本构建ETF策略推送

图片
这两天用 AI 搭建了一个 ETF 再平衡策略的自动推送功能。 由于券商量化交易接口的开通门槛普遍偏高,作为小散户,目前最实用的方案是:获取持仓与净值变动,通过某种通道触发再平衡提醒,最后由手工完成买卖。 在整个开发过程中,我只需要向 AI 提出需求,让它给出完整流程图与实现方案,再逐步生成每一块的具体代码。 全程我没有手动修改一行代码 ,仅有一次因腾讯云函数 API 网关下线导致自动触发失败,重新交由 AI 返工修复。 耗时方面,核心功能的搭建仅用了 2 个小时,后续追加“收益报告”等扩展需求又花了 1 个多小时。 成本方面,方案采用了“腾讯云函数 + COS 对象存储”的无服务器架构,单次触发费用不足 0.01 元,被计费系统直接舍去,几乎零成本运行。 唯一的支出是 AI 算力成本。 我使用的是腾讯 WorkBuddy (普通版包月 59 元(年交),含 4000 积分),这套流程消耗了约 3000 积分,折合人民币约 45 元。这个价格远低于请一位初级程序员的时薪,更别提它还能随时应对各种小的需求变更——从性价比来看,确实相当划算。 以前看电影,总能看到黑客在终端前快速敲击键盘、屏幕上代码如瀑布般滚动的镜头。而在 AI Agent 时代,每个人似乎都拥有了这种能力。 或许在不久的将来, AI Agent 客户端将彻底取代浏览器,成为下一个时代唯一的互联网入口 。无论是点外卖、找电影,还是做复杂的数据分析,只需与 AI 对话,就能由它全程代劳。 但这也带来了一个隐忧:以目前的技术水平来看,普通家用电脑能本地部署的模型(如 DeepSeek 32B 级别),与云端顶尖大模型(如 GLM-5.2 744B 级别)在推理能力上仍有巨大差距。这意味着在相当长的一段时间内,个人的 AI 能力依然高度依赖云服务商。 当 AI 成为像水电一样的日常基础设施时,互联网领域的算力与入口垄断,是否会比以往任何时代都来得更加彻底?

年纪大了,开始怀念……

 晚上躺床上,翻来覆去睡不着。本来想着白天工作的事情,虽然做着经营分析的工作,但每次做报告都像便秘一样,身心俱疲。想着想着,又想起了高中毕业那个暑假的打工时光,想起了给舞蹈班的小姑娘拍的照片,那是我留存的最早的一张手机照片,在那之前,只有家里的胶卷相机拍摄的重要日子的一些照片。而在拥有第一部智能手机后很长一段时间,我都没有养成用手机摄像头记录生活的习惯。导致大学四年期间也没留下什么照片纪念。 所以失眠的我爬了起来,打开了电脑,看起了博客。看到高中时的我,去县里高中留级,我曾多次回顾这段时间,觉得自己第一次上高中的时候没有认真学习,从名列前茅沦为休学,导致最后也没上什么好大学。但看当时的记录,在哪里上高中我都没有变化,一直是一个积极向上的年轻人形象。确实博客里没有写到我因为讨厌老师离家出走,也没有写道整日逃课在网吧玩网游,凌晨5、6点才回家。我依然记得那个凌晨,我从网吧出来后骑车从麦当劳门口经过,几个小混混在路边叫嚣,如果当时我被打了,结果会如何呢? 2016年第一次到广州,是我离家最远的一次。在这个无亲无故的城市里,我竟然一点都不想家,反而感觉挺自由。但当时的我不懂理财,积蓄花光,还欠了信用卡,倒也没买什么东西,现在想起来我带了1万块去广州,都不知道怎么会在三个月内花光的,毕竟房租只要750,吃饭也不贵,买的最贵的东西只有一辆折叠车,和一台小米手机。虽然那时开始学会了记账,但开始理财还是太晚了。直到去年,我都没有正儿八经的规划过自己的投资,中间有8年的时间,只是收工资-花钱-记账。 年纪大了,真的是越来越容易怀念过去。每个月总有那么五六次,要反反复复的想起过去的事情,有时甚至怀疑自己是不是要挂了,才会在临终前如此回顾。一个更可能的真相是,并不是我在怀念过去,而是我在强调遗憾。刚开始留级时我以为考不上重点大学,这辈子就没希望了,但现在回想,在高考成绩出来后,上了二本线的我一样开心的不得了;毕业找工作时觉得自己为什么没能上个好学校,找工作这么辛苦,专业又不好,但后来职业一直在向上发展,对学校有要求的公司在简历筛选阶段就把我给筛出去了,丝毫不影响我去另一家优秀公司。 我还是通透的比较晚,三十多岁还在纠结人生的“不完美”,所以才会一遍遍的想过去的事吧。这样的后果就是,明天早上的运动计划又被破坏了,这是这个月的第四次。然后昏昏沉沉的去上班,继续做那份“便秘”的分析报告...

小白使用cursor编程心得

这两年无论是Chatgpt还是其他的大模型如Claude、Genimi进步飞速,几乎每隔几个月就能看到他们“重大更新”的新闻。但对于我来说,除了日常用它们应付下工作中的写作,整理下表格,其他倒也没有很依赖的方面。不过近期倒是发现了一个编程工具-Cursor。 对于程序员来说,Cursor可能已经流行一段时间了,但对于我这种业余爱好者,平时写个宏代码最多不超过100行,用网页版的Chatgpt就绰绰有余了。之所以关注到cursor是因为电脑里装了很久的一个OneNote剪辑的chrome插件突然停止服务了,这对我影响其实并不大,但却提醒到我,我是不是可以自己开发一个这样的插件放在chrome商店,甚至赚点小钱呢?另外微信公众号端的OneNote剪辑也早就不能用了,我觉得开发这样一个功能出来应该会有一定市场。也是恰巧在此之前一天看到X上有人提到cursor,我就拿来实验了一番。 下载了Cursor后我并没有直接去做OneNote剪辑工具,而是先做了一个简单的自动签到程序试了试水。签到的网站是我常用的一个梯子,几年前买了传家宝套餐,可以通过每日签到续命。我仅仅告诉cursor我要做一个签到工具,cursor给我列了个步骤,“登录-签到”,两步,然后很快就把py写了出来。测试了一下,居然就通了。 这给了我极大的信心,立刻就投入到OneNote剪辑工具的编写中。不过这个剪辑工具就不是那么简单了,首先要解决的就是微软账号API的问题。cursor贴心的告诉我需要通过azure里的Microsoft entra来获取令牌,以及如何获取OneNote笔记本的信息。没想到这个工具最复杂的其实就是授权的过程,不是无法登陆微软账号,就是登陆后获取不到笔记本信息。经过反复的把错误信息发给cursor,cursor给出的建议也是反复修改,最后我只能到微软论坛求助。微软论坛的回答也没有解决问题,倒是提醒我换用账号进行测试,使用新的账号后出现另一个报错,cursor最终解决了问题。最后算是顺利完成了本地简易版的OneNote剪辑工具。 通过使用cursor做的两个小工具,对很多博主讲的“人人可做程序员“这一说法进行了思考。首先,cursor还没有达到那种“使用自然语言就可自动编写程序”的程度。cursor可以帮忙编写框架,编写程序主体的代码,但是复杂一点的程序,特别是遇到一些涉及到引用外部API...

关于最近大火的ChatGPT

(本文由ChatGPT自动生成,不代表博主本人观点) 当一个人很久没有写博客的时候,会感到一种失落和不适应的感觉,因为博客是记录生活和思考的方式,离开了它,好像失去了一个寄托。最近我也是这样的状态,已经有半年没有写博客了。但是,在这段时间里,我也有了一些感悟和思考。 首先,我意识到写博客对我来说非常重要。在我写博客的时候,我不仅可以记录自己的思考和经验,也可以通过博客与其他人分享我的想法和知识。在这个过程中,我不断地学习和成长,也获得了许多反馈和支持。但是,当我离开博客一段时间后,我发现自己逐渐失去了这种成长和反馈的机会,也感觉自己的思考和创造力受到了限制。 其次,我也注意到了ChatGPT最近的火爆现象。ChatGPT是一种基于人工智能的语言模型,它可以模拟人类对话和生成文本。最近,ChatGPT在社交媒体和网络上受到了广泛的关注和讨论。人们开始探讨它的应用和潜力,如自动写作、自动翻译、自动客服等等。这些讨论和应用让我感到兴奋和好奇,也让我开始思考人工智能对未来的影响和挑战。 在我看来,ChatGPT和写博客有相似之处。它们都是表达思想和创造内容的方式,也都需要人类思维和创造力的支持。当我们使用ChatGPT时,它可以帮助我们扩展我们的思维和创造力,提供新的思路和想法,也可以帮助我们节省时间和精力。但是,它也有它的局限性和挑战,如缺乏情感和人性化,容易出现错误和偏见等等。因此,在使用ChatGPT时,我们应该注意其优势和局限性,并充分发挥人类思维和创造力的作用。 最后,我认为写博客和使用ChatGPT都是有益的活动,它们可以帮助我们记录生活和思考,也可以扩展我们的思维和创造力。但是,我们需要认识到它们的优缺点和局限性,充分发挥它们的优势和避免它们的缺陷。无论是写博客还是使用ChatGPT,我们都应该保持对事物的好奇心,不断学习,以跟上时代的发展。

功能平板化,电纸书的未来在哪里?

 注:本文所说的“电纸书”,是指使用电子墨水屏技术的平板设备。 最近,国内电纸书产品的头部厂商文石科技推出了一款所谓的“革命性”产品——Tab 8。这款产品的卖点在于其高刷新率低残影,文石宣称此款产品将带领业界进入“阅读3.0”时代。“阅读1.0”、“阅读2.0”这些概念,都是文石自己提出来的,噱头大于意义,不过把电纸书的刷新提升到几乎和普通平板一样流畅,确实值得一提。要知道,很多想了解电纸书的用户往往第一眼就被其“闪瞎眼”的刷新劝退。 国产的电纸书一直在往“更像平板电脑”的方向努力,kindle在中国的下场部分解释了国产厂商选择这样一条道路的原因。kindle诞生之初的目的只是为了提供一个“专注阅读”的设备,以便更好的售卖亚马逊商城的书籍。而在中国,没有一家书城一家独大,内容的分散导致厂商开发一个仅为自己服务的设备毫无市场,所以出现了多家像文石一样,使用开放系统,兼容多个内容来源的纯设备商。开放系统必然会激发人们的想象力,用户开始想用这样一个小小的设备满足更多的需要。 不仅仅是用户的需要,厂商们也有迫切的需要扩大电纸书设备的使用场景。毕竟,阅读作为一种娱乐活动,在电视出现后就成了一个小众爱好,更不用说在网络流媒体、短视频横行的当下了。既然单走阅读路线市场太小,“大而全”成了一个选择。但是和普通的平板电脑相比,电纸书有什么优势呢? “护眼”是论述电纸书优势最经常被提起的一点。有“护眼”需求的消费者主要有两个群体,一是学生,包括中学生、大学生;二是经常坐在电脑前面的白领。但其实,“护眼”这一优势被商家放大了。搜索下网上商城便能发现,1000元的价位就能买到通过莱茵TUV硬件级低蓝光认证的品牌平板。并且对于护眼,良好的用眼习惯才是最重要的,即使是纸质书籍,长时间专注观看不休息也会造成疲劳等一些列眼部问题。 “护眼”只是电纸书可能吸引这两类人群的一个特色,设备的基础功能才是最终决定消费者是否买单的关键点。对于有意购买平板的学生群体来说,他们的需求非常简单,就是看教材(书籍),以及记笔记,8寸及以上的屏幕是最低要求。对于白领来说,需求稍微复杂,但更多的是作为一个移动办公的设备,能够比手机更容易操作,同时兼具娱乐需求,如读书,浏览网页,甚至看视频。学生的消费能力不强,他们需要的是能够满足基本功能的高性价比产品;白领们具有一定的消费能力,但相对的要求设备的性能要足够出色...

聊一聊“硅谷钢铁侠”——埃隆·马斯克

无论是从财富上,还是社交媒体影响力上,埃隆·马斯克都无疑是现在最火的人。就好像当年人人在谈论乔布斯,现在的媒体、创业者也无时无刻不在讨论马斯克。 我不太关注汽车,听说马斯克的时间比较晚,经常看到他被媒体提及是近两年在Twitter上,而对他的第一印象就是“疯狂”。首先他在Twitter上的言论引发特斯拉股价的大起大落,简直像是操纵市场的凶手;其次还有他在节目上公开抽大麻,让人以为他是个瘾君子;大力推广狗狗币,不知道出于什么原因,和公开讨论特斯拉一样,让他成为操纵加密货币价格的高手。马斯克俨然成为“推特治国”的特朗普第二。 前段时间马斯克宣布收购推特,称要“维护言论自由”,让我再次感受到他的“疯狂”之外,又对他的所作所为有了一些好奇。“维护言论自由”这种充满了理想主义的言论,从一个亿万富翁嘴里说出实在是少见。花了几天时间读完了《硅谷钢铁侠:埃隆马斯克的冒险人生》,对这个现实版的托尼·史塔克有了更清晰的了解。 马斯克并非一开始就是一个实业家,他也曾在互联网领域创造出一番事业。大名鼎鼎的Paypal就是他创办的。从Paypal创办的出发点——颠覆传统银行,成立一家专门的互联网银行——可以看出,马斯克是一个喜欢挑战权威的人。毕竟当时的互联网创业者都在创造一些和传统行业完全不同的世界,而马斯克却想颠覆传统行业。这种精神贯穿了他后续的几次创业,让他一直在做“不可能”的事情。 马斯克从Paypal的创业中获得了一大笔资金,得以建立他的实业。而他的想法在当时的商界看来不仅是异想天开,而且无利可图——他想探索火星。一开始他只是想从俄罗斯那里买来几枚导弹作为运载火箭发射一些实验品,但被俄罗斯人拒绝后,他居然表示要自己建造火箭,而且马斯克为此花了几个月时间研究航天工业及物理学。一个被大家认为是亿万富翁花几千万玩一玩的项目,却被马斯克认真对待,并成立了Space X。马斯克聚集了一帮天才,从无到有的开始建造火箭,到今天,Space X已经颠覆了航天业,能够通过重复利用火箭来降低发射成本,随着发射频率的提高,让太空移民成为可能。 马斯克涉及到的产业是他世界观的体现。特斯拉在建立之初就拒绝走油电混合路线,马斯克称之为“不理想的妥协方案”,太阳城通过价格战打败了几十家电力公司,把自己打造成了一家大型公用事业公司,并且为特斯拉遍布美国的充电站提供清洁能源。马斯克希望通过这样的方式挽救地球和人类,实...

Boox替代Kindle的使用感受

图片
最近 Kindle 在京东的自营店产品出现了大面积缺货,网友们猜测是 kindle 阅读器要退出中国市场。虽然后面官方否认退出传闻,声称只是暂时缺货,但此回复的背后是 kindle 面临的日益严峻的竞争环境。本土化的内容生产商纷纷推出自己的阅读器,内容也越来越丰富,电子书市场已不是亚马逊一家独大的时代了。我卖出 kindle 换上了 Boox 文石阅读器也有半年时间了,这期间感受到了本土产品的优势所在,对比 kindle 也发现了一些不足。 优势一:扩展性 亚马逊 kindle 当年推出的目的其实是配合自家的电子书商店,可以说亚马逊本质是内容提供商而非硬件生产商,所以它的系统只能使用自家的书库。以前,确实是只有亚马逊的内容最大最全,吸引了最早一批版权意识觉醒的用户群。但是现在,版权意识深入人心,国内的阅文、掌阅、小米的内容日渐丰富,最主要的是差异化,不同平台的内容侧重不同,单一平台再难满足读者需求。这种情形下,可以自由安装多个阅读 APP 的阅读器会成为用户首选,而阅读 APP 也包括 Kindle 自家的 APP ,想获得 kindle 的内容根本无需再买 kindle 。 优势二:手写功能 Boox 买回后我一直没有用过其手写功能,延续使用 kindle 的习惯,只把它当作阅读器来用。直到某次想记个笔记,一时找不到纸笔,就用买 Boox 附赠的手写笔记在了其自带的笔记本 APP 上,体验与真实书写无异,后来便经常使用手写功能。想必试过 iPad 手写的用户一定会爱上做笔记,墨水屏虽然比不上 iPad 的流畅,但也不输真实纸笔,何况其便携、易保存。 Kindle 目前还没有产品提供手写功能,笔记和阅读这两项联系紧密的活动被割裂了。 优势三:格式支持与自带阅读器 Boox 支持的格式较多,包括 kindle 不支持的 epub ,毕竟还是有很多公版书是用 epub 格式。 Boox 也支持 kindle 特有的 mobi , azw3 格式。虽然同样有对 PDF 的支持,但是 Boox 对 PDF 重排的功能比较强大,可以根据需要进行任意调整。 Boox 自带的阅读器还支持多标签, OCR ,分屏等功能,可以说满足了阅读中的所有需求。 Boox 的不足之处 不足一:无邮件推送功能 用惯了 Kindle ,再用其他阅读器最不方便的感...

VBA学习笔记5:对文件路径的获取

图片
 VBA中经常需要对文件夹里的XLS文件进行打开、复制粘贴等操作,可以直接在代码中指定文件路径,但如果是要批量打开多个文件,就要想办法把所有的文件名存到数组里再一一读取。可以使用Application的FileDialog方法,来获取文件或文件夹的路径,再使用Dir函数读取具体的文件名。 调用FileDialog方法可以使用with语句构建,如下: With Application.FileDialog(msoFileDialogFolderPicker) End With 括号里面的参数可以有四种选择,分别是msoFileDialogFilePicker-允许用户选择文件,msoFileDialogFolderPicker-允许用户选择文件夹,msoFileDialogOpen-允许用户打开文件,msoFileDialogSaveAs-允许用户保存文件。直接运行此语句就会跳出文件对话框。这里以文件夹举例。 接下来就可以在with语句内部对文件对话框框的选择结果进行操作。这里涉及到FileDialog的show方法,show方法返回-1(操作)或者0(取消)。FileDialog还有一个SelectedItems属性,会返回一个集合,里面是所选文件的路径列表。可以用一个简单的语句理解.show和.SelectedItems的使用: If .Show = -1 Then      PathStr = .SelectedItems(1)      MsgBox PathStr Else      MsgBox "Cancel" End If 如果选了文件夹并点了确定按钮,Msg就会显示出所选文件夹的路径;如果选了取消,Msg就显示Cancel。实际应用中,通常在.Show返回0的情况后面跟Exit Sub,退出程序。 需要注意的是,如果上面的例子我们没有使用选择文件夹的参数,而是msoFileDialogOpen或msoFileDialogSaveAs,在文件对话框里选择了文件并确定后,系统并不会真的执行Open或者Save动作,而是要再写Workbook.Open语句进行操作。 FileDialog的参数可以使用msoFileDialogFilePicker来选择多个文件...

Power Query学习笔记1:多列聚合求和

图片
 需求分析:公司在全国有多个销售区域,每个销售区域又有多个项目组。现需从各销售区、各项目组收取1-12月的销售数据并汇总,汇总字段按照销售区区分。 此文目的:多个表格的简单整合比较容易,使用PQ可以实现自动更新,数据处理能力也大大提升。此文针对的是多表汇总后进行的按销售区域聚合的步骤。 解决思路:数据聚合可用的方法有”分类汇总“或”数据透视表“,但是因为上一步骤使用PQ对多表进行了整合,再对整合后的表另外单独数据透视就有点繁琐,何不一步到位在PQ中进行聚合?PQ中自带“分组依据”功能。下面是例表,同时先看下“分组依据”如何使用。 “分组依据”功能对于需要求和的列数不多的情况下很方便,但如果1-12月均需要进行求和,就要在第④步中操作12次。所以我想对这一步进行简化。 我们需要用到的函数是Table.Group[ 官方文档 ],先用最简单的形式写出这个函数,看看会抓取到什么结果。 可以看到,Group按照区域名称抓取了每个区域的数据,汇总成一个Table放在我们构建的”数据“列。对于单个Table,我们无需再进行聚合,直接对其每列数字进行相加就可以了。拿”北京“区域为例,先把它转换为列表,再使用List.Sum函数相加。 还要使用Table.FromRows函数把列表转换为一行表格。为了标识列,使用Table.ColumnNames函数获取源表的列名和汇总的结果拼接在一起。 退回步骤一,既然我们有了每个区域的汇总表格,那就可以在步骤一中用步骤二的代码对”数据“列进行替换了。 这时再对步骤一的"数据"列进行扩展即可。 最终表的效果如图

“元宇宙”将深刻影响的六大行业

 近期《黑客帝国:矩阵重启》上映了,全球观众又跟随基努·里维斯回到了Matrix的虚拟世界。抛开机器与人类的对立,Matrix放在今天来说也相当于一个“元宇宙”,就和《头号玩家》里的绿洲一样,只是在Matrix中人类没有选择权。 “元宇宙”是什么这里不再赘述,普遍认为,“元宇宙”将是一个包罗万象、无限逼近真实的虚拟世界,在未来某一天,元宇宙可能取代现实世界,成为人类生活的主要场景。如果这种愿景最终发生,将会对现在的某些行业产生深刻的影响,甚至颠覆。 1.电信产业 前几年4G技术刚刚普及时,“无限流量”成了运营商吸引用户的手段,大家乐观认为,随着基础设施的完善,“5元30M”的时代一去不复返,流量越来越不值钱,最终大家都可以用很低的价格体验”无限流量“。然而事实是,现在三大运营商均已取消”无限流量“套餐,即使进入5G时代,”无限流量“也没有回归的迹象,最多就是”达量限速“。究其原因,有工信部的整治,也有运营商的盈利需要,但本质是,现在已经进入流量世界,无论是看短视频,即时通讯,还是玩游戏,甚至打电话(手机厂商的”畅连“技术),都需要流量,内容的出产速度远远大于基础设施的建设速度。而“元宇宙”基本是现实社会的映射,其数据量更是天量级别,到时除非基础技术发生革命性变革,否则我们将进入一个“流量紧缺”时代,甚至现在的“宽带”都要按量收费了。因为数据传输已经实质上成为基础设施产业,很有可能未来的流量费变成一种“税”,由政府收取。 2.商业地产 2020年突然爆发的新冠疫情让许多公司第一次尝试在家办公,有些公司会发现,在家办公不仅没有影响工作效果,反而节约了租金、水电等成本。在元宇宙里,在家办公的效果更加显著,不是单纯的通过即时通讯派发任务,通过远程系统操作办公软件,而是像在真实世界中一样,能够和老板、同事、合作伙伴面对面交流,就像《星球大战》里绝地武士们通过全息投影开会。企业雇佣员工目的是获取的是员工的idea,如果idea通过线上传播实施,还有什么理由一定要坐在办公室里呢?再者,现在已经有个趋势,就是线上劳动者逐步增多,如视频主播,推广代理等之前被称为“自由职业”的群体,未来对写字楼的需求即使不会下降,也没有增长的理由。商业地产开发可能会萎缩到很小的规模。 3.设计行业 设计如今是个门槛较高的行业,不仅要有天赋,也要花费一定精力学习各种复杂的软件和工具。但是在元宇宙...

VBA学习笔记4:再说数组赋值

之前以为自己把数据的概念搞清楚了,在工作中多次涉及到相关知识点,但还是有一次出了问题。在给数组变量赋值时,发现直接引用单元格的方式行不通了,提示“类型不匹配”。我用了如下语句:  Dim sht() sht = Worksheets(1).Range("B4:B6") 在 《VBA学习笔记2:数组的使用》 中,我曾总结: 直接引用区域也是创建数组的办法,因为range的默认方法是value,所以直接使用arr=range("A1:B6")这样的语句就能为数组赋值了。 但是用 sht = Worksheets(1).Range("B4:B6") 却出现错误。使用Debug检查发现一些问题。 首先用 Debug.Print TypeName(Worksheets(1).Range("B4:B6")) 检查了数据类型,返回“range”,而dim sht()时,sht的默认属性是variant,是否是这个原因造成无法赋值呢? 但是当我把Worksheets(1)去掉时,这个语句居然奏效了,虽然 Debug.Print TypeName(Range("B4:B6")) 出来的还是“range”类型,但sht = Range("B4:B6")的赋值确实是有效的。 那如果我要赋值的数据不是当前工作表呢?试着把Dim sht()去掉,也就是说赋值前不声明数组变量, sht = Worksheets(1).Range("B4:B6") 居然也奏效了, Debug.Print TypeName(Worksheets(1).Range("B4:B6")) 依然返回“range“。 再试一下,如果直接声明Dim sht,或Dim sht as variant,则后面的语句无论加不加worksheets都能生效。 这让人感觉有点混乱,稍微一个不小心就会出错。在微软官方文档并没有找到相关说明。 总结了一下引用区域对数组赋值的两个规则: 1.range对象可以为未声明变量或variant变量(Dim x)赋值,其值会转换为variant类型。 2.声明数组变量后再赋值,只适合当前工作表,不能引用range的父对象。

VBA学习笔记3:Inputbox的函数与方法

 问题来源:一个项目需要使用inputbox来获取用户输入值,如果用户点击了“取消”或者输入了未在备选里的值将自动退出程序。获取输入值我使用了 num = inputbox(optfm) 语句,接下来使用 If num = false Then Exit Sub 语句来退出。测试中却发现点击了“取消”程序并未退出,而是继续执行了后面的语句。搜索后发现,原来inputbox语句分“函数”和“方法”两种,其返回值不同,所以处理方式也不相同。 Inputbox函数,是VBA的内置函数,无论是在Excel、Word,任何使用VB脚本语言的程序都能使用,而Inputbox方法,完整写法是Application.Inputbox,是Excel这个App特有的,其语法与Inputbox函数稍有不同,是为Excel量身定做的。使用中,直接输入Inputbox就是函数的用法,使用“方法”的话就必须在前面加上Application.。 Inputbox函数和方法的主要区别 1.提示文字的限制不同。两个语句第一个参数均是提示文本,但是Inputbox函数的提示文本最大可以是1024个字符,而Inputbox方法最大是255个字符。两者均可在提示文本中使用Chr(10)换行符。 2.Inputbox方法多了一个Type参数,这个参数可以指定返回数据的类型,如果省略则默认返回文本。此参数在Excel很有用,如果使用参数8(range类型),则可以直接用鼠标选择对应的单元格区域。 3.此点最为重要,Inputbox函数如果 用户选择"取消  ",  函数将返回一个零长度字符串 ("");而Inputbox方法用户选择“取消”,会直接 返回  False。 引用微软的官方总结: InputBox  方法与  InputBox  函数的区别在于,前者可以对用户输入进行选择性验证,并能与 Excel 对象、错误值和公式结合使用。 回到开头的问题,可以得出结论,如果使用了 num = inputbox(optfm) 语句,则后面判断用户是否“取消”要使用 if num="" Then Exit Sub ;如果使用 num = Application.Inputbox(optfm) ,后面的判断应使用 if num=False Then...

VBA学习笔记2:数组的使用

对于办公人员来说,使用数据最大的好处是,需要写入或计算的数据会在内存里组织好后一次性贴入单元格内,而不是逐个贴入。这样可以大大提升VBA代码的运行速度,特别是针对数据量大的表格,避免了屏幕反复刷新的情况。本文梳理几个常与数组配合使用的知识点。 1.数组的参数 数组的参数指明对数组的引用,类似对单元格区域的引用,如果是二维数组,同样遵循“先行后列”原则。如: range("A1:B6")(3,2)     '引用区域 "A1:B6"中第3行第2列的值 arr(3,2)     '引用二维数组 第3行第2列的值 但是,Range("A1:B6")(3) 是引用区域"A1:B6"中的第3个单元格的值(先行后列),而对二维数组arr使用“arr(3)”语句的话,就会“下标越界”,因为二维数组必须使用两个参数。 2.数组的产生 数组产生的方式有多种,每种方式产生的结果有细微差异。 ①最简单的方式,和工作表中的数组公式类似,即使用{}括住数组的内容,横向数组采用“,”分隔,纵向数组采用“;”分隔。VBA中的数组还要在大括号外面加上一对“[]”。 Sub 数组产生() Dim arr(), arr1() arr = [{"语文";"数学";"英语";"体育"}]     '产生纵向二维数组 arr1 = [{"语文","数学","英语","体育"}]      '产生横向一维数组 Debug.Print arr(2, 1)     ‘结果:数学 Debug.Print arr1(2)      ‘结果:数学 End Sub 上例,arr是纵向数组,因为VBA中只有横向一维数组,没有纵向一维数组,所以arr是二维数组,引用时必须用两个参数。而arr1则是一维数组。 ②以上手工录入数组元素的方式,中括号可以用evaluate函数代替。但是evaluate函数的参数是文本类型,所以要在大括号外加上双引号。为了避免产生歧义,大括号内的双引号要变成”双双引号“。如:arr = evaluate("{...

VBA学习笔记1:错误语句的处理方式

案例分析:现有工作簿A和工作簿B,A中有一些工作表与B中的工作表同名,也有一些工作表B中没有。需要把A和B同名的那些工作表内容从B数值化粘贴到A对应的表里。 此案例看起来比较简单,最重要的一步就是复制粘贴,很容易实现;通过A工作簿里的表名去找B里对应的表也比较容易,把表名设定为变量即可。难点在于A有,B没有的工作表如何处理。 首先设置几个变量,便于后面的引用: Dim Nonesht As String '在B中找不到对应工作表的提示 Dim shtname As String '需要复制粘贴的表名 Dim Desbook As Workbook '目标工作簿A Dim Soubook As Workbook '来源工作簿B 因为工作簿名比较长,所以用Desbook和Soubook来表示。用如下语句开启循环,确保A中的每个工作表都能进入循环中。同时为shtnam赋值当前A中工作表的表名,以便后续复制粘贴时可以引用。 For i = 1 To Desbook.Worksheets.Count Shtname = Desbook.Worksheets(i).Name 如果A中的工作表在B中没有对应,我初步的想法是用goto语句跳转。如何判断shtname是否在B工作簿中呢?我用了is nothing语句 If Soubook.Worksheets(Shtname) Is Nothing Then     GoTo skip Else 但是这个语句会报”下标溢出“的错误,因为如果Shtname不在B里,那表达式Soubook.Worksheets(Shtname)就是错误的。 所以我在前面加上了on error resume next的语句,期望如果报错忽略继续运行,结果依然报错。 这样犯了逻辑上的错误。系统无法判断一个错误的东西是不是不存在!既然Worksheets(Shtname)的语句错误,那后面is nothing根本无从谈起。 改进后如下:      On Error Resume Next      shtnam = Soubook.Worksheets(Shtname).Name        ...

投资和投机

很多人以为自己在做投资,实际上他们是在赌博。 提到“投机”,大多数人脑中会浮现出一个精明的,眼中透出贪婪的资本家形象,而说到“投资”,很多人会想到那个成熟稳重,谈笑风生的首富巴菲特先生。由此可见,“投机”一词的地位显然不如“投资”高。从赚钱的角度看,这两者却无分别。 投资,是指购买一项能够持续产生现金流的资产。比如购买一套房产,把它用于出租,每月都能收到固定的租金;投入现金开办一家工厂,生产出市场热销的商品,持续不断的获得利润。投机,可简单理解为低买高卖赚差价。它的实现形式更为广泛,有时甚至只需要投入少量资本就可获得巨大利益。比如外汇买卖、买多卖空。 投资有较高的门槛,想买房,想开厂,一般人都需要贷款才行。最近两年靠支付宝的推广,购买基金产品更加容易,越来越多的人会把基金作为个人资产管理的一部分,也就是投资股票。不过如果在今年二月份买了重仓大家一致认为是“价值投资”的白酒、医药的基金,后面的半年会很痛苦。问题的关键是,你无法知道基金经理究竟是不是在按照你所理解的“投资”在做投资。 投资的另一个门槛在于,如何判断投资标的的真实价值。就像做生意一样,天下没有稳赚不赔的生意,不然为什么会有人加盟了奶茶店,却破产关门呢?对于股票投资来说,我们买卖上市公司的股票,主要靠其公开披露的信息判断其财务、业务的健康与否,靠行业的分析判断其生意的发展前景。这其中需要掌握足够的财务知识,企业管理知识,宏观经济知识,随时了解国家大政方针。投资所能遭受的,只有系统性风险,而不能有赚钱逻辑上的风险。比如瑞幸咖啡,如果在全国开店开了 2000 家,还做不到 1 家店能够盈利,那就是企业经营的逻辑出了问题。如果不能识别这些问题,就远远谈不上是真正的“投资”。 那是否投机会简单些?投机同样门槛很高。门槛之一是对市场心理的判断。投机是一个与市场所有参与者斗智斗勇的过程,今天出了一个国家领导人和美国领导人通话的新闻,成千上万的市场参与者对此有不同的解读和猜想。投机者的判断必须和大多数人的判断一致才有可能从中获利。而大多数人的判断并不会有一个公告牌来统计,即使统计了,他们说的也不一定是真话。 投机的门槛之二是自我心理控制。这是投资和投机都会存在的一个问题。但做投资的时候,可以不管股价的波动,专心持股;对于投机来讲,股价没有朝有利自己的方向发展,其实是在告诉你做错了。这时候是及时止损,还...

入手一台Matebook 13锐龙版

图片
 华为Matebook自从推出以来一直都有关注,主要是受到它颜值的吸引。最近恰好需要购买一台电脑,首先就想到了它。 很久没有了解过电脑硬件,这次购买电脑搜索资料时才知道,现在移动处理器已经是AMD为王了。所以我选择了AMD的锐龙R7 4800H。尺寸方面选择了13寸,方便携带出去。并且Mate book最好的一点是,采用了3:2的屏幕,看起来比其他16:9的产品要舒适的多,也是华为的独家。如果不是因为屏幕,或许我会选择小新Air Pro。 开机使用半天时间,整体还算符合了我对这样一台笔记本的想象,但依然有些细节不太满意。 首先,屏幕开启后会晃动一阵,偶尔还会有闪屏的现象。不知道是不是和排线处不稳定有关,这种应该属于设计上的缺陷。网络上此问题似乎Mate book X更严重一些。 其次,摄像头像素糟糕。不知道自带摄像头是多少像素,感觉比数年前我那台联想Y410P强不了多少。虽说平时用的不多,但偶尔用一次还是会影响心情。 最后,屏幕反光。Mate book的屏幕乍一看起来很光滑很清晰,但是镜面反光严重。我下午坐在窗边使用,眼睛感觉很干涩很累。难道要贴一个磨砂膜才行? 优点呢,除了这个价位该有的性能,恐怕只有3:2的显示屏值得一夸。用来看Excel真不是盖的,显示内容量大大增多。办公人士强烈推荐。 如果想购买这台笔记本,我认为还需要结合个人条件考虑的问题有: 接口太少。除了耳机孔,13寸只有一个Type C和一个USB3.0接口。对于我来说,平时鼠标的接收器是一直插着,U盘现在已经不常用,所以基本还可接受。流行的“雷电”接口没有,不过我也不太了解那个可以做什么。 多屏协同的功能比较鸡肋。不太了解网上称赞的那些人是在什么样的情况下依赖这个功能,反正我觉得没什么用,电脑版的微信、钉钉都比手机上看起来要舒服多,也就传照片会方便一些。而使用华为Share传送文件,试了几次也没成功。这个功能其实其他品牌也有,比如戴尔可以下载一个Dell Mobile Connect,华为只不过把它集成在了电脑里。如果单为这个功能购买这款笔记本,我认为不值。 华为商城抢购两次均没有收获,也懒得去实体店看,在淘宝找黄牛加价120元拿到官方定价5699的电脑。单就这个价格来说,比同级别的小新air pro13贵了近700块钱。除了屏幕我愿意多给它加400块,充电器也可以多加100块(小巧),标压...

如何看待《反食品浪费法》

4月29日,《中华人民共和国反食品浪费法》(以下简称《反食品浪费法》)正式实施,没几天,微博上便出现了鲜活的案例:南京一面包店因丢弃「形状不好」面包被雨花台区市场监督管理局发出《责令改正通知书》,并组织当事人进行行政约谈。不得不佩服相关部门“效率”之高,5月1日新修订的《动物防疫法》规定遛狗不牵绳要被处罚,就没听说有哪个地方实施到位了。 作为一个吃货,为了避免自己哪天在餐厅吃饭因没有把酸菜鱼里的酸菜吃干净而被处罚,我找来了《反食品浪费法》的条文来仔细看了一下。对于消费者,该法第七条规定:“餐饮服务经营者可以对参与“光盘行动”的消费者给予奖励;也可以对造成明显浪费的消费者收取处理厨余垃圾的相应费用,收费标准应当明示。”这个条款赋予了餐厅一种“罚款权”,但实际操作起来却很困难。比如我这一餐剩下了较多的食物,那打包行不行?哪怕我出门就把打包盒给扔进垃圾桶,餐厅还有权收取我的“垃圾处理费”吗?而对“光盘行动”的顾客进行奖励,就更没有实操性。“光盘行动”省了顾客的钱,商家完全没有奖励的动力。 所以作为普通消费者,大可放心,《反食品浪费法》的“大棒”不会砸到自己头上。此法主要约束对象是食品生产经营者和直播平台的“吃播”,对这两类条文里有明确的处罚办法。第二十八条:“违反本法规定,餐饮服务经营者诱导、误导消费者超量点餐造成明显浪费的,由县级以上地方人民政府市场监督管理部门或者县级以上地方人民政府指定的部门责令改正,给予警告;拒不改正的,处一千元以上一万元以下罚款。…食品生产经营者在食品生产经营过程中造成严重食品浪费的,…拒不改正的,处五千元以上五万元以下罚款。“第三十条:“违反本法规定,广播电台、电视台、网络音视频服务提供者制作、发布、传播宣扬量大多吃、暴饮暴食等浪费食品的节目或者音视频信息的,…拒不改正或者情节严重的,处一万元以上十万元以下罚款” 《反食品浪费法》究竟有没有必要?我认为是没有必要的。还是拿上述引用的两个主要处罚条文来说,第一是商家诱导消费者点餐,其实是侵犯了消费者的知情权,这点完全可以用《消费者权益保障法》来约束。顾客在明知所点菜品菜量大的情况下依旧购买,就不属于“商家诱导”了。第二是食品生产经营者在经营过程中的浪费,南京面包店的案例正是这条法文的应用。首先我想没有哪个企业不努力去降低成本,减少浪费,否则这个企业很快就被市场淘汰了,这根本是无需强调的事情。其次,...

一张图搞懂长期股权投资处理方法

图片
 长期股权投资的初始确认有两种情况,后续计量有两种方法,转换又有7种情况。遇到问题时可按图索骥,按照初始-后续-转换-处置的步骤,逐步分析所属分支,进行相应处理。掌握此图则应付中级会计考试无忧矣。

用Excel进行个人OKR管理

图片
 何为OKR?OKR是 Objective and  Key Result 的缩写,意为”目标与关键成果“,是一种流行的企业战略管理方法,也可以用于个人发展。不过搜索了市面上的OKR工具,基本是面向企业的收费版本;个别有免费版本,又显得过于臃肿复杂,要花一定的时间去学习掌握其操作。本着简单实用的原则,我用Excel制作了一个模板,用于个人OKR管理。 OKR的第一个要素就是Objective,即目标。我认为个人长期目标不一定像企业那样明确,因为更多时候个人的目标是一种“状态”,较难量化。我喜欢的是在目标下的关键成果里进行具体的量化控制。日期区间一般以年为单位,方便进行总结回顾。 第二个要素 Key Result ,即关键成果,这一部分不得不进行具体量化,否则任务无法进行下去。并且可以根据需要进行进一步细分。我把目标设置为“时长”、“个数”这样的具体数字,进行进度追踪。小结周期一般为周,但对于阅读书籍这样的目标可以设置为“月”,通过下拉选项选择小结周期,“小结日期”会随之变化。 这里有一个 其他博主 设计的表格。我觉得她的优点一是比较美观,二来有整体进度的比例。第三就是在一张表上集合了目标和关键成果,但这样每个目标及小目标没有办法设置Deadline。另外其进度我觉得可以用量化方式改进。 不过既然用Excel,大可根据自己的需要自由设计,没有什么标准可言,最终目的还是有助于我们实现目标。 下载模板: 个人目标管理OKR.xlsx

2021年实施的新租赁准则主要关注点

2018 年 12 月,财政部会计司会计准则委员会发布了《关于修订印发 < 企业会计准则第 21 号 —— 租赁 > 的通知》,该通知要求在境内外同时上市的企业自 2019 年 1 月 1 日起实施修订后的租赁准则,其他执行企业会计准则的企业自 2021 年 1 月 1 日起实施。 旧的租赁准则将租赁分为经营租赁和融资租赁两类,出租人和承租人根据不同的租赁类型采用不同的会计处理。但是有个显著的问题就是财务报告无法全面反映因租赁交易取得的权利和承担的义务,融资租赁和经营租赁一个进表一个不进表的会计处理也给企业进行报表粉饰提供了操作空间,降低了会计信息可比性。新修订的租赁准则要求对经营租赁确认使用权资产和租赁负债,有利于真实反映企业的资产负债情况。 主要关注点 一. 承租人 1.        初始确认和计量 租赁期开始日,企业应当对租赁确认使用权资产和租赁负债。 使用权资产成本 = 租赁负债初始计量金额 + 已支付的租赁付款额 - 已享受的租赁激励 + 初始直接费用 + 合同到期预计发生成本 租赁负债初始计量金额 = 尚未支付的租赁付款额现值 这里需要注意首先是租赁期的确定,如果承租人有续租选择权,且合理确定将行使该选择权的,租赁期应当包含可续租选择权覆盖的期间,即租赁付款额也应当考虑这部分。 其次是尚未支付的租赁付款额现值的折现率的确定。准则要求使用租赁内含利率,即“使出租人的租赁收款额的现值与未担保余值的现值之和等于租赁资产公允价值与出租人的初始直接费用之和的利率”。从这个定义可以看出,租赁内含利率的计算部分依赖于出租人的初始直接费用,对于承租人来说这个不太可能获得。 “无法确定租赁内含利率的,应当采用承租人增量借款利率作为折现率”。所谓增量借款利率,简单来说就是承租人如果要借款购入这项租赁资产所要承担的利率。实务中我觉得可以以当下承担的借款成本来进行合理调整确定。 实务中常遇到的还有一种情况是,租金根据承租方在租赁资产上取得的业绩比例来计算。如果是纯抽成租金,即并非是取决于指数或比率的可变租赁付款额,初始计量时不需要包括在租赁付款额中,待金额确定后再确认。但如果租金约定了保底金额,属于“形式上包含变量但实质上无法避免”,则初始计量时便需确认。 2. ...