大家好,又见面了,我是你们的朋友全栈君。
背景
Office的编程语言较老,和现有高级语言相差较多,导致入门以及编写差异较大,编写和调试不方便,所以一直没考虑过使用VBA进行Office编程,但最近有个需求,是在无高级编程语言环境的内网主机上进行表格自动化处理,所以必须得用表格自带函数实现简单逻辑以及VBA实现复杂逻辑。
需求
对A和B进行m次评分,计算A和B的最终评分。计算逻辑:不是去掉A和B各自的最高分和最低分,而是计算A-B差值的最高分和最低分(负值),去掉这两组数据对应的A和B的两组评分后,剩下的m-2次评分求均值,得到A和B的评分。 特殊情况:若A-B恒等于const,则算法需要考虑去掉评分后可能只去掉了一组评分,因为按照匹配算法来说,先后顺序匹配到了就认为是匹配到了,而不去判断去掉的两组评分是否是同一组。
VBA代码
总结
Excel比较老了,所以编程方法与高级语言相差较大,写程序不好写,比如数组是1开始索引,圆括号而非方括号取索引,类似matlab,取数组的值需要raw4(r,1)不能raw4®; VBA是Office留下来的接口,对于复杂逻辑、自动化处理有用; 简单的逻辑还是使用Excel自带的内置函数实现,更好理解,缺点是只能写一行函数。 wps的宏启动需要联网,所以内网下启动不了宏; Excel2003 支持宏运行,录制宏开始后进行表格操作,然后停止录制,点进去选择宏后编辑,进入IDE环境,可自动生成对应的VBA代码,可以参考,F1帮助手册; pandas可以读取Excel进行精确的复杂逻辑操作。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135462.html原文链接:https://javaforall.cn