博文

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