![](https://img-blog.csdnimg.cn/4c76a34c1f9b471f8a77a70ced4265f0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_7,color_FFFFFF,t_70,g_se,x_16)
'自定义函数:顾名思义,就是自己定义的函数。
'为什么使用自定义函数:exce内置了很多有用的函数。但仍无法满足工作需求。
'自定义函数的作用:简化复杂的公式。可以和工作表函数相互嵌套使用
'
'
' Function 函数名(参数1,参数2....)
' 代码
' 函数名=代码执行的结果
' End Function
'
'1.函数名称可能有函数,也可以像now,today,rand等函数一样不需要任何参数
Public Function stname()
stname = ActiveSheet.Name '返回当前工作表名
End Function
Public Function wbname()
wbname = ThisWorkbook.Name '返回工作簿名
End Function
'有参数的自定义函数
Function nas(num As Integer) '提取工作表名或工作簿名
If num = 0 Then
nas = ActiveSheet.Name
ElseIf num = 1 Then
nas = ThisWorkbook.Name
End If
End Function
'1.自定义工作函数的调用
Function wbname()
wbname = ActiveWorkbook.Name
End Function
Function wbnames()
i = InStr(wbname, ".xls") '调用自定义的工作表函数,找到.xls所在的位置
j = Left(wbname, i - 1) '调用自定义的工作表函数
wbnames = j
End Function
'2.自定义工作表函数的编写与运用范围
'
'自定义工作表函数的代码只能编写在:标准模块中,不能在工作表中或thisworkbook中
'到目前为止我们编写的自定义函数只能在当前工作簿运行。要在所有工作簿中运行则:
'A.将编写在标准模块中的自定义函数代码保存为:加载宏。
'B.将加载的宏保持运用即可
'
'提示:与应用程序事件程序的操作方法相似
案例:
![](https://img-blog.csdnimg.cn/8d388e316ac34eb18b32d508e7a7f1b4.png)
![](https://img-blog.csdnimg.cn/29975e10a45740a381f27f9432abdf7c.png)
![](https://img-blog.csdnimg.cn/9d2ec0012f2b4b1c921a212e71a753ea.png)
参数不定的自定义函数:
![](https://img-blog.csdnimg.cn/daed8d8e09ee40b9b62cc89b047d48c4.png)
参数值默认和参数缺省:
![](https://img-blog.csdnimg.cn/585f9e693f184121aac4689ebf70379c.png)
案例:返回不重复随机数(结果是数组)
Function sjs(最小值 As Integer, 最大值 As Integer, 所需个数 As Integer)
Application.Volatile
Set d = CreateObject("scripting.dictionary")
Do
i = Application.RandBetween(最小值, 最大值)
d(i) = ""
Loop Until d.Count = 所需个数
sjs = d.keys
End Function
Sub dd()
Set d = CreateObject("scripting.dictionary")
Do
i = Application.RandBetween(1, 9)
d(i) = ""
Loop Until d.Count = 4
sj = d.keys
End Sub
案例2:
Function celljoin(区域 As Range, Optional 合并符 As String = "-")
arr = Application.Transpose(Application.Transpose(区域))
celljoin = Join(arr, 合并符)
End Function
![](https://img-blog.csdnimg.cn/f8f99f1a9ceb4468b01732dd86f29633.png)
Function 去除(rng As Range, Optional shuzi As Integer = 2)
Set regx = CreateObject("vbscript.regexp")
With regx
.Global = True
If shuzi = 0 Then
.Pattern = "\d" '去数字
ElseIf shuzi = 1 Then
.Pattern = "[a-zA-Z]" '去字母
ElseIf shuzi = 2 Then
.Pattern = "[一-龢]" '去汉字
End If
去除 = .Replace(rng, "")
End With
End Function
![](https://img-blog.csdnimg.cn/7413e86092184844a255acc575d4362a.png)
案例3:
Function jia(ParamArray num())
For Each n In num
m = m + n
Next
jia = m
End Function
Function joins(ParamArray arr())
For Each ar In arr
For Each a In ar
txt = txt & a.Value
Next
Next
joins = txt
End Function
'注意:
'1.如果参数不定,那么不能指定参数的数据类型
'2.如果有不定参数,不定参数一定要写在最后。
'![](https://img-blog.csdnimg.cn/140b40a46ca141659109241dee28906f.png)
案例3:
Function 身份证(rng As Range, Optional 提取内容 As String = "年龄")
If 提取内容 = "年龄" Then
身份证 = Year(Now()) - (19 & Mid(rng, Len(rng) / 2, 2))
ElseIf 提取内容 = "性别" Then
身份证 = IIf(Mid(rng, 15, 3) Mod 2, "男", "女")
End If
End Function
![](https://img-blog.csdnimg.cn/80551daae980447c8a2c229848ceb465.png)
下图用excel:
![](https://img-blog.csdnimg.cn/76a7ea4966864e90b10f390e5ed9da58.png)
![](https://img-blog.csdnimg.cn/c5ea927cca9b4c279dd146e35eede190.png)
案例4:单元颜色求和(字典+自定义函数)
Function COLORSUM(单元格区域 As range, 汇总的颜色 As range)
Set d = CreateObject("Scripting.Dictionary")
For Each Rng In 汇总的颜色
d(Rng.Interior.ColorIndex) = ""
Next
For Each ci In d.keys
For Each Rng In 单元格区域
If Rng.Interior.ColorIndex = ci Then
r = r + Rng.Value
End If
Next
Next
COLORSUM = r
End Function
![](https://img-blog.csdnimg.cn/37cb0941e4184bc2b3095065ee23aa22.png)
Sub test()
Set d = CreateObject("Scripting.Dictionary")
Set 区域 = Application.InputBox("区域选择", , , , , , , 8)
Set 颜色 = Application.InputBox("颜色选择", , , , , , , 8)
For Each Rng In 颜色
d(Rng.Interior.ColorIndex) = ""
Next
For Each ci In d.keys
For Each Rng In 区域
If Rng.Interior.ColorIndex = ci Then
r = r + Rng.Value
End If
Next
Next
MsgBox r
![](https://img-blog.csdnimg.cn/b866ee4613574ddcbd057510976784ba.png)
End Sub
![](https://img-blog.csdnimg.cn/ba48856177a549d3a4062062ac958ef7.png)
案例5:反转字符与数字求和
Function DD(rng As Range) '反转字符
For i = Len(rng) To 1 Step -1
a = Mid(rng, i, 1)
b = b & a
Next
DD = b
End Function
(解释:)
![](https://img-blog.csdnimg.cn/f6d189c2930741519224a8c0c08c1862.png)
![](https://img-blog.csdnimg.cn/16cff6fcbdc848f196e17c6cfbc9118d.png)
Function 求和(rng As Range, Optional s As String = "")
Application.Volatile
Set regx = CreateObject("vbscript.regexp")
With regx
.Global = True
.Pattern = "\d" & s
Set mat = .Execute(rng)
End With
For Each m In mat
n = n + m * 1
Next
求和 = n
End Function
解释:关于Application.Volatile易失性函数看下面链接
易失性函数Volatile | Excel VBA
http://xixiacademy.com/html/ExcelVBA/Function/ExcelVBA_VolatileFunction.html
![](https://img-blog.csdnimg.cn/f5c825c0196f4074b9b6a286ffdbf9cf.png)
案例5:提取不重复值
Function 不重复值(rng As Range)
Set d = CreateObject("scripting.dictionary")
For Each rn In rng
d(rn.Value) = ""
Next
不重复值 = d.keys
End Function
Function 不重复2(rng As Range, Optional num As Integer = 0)
Set d = CreateObject("scripting.dictionary")
Set regx = CreateObject("vbscript.regexp")
With regx
.Global = True
If num = 0 Then
.Pattern = ".+" '所有值的不重复
ElseIf num = 1 Then
.Pattern = "[一-龢]+" '汉字不重复
ElseIf num = 2 Then
.Pattern = "[a-zA-Z]+" '字母不重复
ElseIf num = 3 Then
.Pattern = "\d+" '数字不重复
End If
For Each rn In rng
For Each m In .Execute(rn)
d(m.Value) = ""
Next
Next
不重复2 = d.keys
End With
End Function
![](https://img-blog.csdnimg.cn/462db9321f904ca4a050511b9c162147.png)
ps:如果上面看懂了,下面就不用看了,不然看的头疼!
![](https://img-blog.csdnimg.cn/8b6dfbfc890940629b29c5d223e44651.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/c4afeff835724ee98db21b224a885eeb.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
ByVal是值传递,ByRef是地址传递
回顾11章中的内容:![](https://img-blog.csdnimg.cn/8d915bf3917c4c7ca3e0edb3cf7ca432.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
ByVal是值传递,ByRef是地址传递
![](https://img-blog.csdnimg.cn/2df539d02ff24eaaae1933d6bbdec110.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/21bccc9c34974fca983a8aa20e047337.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/9917f766e22b4ce6bab520f82db04162.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/f5cb497a5f9f4e9588a462584345da71.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/29f58d09deca44419a76c7e593e5f1ee.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/ea45c69fb8514651ba9d159a4dc827e1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/e41fcf59134048389190091205c19b0b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/d88f2ecb5ca448e1968c956511a040cd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/d1bbab0f5dac484ea7be6130f207499b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/f809d2bc5a804dd9bb349aded63bba6f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/df57b87b599f4731891078f1f695ce97.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/7927b5564ca8432c8263703e16a2ef9e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/43a1bc0edf6f40e9b2625bef62850e3c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/63bc448ce6254d678428244b68be5a4e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/2b0e7525e047452cad822318c9635efb.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/831fbd6126194d47893c0857db337148.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/73bf06f3e8304b54935c46a5e22cb32d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_17,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/9b4410fbd145429d9eba1352f48b0d65.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_17,color_FFFFFF,t_70,g_se,x_16)
好了,参数讲完,回归,function用法:
![](https://img-blog.csdnimg.cn/f7f0b9d4fcff4b488950c50c7c4c3aff.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/a141cba2547342b1b36fffdea1d3d602.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/d487ecaacb9b4175bd8a507235b6c9b3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_16,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/af866ed3b5d84da8b16b9e9b6142649f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/b70be64a88204ddc9b23aed7e74e3751.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/b47709f547d94a088212b44c6b641e4b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/597884b327e746b79541440c8558297c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/f622dc7423304c47bf9db56f02173abb.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/1c645eb0c759480f98169d2ba39a7472.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/5bc748b641cd45e388704788ec0ee9e1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/2e1b64f21ffd4c17ad6babf7d5495a94.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/ef1d195592a646c896ad8a39f7bbe980.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/6cc6952d382741219c8b81083b20c933.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/083245a42a0245cfb2d0dd95c302a665.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/a73090f51e1445a2b7f472c63f39c2d1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/95a063bb37314cf68f7adf780bc272f4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/a08093a869504247b999ebd17749e724.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/f6bf84fda88643c3b3d684f3a07cf1c5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/eeb4b0dc56da4782b8616422806927f6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/8715f62b48f445fb9bbcb33aa8657ac3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/768c31d76d084cdf947fc8af67bc0cc3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/7dcb0486abb246dcb23301222499f791.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/0d3d60b7be434f34a3e72b1bd0fc1af1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_16,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/568ce2521c684babb0dee18a4088cc73.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/5820867abb3146ee9b54110b1b4f2ad0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/105bfaf35fdc437fa183437f8c049ae0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/b54be5c29ad54ccdb54f5b89c85d9c94.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_18,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/2cbbe2c381d94b539c6d313c26ce5334.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/35001c9a5381422f982fc7252b1b7012.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/19fe9c97b3984324a04908c857590089.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/17fc4cd4dbcf40ac8e4e4045b35191ae.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/f297354835d042a49c289b8dfb4b2699.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/01c7a67c4b484a76a5998dd1cb98ea94.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/5b6183f03f564039b0162caffb121ff0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/840b3ec6cee4470f8c6c426ffb722afe.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/2699656d24bc4f3c931258e911e9fe4b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/f43b0259cb2943d08bf5faf6fcf0d2d2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/14a4369765124becb69c45859860173a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/1b78a0a3d102486a941fb732d8e907a5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGd5bWVpdGlhbmppbmJ1,size_20,color_FFFFFF,t_70,g_se,x_16)