(虽然我曾经反感EXCEL,但是这篇内容确实很有意思,可以在工具层面开拓一丢丢思路)

因为我计划周日下午出去打球,大概要三个小时时间,所以先把文章写出来,把脑子留出来享受多巴胺。

小朋友,假如你现在要学一门新的编程语言,首先要做什么呢?

  1. 百度:最好的编程语言
  2. 百度:PHP/C++/JAVA编译器
  3. 百度:最好的编辑器

不知道这里有没有必要说一下,编辑器和编译器不是一种东西。

目前高校的学生似乎但凡是理工科的都要学习C语言,使用的编辑器不尽相同。我也蹭过外语学院的Python课,对于很多文科生可能配置一个Python的环境都有点难度。假如有这样一门语言,毋须我们去下载安装包,或是配置环境(说的就是你,JAVA!),甚至不需要install各式各样的扩展包去实现类似于可视化这样的功能,那绝对是一个适合于初学者的绝佳语言。这样的语言真的存在于大多数人的身边(要是您作为初学者就用Linux那就当我啥也没说吧),这就是传说中来自巨硬的人文关怀——VBA。

1、Why VBA&EXCEL

(因为之前没有见过别人使用VBA,所以前文的解释内容比较多。若是觉得前面的叙述性文字太磨叽,大可以直接去后文看程序和图片)

下面这一段是来自百度百科的介绍。

VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。它也可说是一种应用程式视觉化的 Basic 脚本。
1993年由微软公司开发的应用程序共享一种通用的自动化语言--------即Visual Basic for Application(VBA),实际上VBA是寄生于VB应用程序的版本。1994年发行的Excel 5.0版本中,即具备了VBA的宏功能。

注意这里我说的是VBA而非VB,而前者只大概算得上是后者的一个子集。若是使用VB,那其实和学习别的老旧语言没什么区别,成就VBA的正是EXCEL(或者ACCESS也可,但是我还不会用)。

思考以下,对于CFD的学习者,EXCEL可以带给我们什么?

  1. 现成的前处理(或数据结构/结构网格)
  2. 现成的后处理(可视化)

而这两者甚至都不是最直接的变化,通过EXCEL,我们获得的是整个(入门级的)CFD流程的可视化。所以我非常乐意在CFD的初始阶段使用VBA,从而更直观地欣赏计算的流程。

当然,这一篇的内容要求我们有一个能运行的EXCEL,至于WPS怎么用我就完全不清楚了。

2、VBA(很)基础

VBA不愧是一门古老的语言,其语法风格和FORTRAN贼像(其实和verilog也挺像)。这里感觉没必要赘述,所以简单列举以下就放一个教程的链接好了。

Excel VBA 编程教程_w3cschool​www.w3cschool.cn

~数据类型

毕竟EXCEL是十分面向应用的,数据的类型也是十分丰富。VBA里的数据类型有:字节型(Byte)、整数型(Integer)、长整数型(Long)、单精度浮点型(Single)、双精度浮点型(Double)、货币型(Currency)、小数型(Decimal)、字符串型(String)、日期型(Date)、布尔型(Boolean)等。

也可以用特殊符号代替类型来声明,称为类型声明符

~数组

毕竟运算的主体参与者都是数组,所以单独拿出来说

Dim 一维流场(1 to 20)
Dim 二维流场(1 to 20, 1 to 20)

或者

Dim 二维流场(20, 20)

还有其他很多创建数组的方法,这部分还是自己稍微看看吧,在已有的编程基础上理解一门新语言的基础内容是很快很容易的一件事。

不难注意到一个有意思的地方,变量可以是中文,这是一个比较难得的优点吧。但是很多时候在EXCEL里数组并不是很必要的东西。

~运算符

~控制结构

If 

有木有闻到一股浓厚的Fortran味儿?当然控制结构不止一种,剩下的自己了解以下就可以。

For i=1 to 20 Step 1blablablabla...
Next i

~引用单元格

最后我们需要将VBA和EXCEL结合起来,这需要我们在VBA中引用EXCEL的单元格,比如我要让A1格子里面的数值是1,常用的有两种方式

Cells

Cells(1, 1) = 1

Range

Range("A1").Value = 1

至此语法的部分已经能够应付一些基础问题了,所以到此为止。

3、EXCEL可视化

真心感觉这一部分不用我说什么,几乎就是鼠标在软件上面胡乱点一点就能掌握个大概。

假设我整了个无粘平面势流的流场。

现在我要把这个区域处理为类似于heatmap的样式

或者画出来三维的样式

没有调整角度,但是意思还是到位了

4、开始迭代

这里建议打开并新建excel表后的第一步是ctrl+A,然后调整表格格式。我一般使用宽2高16,比较接近正方形。

之后写宏,包括两个部分(Sub()),分别是用于恢复流场初始条件和迭代的模块。

Sub 还原()A = Asc("A")Z = Asc("Z")For i = A To ZFor j = 1 To 26If (j = 1) ThenRange(Chr(i) & j).Value = 25ElseIf (i = A) ThenRange(Chr(i) & j).Value = 26 - jElseRange(Chr(i) & j).Value = 0End IfNextNext
End SubSub 迭代()A = Asc("A")Z = Asc("Z")For t = 1 To 10For i = A + 1 To ZFor j = 2 To 25If (i = Z) ThenRange(Chr(i) & j).Value = Range(Chr(i - 1) & j).ValueElseRange(Chr(i) & j).Value = (Range(Chr(i - 1) & j).Value + Range(Chr(i + 1) & j).Value + Range(Chr(i) & (j - 1)).Value + Range(Chr(i) & (j + 1)).Value) / 4End IfNextNextNext
End Sub

注意一下这里的判断语句中逻辑表达式的格式,以及迭代变量i的取值方式。另外t代表迭代次数,运行一次即迭代十次。

我试试上传视频

https://www.zhihu.com/video/1245172693106065408

好吧没想到只有2M(其实以前单独给这个发过一个视频,但是很长)

这就是所谓的通过EXCEL实现计算流程的可视化,看到高斯赛德尔迭代的整个过程。如果觉得计算太慢,可以关掉条件格式,影响速度的主要因素就是渲染。

到后面讲到求解算法的时候,我可能考虑很多去用VBA实现,这样运行之后就还可以加深对算法的理解了。

说实话使用VBA的实际意义并不大,主要还是在初学阶段的理解帮助上,但是如果自己能理解,或者熟练使用python一类的语言去导出.gif文件,也能够替代VBA了。至于我嘛,花了那么多钱买个电脑,这OFFICE不用白不用哈哈。

下一次没想好写啥,大概率是常微分方程数值解法吧。

夜半风起撼窗,窸窣叶语促眠。睡觉觉啦晚安~

excel宏教程_篇四、CFD Coding之后处理(VBA/EXCEL)相关推荐

  1. excel宏计算机,excel宏教程_电脑基础知识_IT计算机_专业资料.doc

    excel宏教程_电脑基础知识_IT计算机_专业资料 Excel宏教程 一.?? 选中单个单元格 Range("").Select ? 例:Range("C9" ...

  2. excel宏教程_利用Excel和Power BI,打造自己的BI数据模型

    文/大脸猫8年汽车行业数据分析经验,擅长跨行业快速理解业务并搭建模型,利用Power BI,Python等工具实现业务及报表自动化,相比技术更关注如何落实实际业务场景的解决方案. 相信很多人使用Pow ...

  3. ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区...

    原文:ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 入门案例分析 在第一章里,我们已经对ArcGIS系列软件的体系结构有了一 ...

  4. excel使用教程_汉字资料如何进行数据分析?Excel中医学汉字资料转化为数字资料视频教程——If/Iserror/Find函数的结合使用...

    杏花开医学统计 医学统计教程,统计分析服务 关 注 Excel中医学汉字资料 如何转化为数字资料 关键词:Excel 我们平时使用Excel记录的绝大多数的医学资料是以汉字形式记录的.以汉字形式记录的 ...

  5. python与excel教程_办公自动化系列(1) | Python与Excel交互教程 - 环境搭建

    要实现Python与Excel的交互,我们首先要找到一个连接双方的纽带,它就是xlwings.xlwings是一个python库,支持从Excel中调用Python,也支持通过Python去操作Exc ...

  6. excel使用教程_改变Excel图表展现形态的8种不同坐标轴设置方法

    Qzone 微信 改变Excel图表展现形态的8种不同坐标轴设置方法 IT闻道者 2020-07-27 14:37:50 1.使用对数刻度坐标轴来改变Excel图表的展现形态的方法 采用对数刻度形式的 ...

  7. 高级Excel功能教程_编程入门自学教程_菜鸟教程-免费教程分享

    教程简介 Excel是办公室自动化中非常重要的一款软件,Excel函数则是Excel中的内置函数.Excel函数共包含11类,分别是数据库函数.日期与时间函数.工程函数.财务函数.信息函数.逻辑函数. ...

  8. Excel Dax教程_编程入门自学教程_菜鸟教程-免费教程分享

    教程简介 DAX代表 Data Analysis Expressions. DAX是一种公式语言,是函数,运算符和常量的集合,可以在公式或表达式中用于计算和返回一个或多个值. DAX是与Excel P ...

  9. wps vba宏插件_合并和拆分表格,告别VBA和插件,用WPS表格自带功能一键搞定,而且免费!...

    Excel情报局 生产搬运分享Excel基础技能 OFFICE知识文艺青年 用1%的Excel基础搞定99%的日常工作 做一个有文艺范的Excel公众号 Excel是门手艺 玩转需要勇气 表哥带你玩转 ...

  10. excel自动保存_萌新必看!python处理excel实例

    电脑上必安装的办公软件三大软件:word.excel.ppt,其中excel是在处理数据效率最高,也是最为繁琐的,因此高效快捷使用excel尤为重要,以下为大家介绍使用python更自动化处理exce ...

最新文章

  1. VS2019 无法解析的外部符号 cublasSgemm_v2
  2. PMP-【第15章 PMP考试的难点与易点】2021-2-17(304页-312页)【完】
  3. 为什么报表里面记录的创建时间 比我们电脑客户端的世界时间 隔8个小时?这个是什么原因?...
  4. 认识微服务-SpringCloud
  5. 一张图看懂阿里企业级分布式应用服务EDAS
  6. Qt C/C++统计运行时间
  7. 关于IAP:测试时能获取产品价格,却不能获取产品名称的问题
  8. 几十秒构建端到端 AI,NeurIPS 2020 AutoDL 竞赛夺冠“黑马”原来靠的是这门技术!...
  9. 攻防世界 WEB 新手练习区 答题(1-12题解)
  10. python摄氏度转华氏度_如何用 python编写华氏摄氏度的相互转换?
  11. [论文阅读笔记17]MAT: Motion-Aware Multi-Object Tracking
  12. 手机摄像头的等效焦距
  13. Python编曲实践(九):如何计算并估计音乐的调性(大/小调+主音)?Krumhansl-Schmuckler调性分析算法的原理与实现
  14. 弘辽科技:惊!原来吸引淘宝买家眼球的标题是这么写出来的!
  15. Django 项目编码问题1UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xd2 in position 0: invalid contin
  16. return true
  17. 大数据分析哪款软件好用?如何进行大数据分析
  18. 【改进和增强Microsoft Office应用程序】ExtendOffice软件产品介绍
  19. 一键生成轮播图,轮播图插件
  20. Linux修改用户名后,每次开机提示configure it with blueman-service解决方法

热门文章

  1. matlab中idwt,matlab图片处理
  2. centos7 端口3306无法连接问题
  3. Same Tree - LeetCode
  4. 2018-10-09 星期二
  5. 2018/3/9 省选模拟赛 0分
  6. 51nod 1294 修改数组
  7. Knockout自定义绑定my97datepicker
  8. ASP.NET生成eurl.axd Http异常错误处理方法【转】
  9. zookeeper 分布式锁_详细讲解!从秒杀聊到ZooKeeper分布式锁
  10. c++ 中类重复定义的分析与解决办法