精华内容
下载资源
问答
  • 大家好,我们继续讲解VBA数据库解决方案,今日讲解第53讲内容:工作表查询时,类似于筛选功能的LIKENOT LIKE 的应用。大家在工作的时候,利用EXCEL操作,筛选是必不可少的工具之一。例如我们可以筛选以某个字符...

    大家好,我们继续讲解VBA数据库解决方案,今日讲解第53讲内容:工作表查询时,类似于筛选功能的LIKE和NOT LIKE 的应用。大家在工作的时候,利用EXCEL操作,筛选是必不可少的工具之一。例如我们可以筛选以某个字符开头的数据,或者筛选不以某个字符开始的数据,那么这个功能如何在ADO连接EXCEL进行查询时实现呢?

    实例讲解,我们看下面的数据:

    我们要筛选出以W开始的生产厂的数组和不是以W开始的数据。如何实现呢?

    下面看我给出的代码:

    Sub mynzRecords_53() '第53讲 工作表数据查询时,类似筛选功能LIKE和NOT LIKE的应用.

    Dim cnADO, rsADO As Object

    Dim strPath, strSQL1, strSQL2, strSQL3, strSQL4 As String

    Worksheets("53").Select

    Cells.ClearContents

    Set cnADO = CreateObject("ADODB.Connection")

    Set rsADO = CreateObject("ADODB.Recordset")

    strPath = ThisWorkbook.FullName

    cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';data source=" & strPath

    strSQL1 = "select 型号,生产厂,供应商,数量 from [数据$] WHERE 生产厂 Like 'W%'"

    arr = Array("型号", "生产厂", "供应商", "数量")

    [a1:d1] = arr

    [a65536].End(xlUp).Offset(1, 0).CopyFromRecordset cnADO.Execute(strSQL1)

    strSQL2 = "select 型号,生产厂,供应商,数量 from [数据$] WHERE 生产厂 NOT Like 'W%'"

    [a65536].End(xlUp).Offset(2, 0).CopyFromRecordset cnADO.Execute(strSQL2)

    cnADO.Close

    Set cnADO = Nothing

    Set rsADO = Nothing

    End Sub

    代码截图:

    代码解释:

    1 strSQL1 = "select 型号,生产厂,供应商,数量 from [数据$] WHERE 生产厂 Like 'W%'"

    这句的解释是要查出以W开始的生产厂的记录。大家要注意这种写法。注意的是这种写法要特别留意。要记住代码尽可能不要录入,要以拷贝为主,然后再做必要的修正。

    2 strSQL2 = "select 型号,生产厂,供应商,数量 from [数据$] WHERE 生产厂 NOT Like 'W%'"

    这句的解释是要查出不是以W开始的生产厂的记录。这里用的是NOT LIKE 语句。也是一种SQL语句的固定用法。

    我最近在讲各种这样的连接啊,查询结构啊,大家要注意我的语句写法,如果语句不对是得不到正确结果的。我的系列文章在讲我的经验,甚至代码中也有工作实例的影子。要学写代码的经验,我们的工作要以实用为主,不是学术的研究。

    下面看代码的运行:

    今日内容回向:

    1 如何实现工作表的筛选功能?

    2 LIKEN 和 NOT LIKE 的语法是怎么样的?

    展开全文
  • vbalike和正则表达式

    2020-04-25 23:44:29
    like的详细用法: Sub aa() a = "asd" Like "a?" '''false a = "asd" Like "[agjs3]*" '''true ,[ABCDEGHIJ2345]=[A-EG-J2-5], a = "asd" Like "asD" '...

    like的详细用法

    Sub aa()
        a= "aBBBa"Like "a*a"					'''true
        a = "asd" Like "a?"                     '''false
        a = "asd" Like "[agjs3]*"               '''true ,[ABCDEGHIJ2345]=[A-EG-J2-5],
        a = "asd" Like "asD"                    '''false
        a = "a11" Like "[a-z][0-9]#"            '''true,# = [0-9],[a-c] is OK,[ca] is OK,[c-a] is NG
        a = "a11" Like "[!c-z]11"               '''true,! is not
        a = ",?*#-" Like "[,][?][*][#][2-]"     '''true,",?*#-" in [] will match itself
        a = ",?*#-" Like "[1-2]"                '''false,[-] must putted By side
        a = "][" Like "[]][[]"                  '''true
        a = "D" Like "[A-a]"                    '''true,perhaps [A-a]=[A-Za]
        a = "d" Like "[A-a]"                    '''false,[a-A] is NG
    End Sub
    

    正则表达式

    1. runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。
    2. runoob,可以匹配 runob、runoob、runoooooob 等, 号代表字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。
    3. colou?r 可以匹配 color 或者 colour,? 问号代表前面的字符最多只可以出现一次(0次、或1次)。
    • . 匹配除换行符以外的任意字符
    • \w 匹配字母或数字或下划线或汉字 等价于 ‘[A-Za-z0-9_]’。大写取反
    • \s 匹配任意的空白符。大写取反
    • \d 匹配数字。大写取反
    • \b 匹配单词的开始或结束
    • ^ 匹配字符串的开始
    • $ 匹配字符串的结束
    • \w能不能匹配汉字要视你的操作系统和你的应用环境而定
      Sub testREGExecute()
        Dim reg, k, mh, strA$
        strA = "画面概要:iphone_5s;画面概要:Nokia_1020"
        Set reg = CreateObject("vbscript.regexp")
        reg.Pattern = "\w+"
        reg.Global = True
        Set mh = reg.Execute(strA)
        Debug.Print mh.Count               '2,if can not find,mh.count=0,
        For Each mhk In mh
            'mhk:{firstindex:index(starts from 0),value:match string,length:mhk.value.length}
            Debug.Print mhk.Value           'iphone_5s,Nokia_1020
        Next
    End Sub
    
    Public Function GetWebTxt(ByVal url As String) As String
        Dim xmlHttp As Object
        Application.DisplayAlerts = False
        Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
        xmlHttp.Open "GET", url, False
        'xmlHttp.setRequestHeader "Content-Type", "text/xml"
        xmlHttp.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0"
        xmlHttp.Send
        While xmlHttp.readystate <> 4
            DoEvents            '''let system operator do other thing '''转让控制权,以便让操作系统处理其它事件。
        Wend
        GetWebTxt = xmlHttp.responsetext
    End Function
    
    Sub testfindAllByReg()
    strA = GetWebTxt("https://bbs.hupu.com/34914799-2.html")
    Set matchList= findAllByReg(strA, "class=""floor""[\s\S]*?uname=""([\s\S]*?)""[\s\S]*?<table[\s\S]*?td>([\s\S]*?)</td>[\s\S]*?</table")
        For Each mhk In matchList
            'mhk:{firstindex:index from 0,value:match string,length:mhk.value.length}
            For Each sm In mhk.submatches       'for each loop print all submatches
                Debug.Print sm
            Next
        Next
    End Sub
    
    
    Function findAllByReg(ByVal text$, Optional ByVal pattern$, Optional ByVal reg = Empty)
        If reg = Empty Then
            Set reg = CreateObject("vbscript.regexp")
            'reg.pattern = "class=""floor""[\s\S]*?uname=""([\s\S]*?)""[\s\S]*?<table[\s\S]*?td>([\s\S]*?)</td>[\s\S]*?</table"
            reg.pattern = pattern
            reg.Global = True
            reg.IgnoreCase = True               'setting true will Ignore case
            'reg.MultiLine = False              '更改^和$的含義,分別在任意一行的行首和行尾匹配,而不only在整个字符串的start和end匹配
        End If
        'text = readtxt1("C:\Users\Administrator\Desktop\new3.txt")
        'text = GetWebTxt("https://bbs.hupu.com/34914799-2.html")
    
        Set findAllByReg = reg.Execute(text)
        'Debug.Print findAllByReg.Count               '2,if can not find,mh.count=0,
        'For Each mhk In findAllByReg
            'mhk:{firstindex:index from 0,value:match string,length:mhk.value.length}
            'For Each sm In mhk.submatches       'for each loop print all submatches
                'Debug.Print sm
            'Next
        'Next
    End Function
    
    'https://bbs.hupu.com/34914799-2.html的部分数据如下:
    <div id="162051" class="floor">
    <div class="floor-show  ">
    <div class="user" >
    <div class="j_u" uid="193001006372078" uname="一坨大团团呀">
    <a class="headpic" target="_blank" href="https://my.hupu.com/193001006372078"><img src="https://i1.hoopchina.com.cn/user/default_small.jpg" width="45" height="45" alt="一坨大团团呀"></a>
    </div>
    </div>
    <div class="floor_box ">
    <div class="author">
    <div class="left">
    <a class="u" target="_blank" href="https://my.hupu.com/193001006372078">一坨大团团呀</a><span class="f666">&nbsp;(<a title="一坨大团团呀的帖子" target="_blank" href="https://my.hupu.com/193001006372078/topic">10</a>)</span>&nbsp;<span class="stime">2020-04-20 11:39</span>&nbsp;<span class="f666 162051 button-light-inner " pid="162051" uid="193001006372078" style="position:relative">
    </span>
    <span class="f444 162051" pid="162051" uid="193001006372078" style="position:relative">
    <span class="ilike_icon_list"><a class="ilike_icon " mid="1" href="javascript:;" style="width:25px;" dace_clk="clk_bbs_rlights">亮了</a>
    (<span class="stime">7</span>)</span>
    </span>
    </div>
    <div class="right f666">
    <a href="javascript:void(0);" onclick="report(8,162051);return false;">举报</a>
    <a href="/34914799_193001006372078.html" rel="nofollow">只看此人</a>
    <a id="28" class="floornum" title="直达本楼回帖的链接" href="/34914799-2.html#162051">28</a>
    </div>
    </div>
    <table class="case" border="0" cellspacing="0" cellpadding="0">
    <tbody>
    <tr>
    <td>
    <p>快递行业中转管理 快递真的是暴利,也很暴力</p>
    
    <br />
    </td>
    </tr>
    </tbody>
    </table>
    
    展开全文
  • 大家好,今日内容仍是和大家分享VBA编程中常用的简单“积木”过程代码,第NO.114-NO.115则,内容是:FindPrevious反向查找、利用LIKE查找等内容。VBA过程代码114:利用FindPrevious完成查找Sub mynz()Set rng = ...

    分享成果,随喜真能量。大家好,今日内容仍是和大家分享VBA编程中常用的简单“积木”过程代码,第NO.114-NO.115则,内容是:FindPrevious反向查找、利用LIKE查找等内容。

    VBA过程代码114:利用FindPrevious完成查找

    Sub mynz()

    Set rng = Sheets("8").Range("B1:E1000").Find("*a*")

    If Not rng Is Nothing Then

    Msgbox “查找到了”

    Set rng = .Range("B1:E1000").FindPrevious(rng)

    If Not rng Is Nothing Then

    Msgbox “再次查找到了”

    END IF

    END IF

    END WITH

    END SUB

    代码的解析说明:执行上述代码后,将在工作表Sheets("8")的Range("B1:E1000")中查找含有a的单元格。加入查找到则返回提示“查找到了”,然后再次执行查找,再次查找时是向前执行查找:FindPrevious(rng)。

    VBA过程代码115:利用LIKE查找

    Sub mynz()

    Dim rng As Range

    Dim a As Integer

    a = 1

    With Sheets("8")

    .Range("A:A").ClearContents

    For Each rng In .Range("B1:E20")

    If rng.Text Like "*a*" Then

    .Range("A" & a) = rng.Text

    a = a + 1

    End If

    Next

    End With

    End Sub

    代码的解析说明:执行上述代码后,将在工作表Sheets("8")的A列中查找含有a的单元格。

    rng.Text Like "*a*" 是用like进行判断。

    越简单的事物往往越容易理解,简单的过程组合起来就是一个复杂的过程,我们要先认真掌握这些简单的过程,才能在可以为我们复杂的工程服务。

    下面是我根据自己20多年的VBA实际利用经验,编写的四部教程,这些是较大块的“积木”,可以独立的完成某些或者某类系统的过程,欢迎有需要的朋友联络(WeChat:NZ9668)分享。利用这些可以提高自己的编程效率。这些教程供有志于提高自己能力的朋友选择。

    第一套:《VBA代码解决方案》PDF教程,是VBA中各个知识点的讲解,覆盖了绝大多数的知识点,是初学及中级以下人员必备的资料。

    第二套:《VBA数据库解决方案》PDF教程。数据库是数据处理的利器,对于中级人员应该掌握这个内容了。

    第三套:《VBA数组与字典解决方案》PDF教程,讲解VBA的精华----字典,是我们打开思路,提高代码水平的必备资料。

    第四套:《VBA代码解决方案》视频教程。目前正在录制,现在推出“每天20分钟,半年精进VBA”活动,越早参与,回馈越多。现在第一册48讲内容已经录制完成。录制到第二册71讲的课程,第二级阶段的优惠期开始。

    展开全文
  • vba 中sql like用法

    千次阅读 2013-09-30 17:12:00
    vba 中使用的sql提供的通配符主要有四种 '%', '_', '[ ]', '[ !]'。下面对通配符做一些简单说明: 1、'%'表示无数个字符串,如用like 's%',即可查出以s开头的值;如用like '%s_'查出倒数第二位为s的值...

    http://www.excelpx.com/thread-205471-1-1.html

    vba 中使用的sql提供的通配符主要有四种 '%', '_', '[ ]', '[ !]'。下面对通配符做一些简单说明:

    1 '%' 表示无数个字符串,如用 like 's%' ,即可查出以 s 开头的值;如用 like '%s_' 查出倒数第二位为 s 的值;如用 like '%s%' ,即可查出至少含有一个 s 的值。
    2 '_' 该位置仅可以为一个任意字符,如用 like 'b_g' 即可查出 big bag 等等所有以 b 开头以 g 结尾的三个字符的串。
    3 '[ ]' 表示出现的字符是在一定的范围内,一般情况下它是配合 '%' 使用的。如 like ’p[ro]%’ ,他就可以查出以 p 开头、第二个字符为 r o 的所有字串,即 pocket product ……;如 like ’%[ro]%’ 可以查出所有含有字符 r o 的字串。
    特别地,对连续字母这里面可用 - ,如 like ‘[b-e]%’ 查出的是所有以 b c d e 开头的字串;有多个这样的描述时不必用标点符号分开,如 like ‘[b-ej-m]%’  查出的是所有以 b c d e j k l m 开头的字串。

    like '%k%'like '%[k]%'效果一样。
    4  '[ ! ]' 是不含,如 like ‘ b[! ro]% ' ,就是检索出以 b 开头但第二个字符不是 r o 的字符; like ‘[!b-ej-m]%’  查出的是所有不是以 b c d e j k l m 开头的字串。
    5 、如果要查 % 时,请用 ^% 。如 like ‘%^%’ 表示查出所有以 % 结尾的字串;不要试图用 like ‘%[!k]%’ 来查出不含 k 的字串,而该使用 not like ‘%[k]%’ not like ‘%k%’
    展开全文
  • VBA like

    2020-12-08 16:15:13
    VBA like 一般用于模糊查找定位到对象 可以使用通配符或列表来查找 1 ? 单一字符 2 * 零个或多个字符 3 # 任何一个数字 4 [字符列表] 字符列表中的任何一个字符 5 [!字符列表] 不在字符列表中的...
  • Like运算符是字符串比较时经常使用的运算符,也是VBA较难掌握的运算符。 语法: 结果 = 字符串 Like 模式 如果字符串与模式匹配,结果为True,否则为False。但是如果Like两端的字符串和模式有一个为Null,则结果...
  • 通配符^与not like 区别

    2017-09-06 10:50:00
    不在指定范围(例如 [^0-9])或集合(例如 [^abcdef])内的任何单个字符 \*查询不在学号不是000001~000004的学生...WHERE Math_Score LIKE '00000[^1-4]' \*正确*\ SELECT * FROM tb_StuScore WHERE Math_Sco...
  • 【LuKS】Vba if not c is nothing

    千次阅读 2017-09-05 11:41:48
    在对excel宏调整的时候,发现以下一段代码,在网上查阅资料后,理解如下: ...If Not c Is Nothing Then s = c.Address source.Cells(c.Row, 7) = "yes" Set c = source.UsedRange.FindNext(c) Do W
  • VBA实现关键词匹配

    2021-06-10 16:09:02
    ZZ2 = CStr(neirong2) KK1 = CStr(tiaojian1) KK2 = CStr(tiaojian2) ZZ1 = VBA.UCase(ZZ1) ZZ2 = VBA.UCase(ZZ2) KK1 = VBA.UCase(KK1) KK2 = VBA.UCase(KK2) Do Until Trim(KK1) = "" Or ((Not ZZ1 Like "*" ...
  • Chapter 1, ″Unleashing the power of Excel with VBA,˝ introduces the tools and confirms what you probably already know: The macro recorder does not work reliably. Chapter 2, ″This sounds like BASIC...
  • VBA与数据库

    2015-11-19 18:07:38
    •实例3-38 多表查询(子查询EXISTS,NOT EXISTS) 105 •实例3-39 从两个数据表中查询出都存在的记录 106 •实例3-40 从两个数据表中查询出只存在于某个数据表的记录 108 •实例3-41 将查询结果生成一个数据表 108 ...
  • Excel VBA:Workbook_Open

    2021-07-16 18:38:58
    I'm using Workbook_Open to call a userform when the application is opened, this is working ... However I would like it to only run the first time it is opened.I tried this and it work if I run the s...
  • Here is another topic that comes up every... MS Excel via VBA? I’ll try to give an introduction into that subject in this document. I will only discuss the basics, but I’m open for suggestions about wh
  • instr 与 like 的区别 与注意事项

    千次阅读 2018-11-29 15:16:21
    instr(源字符串, 要查找的字符串, 从第几个字符开始, ...not like 'T%', 不会出现DTabc 而 instr(源字符串,'T',1,1)=0 会出现DTabc , T出现一次, 所以在你需要找的字符串 在源文件中出现多次,那么用like,更...
  • I'm using this connection string pattern with ADODB Set oConn = New ADODB.Connection oConn.ConnectionString = ... Did you specify like NAMES.DIRECTORY_PATH=(tnsnames, ezconnect) in your sqlnet.ora file?
  • Excel VBA编程

    万次阅读 多人点赞 2019-04-11 16:45:51
    文章目录如何创建VBAVBA语法规则声明变量给变量赋值让变量存储的数据参与运算关于声明变量的其他知识变量的作用域特殊的变量——数组声明多维数组声明动态数组其他创建数组的方法数组函数利用UBound求数组的最大索引...
  • instr(title,'手册')>0 相当于 ...instr(title,'手册')=0 相当于 title not like '%手册%' t表中将近有1100万数据,很多时候,我们要进行字符串匹配,在SQL语句中,我们通常使用like来达到我们搜索的目标。但经过实
  • Excel VBA Dictionary - A Complete Guide - Excel Macro Mastery A Quick Guide to the VBA Dictionary Function Params Early binding reference “Microsoft Scripting Runtime” (Add using Tools-...
  • VBA基础知识

    千次阅读 2019-11-12 14:18:36
    VBA入门学习笔记本关键词:VB、VBA、Microsoft office、excel、access、PowerPoint1.VBA的基本概念2 数据类型2.1 VBA基本数据类型2.2 VBA自定义的数据类型3 VBA常量3.1 VBA系统定义常量3.2 VBA固有常量3.2 VBA符号...
  • 从Java调用VBA代码

    2021-07-17 02:39:27
    Should we try some sort of COM object? Please note, as the the most common answer to my question elsewhere, I understand quite clearly how to call Java from within VBA, but not to call the VBA from ...
  • VBA 使用心得

    千次阅读 2019-03-17 16:08:56
    阔别了好久的VBA这两天又有人让我做东西,就又捡了起来,在使用的过程中,发现遗忘的厉害,于是就想记录一下这两天用到的一些东西,以后有机会再补充吧。 先贴一段简单的代码,先熟悉一下vba是怎么写代码的 '设置...
  • This might be a bit of a stretch, but is there a possibility that a python script can be used to create VBA in MS Excel (or any other MS Office product that uses VBA) using pythonwin or any other modu...
  • vba字典(dictionary)示例

    2020-06-29 18:01:33
    2 to ubound(arr) step 1 dict.removeall for j = 2 to ubound(arr,2)-1 step 1 if not dict.exists(arr(i,j)) Then dict(arr(i,j)) = "" end if next arr(i,ubound(arr,2)) = join(dict.keys,",") next range("a1")...
  • 通过VBA解析Json数组

    2021-07-19 17:52:19
    I am getting a json response from an api and parse it to update in excel.... I am not able to parse further to get the price info.Dim strResult As StringDim objHTTP As ObjectDim URL As...
  • VBA findNext nothing 问题

    2020-04-19 17:59:03
    rngTemp.Address functionRetStr = ActiveSheet.Cells(rngTemp.Row, cel).Value Do Set rngTemp = rngA.Find(what:=currentValue, LookAt:=xlWhole, after:=rngTemp) If Not functionRetStr Like "*" & ActiveSheet....
  • vba常用方法

    2020-10-06 08:43:59
    Excel VBA常用代码总结1 做了几个月的Excel VBA,总结了一些常用的代码,我平时编程的时候参考这些代码,基本可以完成大部分的工作,现在共享出来供大家参考。 说明:本文为大大佐原创,但部分代码也是参考百度得...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,311
精华内容 524
关键字:

likenotvba