前沿拓展:
excel单引号中使用函数
西文状态下,直接按双引号键.
上面有两个符号,按shift出双引号,不按就是单引号.
学vba需要一定的逻辑思维比较容易去理解,如果没有还是建议尝试跟着操作,熟能生巧。
我不是真正意义上的高手,我只是一个跟着自己的需要独立摸索着结合网上四处的高手教程自学的。目前能满足自己需要,我只是把自己的经历和理解分享给大家,希望对有需要的人有一点帮助就很满足了。
看到vba别怕,理解后把自己平时学习的案例存起来,需要的时候拿出来用,编程不是每个字都要自己从头打到底的,经常是东拼拼西凑凑再自己写一点把它们连贯起来。
如果有不足的地方可以指出来,这也是对我自己的提高机会。
前一篇我们讲到了excel中函数IF的应用,如果没有看过的可以看我前面的文章
大家如果想学好必须要实际操作一遍,然后把身边能用到的地方使用上去,熟悉,巩固,再提高。如果就光看看提高一下认知度,是学不会的。
进入正题,打开我们上篇做好的表格
首先我们保存成vba需要的格式
文件-另存为-选好自己存储的位置-保存类型-点一下,会弹出下面这样的窗口,有两个格式是我们需要的*.xlsm和*.xls
Office2007及以上建议选*.xlsm
有需要兼容97-2003版本的excel我们选*.xls
打开vba窗口有很多,但是我今天只教你一种,有其他需要的时候,可以自己去查也可以等后续使用到了就知道了。
为了不破坏原有数据我们复制一个表格
右键工作表选移动或者复制
接下来选以后到最后和建立副本
因为我们要改用vba所以我们把前面写的函数删除。当然不删也没影响。
我们修改一下工作表的名称,方便后面我们辨别
接下来我们进入vba编写窗口
跟刚才复制工作表一样不过这次是选查看代码
注意两个区域
左边是各工作表的vba代码
要写哪个表格就双击进入那个表格编写vba
右边就是编写窗口
其他地方暂时用不到我们不去管它
我们写上这样一段代码
不用知道什么意思,把名称改成自己的就行,其他照抄。
Sub 写一个方便记住和识别的名称()
End Sub
If Range("B2") >= Range("F2") Then '[F2]是90
Range("C2") = "优"
Else
Range("C2") = "不优"
End If
注:[B2],Range(“B2”),Cells(2,2) 这几个都可以看自己习惯
我挑我最常用的,Range("B2")直接就理解成单元格B2
Cells(2,2)前面的是2行,后面的2是2列也就是B列
上一篇我们讲到函数IF格式是
IF(条件,满足,不满足)
现在也差不多
IF 条件 then
满足
Else
不满足
End if
简单好记
如果 条件 那么
满足
否则
不满足
结束如果(需要收尾)
如果记不住也简单,把公式记住,下次用到了再把公式复制上去修改修改就成了。
继续之前的套路我们把良和不良,及格和不及格给添加上去
这次我在最后面添加’单引号后面是文字解释用的
方便代码写太多自己都忘记是什么情况了,方便自己以后修改之类的。
还是之前的套路我们把及格所有代码复制替换掉不良
If Range("B2") >= Range("F3") Then '[F3]是80
Range("C2") = "良"
Else
Range("C2") = "不良"
End If
替换后
If Range("B2") >= Range("F3") Then '[F3]是80
Range("C2") = "良"
Else
If Range("B2") >= Range("F4") Then '[F4]是60
Range("C2") = "及格"
Else
Range("C2") = "不及格"
End If
End If
同理继续替换不优
If Range("B2") >= Range("F2") Then '[F2]是90
Range("C2") = "优"
Else
Range("C2") = "不优"
End If
替换后
If Range("B2") >= Range("F2") Then '[F2]是90
Range("C2") = "优"
Else
If Range("B2") >= Range("F3") Then '[F3]是80
Range("C2") = "良"
Else
If Range("B2") >= Range("F4") Then '[F4]是60
Range("C2") = "及格"
Else
Range("C2") = "不及格"
End If
End If
End If
最后等到这样一段代码
点击左上角播放一下看看,是不是应该对了,再修改一下成绩再播放一下看看
已是我们写好了一个
接下来还有2,3,4,5,7…….
按这样写下去是不是大失所望,不是说写起来简单嘛,怎么感觉比函数还麻烦。
在vba中重复的东西一般用循环
什么是循环,就是1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7……
一直循环下去。
循环语句
For i=1 to 7
Next i
都是常用的能记住就记住,记不住做笔记,下次复制过去用
代码意思就是i从1到7循环
我们在D列和E列我们暂时没有用的地方写一段看看效果
For i = 1 To 7
Range("D" & i) = 1
Range("E" & i) = i
Next
I是一个变量,会改变的量值
我们正常写Range("D1")改成变量就Range("D" & i)
不好理解,我也解释不来啊!记住把,不行就到时候做笔记复制
前面IF我们都写好了,这次重新起个头
播放一下看看效果有助于理解
我们前面说明了循环是i从1变到7
我们拆开理解,当i=1时Range(“D1”)=1,Range(“E1”)=1
当i=2时Range(“D2”)=1,Range(“E2”)=2
当i=3时Range(“D3”)=1,Range(“E3”)=3
知道当i=7时Range(“D7”)=1,Range(“E7”)=7
到了7到头就结束了
这样就好理解
我们重复的地方红色区域是要重复循环的
If Range("B2") >= Range("F2") Then '[F2]是90
Range("C2") = "优"
Else
If Range("B2") >= Range("F3") Then '[F3]是80
Range("C2") = "良"
Else
If Range("B2") >= Range("F4") Then '[F4]是60
Range("C2") = "及格"
Else
Range("C2") = "不及格"
End If
End If
End If
我们尝试把for循环写上去
一个头一个尾复制上去
不过这次我们是从第2行到第7行,我们把1修改成2
这几个2是需要循环的把代码复制上去
For i = 2 To 7
If Range("B2" & i) >= Range("F2") Then '[F2]是90
Range("C2" & i) = "优"
Else
If Range("B2" & i) >= Range("F3") Then '[F3]是80
Range("C2" & i) = "良"
Else
If Range("B2" & i) >= Range("F4") Then '[F4]是60
Range("C2" & i) = "及格"
Else
Range("C2" & i) = "不及格"
End If
End If
End If
Next i
最后记得把循环的2给删除掉
然后播放一下看看代码对不对。至于上一篇最后碰到的空白问题可以自己研究研究道理都是一样的!
最后我们再保存一下
当你打开刚才保存的带宏的excel文件的时候一般会提示启用内容
这是大部分使用者默认是没有完全打开宏的,正常点启用内容就可以了。
如果要下次打开不再提示
我们可以依次打开文件-选项-信任中心-信任中心设置-宏设置(左边)-启用VBA宏-确定
最后保存就可以了。
有什么不理解的在评论里留言。
拓展知识:
excel单引号中使用函数
Excel中的函数对于初学小伙伴们还是比较陌生,全部记住函数名称也没那必要,知道怎么找函数就好了,视频中教你如何找需要的函数。
excel单引号中使用函数
按照图片要求做,先用1初除以该数字,然后再取两位有效数字,希望对你有所帮助哦
excel单引号中使用函数
工具→宏→打开visual basic编辑器,双击左侧sheet1,然将代码粘贴到右侧,保存即可。
但你的代码只能实现A1中数据的自动变化,若想在所有单元格实现“倒数”功能,代码为:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Target = 1 / Target
Application.EnableEvents = True
End Sub
追问
好啊,谢谢!
这个把整个文档实现了“倒数”
但是如果只在某个表格(比如sheet1中的B5这个格子)实现这个功能呢?
追答
如果只在某个表格(比如sheet1中的B5这个格子)实现这个功能:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$B$5" Then
Target = 1 / Target
End if
Application.EnableEvents = True
End Sub
本回答被提问者采纳
原创文章,作者:趣淘网小编,如若转载,请注明出处:http://www.3322388.com/25071.html