• 系统环境:Windows 10
  • Excel:2010版本


今天讲讲以下几个函数Match,Vlookup,Substitute,Msgbox
函数中使用的标点符号一律是英文状态下的标点符号



Part 1:概要

  • Match:匹配所在区域相对位置
  • Vlookup查找
  • Substitute:替换特定字符
  • Msgbox:弹出窗口



Part 2:Match

  • Match(待查找值,目标区域,匹配方式)
  1. Match函数返回的是位置值,并且是相对位置
  2. 如示例中,目标区域选择范围不同,返回数值不同
  3. 为了保证与行号列号一致,目标区域选择是从第一个单元格开始
  4. 匹配方式包括-1,0,1
  5. 匹配方式为 0,函数返回精确匹配的第一单元格所处位置,其余参考F1帮助

Sub test() Rem>>定义工作表 Set sht = ThisWorkbook.Worksheets("举例") HangHao1 = Application.Match("复制后区域", sht.Range("A:A"), 0) Debug.Print ("HangHao1=" & HangHao1) HangHao2 = Application.Match("复制后区域", sht.Range("A2:A10"), 0) Debug.Print ("HangHao2=" & HangHao2) End Sub

注意

  • VBA中某些函数前要求必须加上Application
  • 表示该函数为工作表函数,即在Excel工作表中亦可使用
  • 这类函数进行F1帮助时,函数表示方式为WorksheetFunction.函数名称,如图2所示
  • 下文说的Vlookup也属于这种情况


图1 Match代码截图


图2 WorksheetFunction


Part 3:VLookup

  • Vlookup(待查找值,目标区域,返回单元格所处列相对位置,匹配方式)
  1. 函数返回的是单元格数值
  2. 匹配方式包括两种False,True,即精确匹配还是近似匹配
  3. Vlookup是Lookup家族中的一员,有兴趣者可进一步了解

Sub test() Rem>>定义工作表 Set sht = ThisWorkbook.Worksheets("举例") Value1 = Application.VLookup("复制后区域", sht.Range("A:B"), 1, False) Debug.Print ("Value1 =" & Value1) Value2 = Application.VLookup("复制后区域", sht.Range("A:B"), 2, False) Debug.Print ("Value2=" & Value2) End Sub



图3 VLookup



Part 4:Substitute

  • Substitute(目标字符串,拟替换的文本,替换的新文本,替换方式)
  1. 函数返回替换后的文本
  2. 替换方式,指定替换第几个匹配项,默认全部替换

Sub test() Rem>>定义工作表 S = "在Office的小世界里游啊游,一起不" S1 = Application.Substitute(S, "一起不", "Let's go") Debug.Print ("S=" & S) Debug.Print ("S1=" & S1) End Sub



图4 Substitute



Part 5:Msgbox

  • Msgbox(弹框中显示消息,显示按钮数目及形式,弹框名称)
  1. 函数返回一个弹框窗口
  2. 显示按钮数目及形式,可选vbYesNo,vbOKOnly
  3. vbYesNoVB中的常量,使用数字代替亦可,对应数字为4

该函数提供了人机交互功能,不同的选择程序执行不同的操作

Sub test() Answer = MsgBox("是否重新计算", vbYesNoCancel, "弹框") If Answer = vbYes Then MsgBox "点 是 后续操作" ElseIf Answer = vbNo Then MsgBox "点 否 后续操作" ElseIf Answer = vbCancel Then MsgBox "点 取消 后续操作" End If End Sub


图5 Msgbox



以上,为本次的介绍内容,下回见。

本文首发于微信公众号:Excel高效办公之VBA。排版和细节略作修改,发于头条