精华内容
下载资源
问答
  • VBA示例之 在特定的区域内查找文本,返回值是包含查找文本的单元格,供初学者参考,大牛勿进~~~~~~~
  • word vba 如何查找出一个字符串中包括了多少个指定子字符串? Sub at() aaaa = "ASDFSF。ASDF。SDF。234。'XCV。d" '第1种方法 bbb = Replace(aaaa, "。", "") cccc = Split(aaaa, "。") CS1 = Len(aaaa) - Len...

    word vba 如何查找出一个字符串中包括了多少个指定子字符串?

    Sub at()
    
    aaaa = "ASDFSF。ASDF。SDF。234。'XCV。d"
    
    '第1种方法
    bbb = Replace(aaaa, "。", "")
    cccc = Split(aaaa, "。")
    CS1 = Len(aaaa) - Len(bbb)
    
    
    '第2种方法
    CS2 = UBound(Split(aaaa, "。"))
    
    End Sub

    第1种方法,主要使用了replace函数和len函数。

    对比替换前后的字符串的长度差值,该差值即是。

     

    第2种方法:

    使用split函数后,用ubound函数求出得到数组的上标数值。

    该上标值即是。

    展开全文
  • 提取字符中指定类型的字符_Excel VBA应用.rar,在实际工作中经常需要从字符串中提取指定类型的字符,假设目标字符串为“I Love Excel Home中123-45文 论67890坛”,利用本例介绍的代码能够提取其中的字母、数字和中文...
  • Vba代码集锦--Find方法(3)-查找所有符合条件的单元格并显示2018-09-14代码示例Sub aaa()"区域查找,从某区域查找所有符合条件的单元格并一一显示Dim MRG As Range, aaa As StringSet MRG = Range("A1:F20").Find("A...

    Vba代码集锦--Find方法(3)-查找所有符合条件的单元格并显示

    2018-09-14

    代码示例

    Sub aaa()

    "区域查找,从某区域查找所有符合条件的单元格并一一显示

    Dim MRG As Range, aaa As String

    Set MRG = Range("A1:F20").Find("A")

    aaa = MRG.Address

    Do

    Set MRG = Range("A1:F20").FindNext(MRG)

    MsgBox MRG.Address

    Loop Until MRG.Address = aaa

    End Sub

    代码解析

    Sub aaa()

    Dim MRG As Range, aaa As String

    "定义MRG为单元格对象,定义aaa为字符类型

    Set MRG = Range("A1:F20").Find("A",lookat:=xlpart)

    "在区域“A1:F20”内寻找包含“A”的单元格,并将其赋值给MRG

    aaa = MRG.Address

    "将MRG的地址赋值给aaa

    Do

    "开始Do循环

    Set MRG = Range("A1:F20").FindNext(MRG)

    "在区域“A1:F20”范围内,从MRG之后开始查找包含“A”的单元格,并将其赋值给MRG

    "此时MRG的值已经被更新,为区域内第N 1个出现“A”的单元格,N是Do的次数

    MsgBox MRG.Address

    "显示MRG的地址,也可以更换为其他需要处理的代码

    Loop Until MRG.Address = aaa

    "直到MRG的地址等于aaa(即第一次出现"A"的单元格地址)时停止循环

    End Sub

    ----------------------------------------

    免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

    http://www.pinlue.com/style/images/nopic.gif

    展开全文
  • 1.EXCEL VBA遍布文件夹的操作 关于VBA遍历文件夹主要用的是提供的Application.FileDialo函数来由个人进行自由选择,通过获取选择... Dim sel_Path As String '//定义一选择的文件夹 Dim MyFile As String '//文...

    1.EXCEL VBA遍布文件夹的操作

    关于VBA遍历文件夹主要用的是提供的Application.FileDialo函数来由个人进行自由选择,通过获取选择的文件夹地址之后,通过Dir函数来匹配选取文件夹下的相应的文档。相应的VBA程序代码如下:

       Dim sel_Path As String   '//定义一个选择的文件夹
       Dim MyFile As String    '//文件夹中符合条件的文件
      
        '//选取相应的文件夹
        With Application.FileDialog(msoFileDialogFolderPicker)
            
            .Title = "请选择文件夹"
            
            If .Show = -1 Then
               sel_Path = .SelectedItems(1)       '//所选择的文件夹路径
            Else
                MsgBox "已取消操作!"
                Exit Sub
            End If
            
       End With
       
      Dim sel_PathFullName As String                            '定义一个文件的全路径名称
        
       MyFile = Dir(sel_Path & "\" & "*.csv")

    2.关于单元格地址的获取

    在写VBA的过程中,对于单元格地址的获取至关重要,它直接决定了能否完成正确的完成相应的操作。获取单元格地址主要有以下几种方法:

    2.1          以下几种获取结果如注释所示

       F_Max_Range = ActiveCell.Address()           '获得单元格的地址,形式为$A$1
       F_Max_Range = ActiveCell.Address(0, 0)       '获得单元格的地址,形式为A1
       F_Max_Range = ActiveCell.Address(0, 1)       '获得单元格的地址,形式为$A1
       F_Max_Range = ActiveCell.Address(1, 0)       '获得单元格的地址,形式为A$1
       F_Max_Range = ActiveCell.Address(1, 1)       '获得单元格的地址,形式为$A$1

             2.2        以变量的形式获取单元格地址

    以获取最后一列的最后一个单元格的地址为例:首先需要获取获取最后一列的地址,再得到总的行数,将以上两种结果进行拼接,即得出最后一列的最后一个单元格的地址。相应的关键代码如下:

    Num_Col = Wb.Worksheets(2).UsedRange.Columns.count          '总的列数
    Row_Col = Wb.Worksheets(2).UsedRange.Rows.count             '总的行数
    
    Add_Max_Col = Split(Cells(1, Num_Col).Address, "$")(1)      '获得最后一列的地址
    
    Range_Add_Max_Col = Add_Max_Col & "1"                       '最后一列的第一个单元格的地址
    Range_Add_Max_Row = Add_Max_Col & Row_Col                   '最后一列的最后一个单元格的地址

     2.3           关于单元格的偏移

    单元格偏移主要用到的函数是Offset,如偏移1个和2个单元格的关键代码:

      F_Max_Range = ActiveCell.Offset(0, 1).Address(0, 0)
      S_Max_Range = ActiveCell.Offset(0, 2).Address(0, 0)

            2.4            关于选择多个单元格

    选择多个单元格要注意单元格之间的拼接格式,要注意中间的“:”,如对以上F_Max_Range 到 S_Max_Range单元格的选择的关键代码:

    Wb.Worksheets(2).Range(F_Max_Range & ":" & S_Max_Range).Select

    3.关于复制和粘贴

    复制和粘贴极大的简化了我们的工作,VBA的复制主要通过copy函数来实现,粘贴主要通过Paste来实现。要注意复制和粘贴之前 一定要选中所要复制的列。即select。关键代码:

    '提取出相应的列到sheet2表中
    
    Dim sel_col As String          '定义需要操作的列
    sel_col = Workbooks("遍历文件夹中的csv文件(处理带逗号的VBA程序)").Worksheets(1).Range("B2").Value
    
    sel_col = Mid(sel_col, InStr(sel_col, ":") + 1)
    
    Wb.Worksheets(1).Range(sel_col).Select
    Selection.Copy
    Wb.Sheets.Add After:=ActiveSheet
    
    Wb.Worksheets(2).Select
    ActiveSheet.Paste

    4 完全代码:

    本完全代码实现了遍历相应文件夹下的所有EXCEL(CSV)文件,并复制相应的列到另一个sheet中。另外还有分列、绘图操作。关于EXCEL原文件暂不上传,读者可以根据需要进行相应的简单的修改即可。

    '//遍历文件夹部分,并选中相应的csv文件
        
        Dim sel_Path As String   '//定义一个选择的文件夹
        Dim MyFile As String    '//文件夹中符合条件的文件
        Dim count As Integer   '//一共操作文件的数目
        
        '//选取相应的文件夹
        With Application.FileDialog(msoFileDialogFolderPicker)
            
            .Title = "请选择文件夹"
            
            If .Show = -1 Then
               sel_Path = .SelectedItems(1)       '//所选择的文件夹路径
            Else
                MsgBox "已取消操作!"
                Exit Sub
            End If
            
       End With
          
       '//创建一个新的文件夹用来保存数据处理的结果
          On Error Resume Next
       Dim Save_Path_Name As String
       Save_Path_Name = sel_Path & "\" & "文件处理结果"
       VBA.MkDir (sel_Path & "\" & "文件处理结果")
      
      Dim sel_PathFullName As String                            '定义一个文件的全路径名称
      Dim Wb As Workbook                                        '定义一个要操作的工作薄
        
        MyFile = Dir(sel_Path & "\" & "*.csv")
        
        '读入文件夹中的第一个.csv文件
    
       Do While MyFile <> ""
        
        count = count + 1        '记录文件的个数
        
        sel_PathFullName = sel_Path & "\" & MyFile             '相应文件夹下的符合条件的csv文件
            
       'sel_PathFullName = Application.GetOpenFilename            '自定义文件的路径
        Set Wb = Workbooks.Open(sel_PathFullName)                 '打开所选择的文件
       'ActiveWindow.Visible = False                               静默打开并不能读取文件
    
    '提取出相应的列到sheet2表中
    
    Dim sel_col As String          '定义需要操作的列
    sel_col = Workbooks("遍历文件夹中的csv文件(处理带逗号的VBA程序)").Worksheets(1).Range("B2").Value
    
    sel_col = Mid(sel_col, InStr(sel_col, ":") + 1)
    
    Wb.Worksheets(1).Range(sel_col).Select
    Selection.Copy
    Wb.Sheets.Add After:=ActiveSheet
    
    Wb.Worksheets(2).Select
    ActiveSheet.Paste
    
    Dim F_Numcol As Long                '第一次复制后数据的列的数目
    Dim F_Add_Max_Col As String         '第一次复制后最后一列的地址
    
    F_Numcol = Wb.Worksheets(2).UsedRange.Columns.count
    '选中最后一列
    Wb.Worksheets(2).Columns(F_Numcol).Select
    F_Add_Max_Col = Split(Cells(1, F_Numcol).Address, "$")(1) & "1"       '获得最后一列的地址
    
    '对列进行分列处理
            Selection.TextToColumns Destination:=Range(F_Add_Max_Col), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=True, Space:=False, Other:=True, OtherChar:= _
            "[", TrailingMinusNumbers:=True
    
    Dim Num_Col As Long               '找出表中的最后一列
    Dim Row_Col As Long               '找出表中的最后一行
    Dim Add_Max_Col As String         '最后一列的地址
    Dim Range_Add_Max_Col As String   '定义最后一列的第一个单元格的地址
    Dim Range_Add_Max_Row As String   '定义最后一行的第一个单元格的地址
    
    Num_Col = Wb.Worksheets(2).UsedRange.Columns.count          '总的列数
    Row_Col = Wb.Worksheets(2).UsedRange.Rows.count             '总的行数
    
    Add_Max_Col = Split(Cells(1, Num_Col).Address, "$")(1)      '获得最后一列的地址
    
    Range_Add_Max_Col = Add_Max_Col & "1"                       '最后一列的第一个单元格的地址
    Range_Add_Max_Row = Add_Max_Col & Row_Col                   '最后一列的最后一个单元格的地址
    
    '选中最后一列
    Wb.Worksheets(2).Columns(Num_Col).Select
    
    '对分列出的最后一列进行分列,从而删除"]"字符
     Selection.TextToColumns Destination:=Range(Range_Add_Max_Col), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
            :="]", TrailingMinusNumbers:=True
            
     '获得最后一个单元格右边的一个单元格并给其赋值V1
      Wb.Worksheets(2).Range(F_Add_Max_Col).Select
      
        '最后一个单元格右边的一个单元格的地址
      
       Dim F_Max_Range  As String
       Dim S_Max_Range  As String
    
    '   F_Max_Range = ActiveCell.Address()           '获得单元格的地址,形式为$A$1
    '   F_Max_Range = ActiveCell.Address(0, 0)       '获得单元格的地址,形式为A1
    '   F_Max_Range = ActiveCell.Address(0, 1)       '获得单元格的地址,形式为$A1
    '   F_Max_Range = ActiveCell.Address(1, 0)       '获得单元格的地址,形式为A$1
    '   F_Max_Range = ActiveCell.Address(1, 1)       '获得单元格的地址,形式为$A$1
    
       F_Max_Range = ActiveCell.Offset(0, 1).Address(0, 0)
       S_Max_Range = ActiveCell.Offset(0, 2).Address(0, 0)
    '   F_Max_Range = Split(ActiveCell.Offset(0, 1).Address, "$")(1) & "1"
    '   S_Max_Range = Split(ActiveCell.Offset(0, 2).Address, "$")(1) & "1"
       
      ActiveCell.Offset(0, 1).Value = "V1"
      ActiveCell.Offset(0, 2).Value = "V2"
      
       '给分列之后的数据定义一个标签
      Wb.Worksheets(2).Range(F_Max_Range & ":" & S_Max_Range).Select
        Selection.AutoFill Destination:=Wb.Worksheets(2).Range(F_Max_Range & ":" & Range_Add_Max_Col), Type:=xlFillDefault  
    
    '按时间排序
       Wb.Worksheets(2).Sort.SortFields.Clear
       Wb.Worksheets(2).Sort.SortFields.Add Key:=Range("A1"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With Wb.Worksheets(2).Sort
            .SetRange Range("A2:" & Range_Add_Max_Row)
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        
        '添加图表:选中数据源
        Wb.Worksheets(2).Range(F_Max_Range).Select
        Wb.Worksheets(2).Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
        ActiveSheet.Shapes.AddChart2(227, xlLine).Select
        
        '更改图片的大小
        ActiveSheet.Shapes(1).ScaleWidth 1.6, msoFalse, _
            msoScaleFromBottomRight
    
        ActiveSheet.Shapes(1).ScaleHeight 1.8, msoFalse, _
            msoScaleFromBottomRight
               
      Wb.Worksheets(2).Range("A1").Select
      
    '将文件另存为Excel文件
    Dim L As Long
    Dim Exc_str As String
    L = Len(MyFile) - 3
    Exc_str = Save_Path_Name & "\" & Mid(MyFile, 1, L) + "xlsx"
    
    Dim FS As Object
    Set FS = CreateObject("Scripting.FileSystemObject")
    '//判断文件是否存在
      If FS.FileExists(Exc_str) Then
      
         Ans = MsgBox(Mid(MyFile, 1, L) + "xlsx" & "文件已经存在,是否覆盖现有文件", vbYesNo)
         
          If Ans = vbYes Then
          
           Kill Exc_str      '//删除存在的文件
               
            ActiveWorkbook.SaveAs Filename:=Exc_str, FileFormat:= _
             xlOpenXMLWorkbook, CreateBackup:=False
    
          End If
          
     Else
     
          ActiveWorkbook.SaveAs Filename:=Exc_str, FileFormat:= _
             xlOpenXMLWorkbook, CreateBackup:=False
             
     End If
    
     Wb.Close SaveChanges:=False    '关闭文件
     
      '第二次读入的时候不用写参数
            MyFile = Dir
            If MyFile = "" Then
                MsgBox "一共操作了" & count & " 个csv文件!"
                Exit Do         '当MyFile为空的时候就说明已经遍历完了,这时退出Do,否则还要运行一遍
            End If
    
        Loop

    遇见不易,欢迎留言评论,共同学习,共同进步,让工作变得更轻松。

    展开全文
  • EXCEL,如何在多个单元格内查询是否有某个字符 find() 等函数,只能查找一个单元格内是否有某个字符 而需要用 countif() 配合 通配符 * 比如 查找 A 就写成 "*A*" ,或者"*"&F3&"*" 但是不能区分大小写...

    1 模糊查找,用通配符 * 代表其他任意字符

    • SUMIF(报价全页!B:B,"*"&A3&"*",报价全页!H:H)
    • COUNTIF(C:C,"*"&F3&"*")

    2 下面是具体例子

    • EXCEL,如何在多个单元格内查询是否有某个字符
    • find() 等函数,只能查找一个单元格内是否有某个字符
    • 而需要用
    • countif() 配合 通配符 *
    • 比如 查找 A 就写成 "*A*" ,或者 "*"&F3&"*"
    • 但是不能区分大小写
    • 下图公式,比如 =COUNTIF(C:C,"*"&F3&"*")

    展开全文
  • 展开全部截取单元格中前几个字符可以使用LEFT函数。LEFT从文本字符串62616964757a686964616fe4b893e5b19e31333366303138的第一个字符开始返回指定个数的字符。格式为LEFT(text, [num_chars])。软件工具:EXCEL20131...
  • ​EXCEL是由很的对象组成,每对象都有他的属性和方法,所谓的对象可以理解为所有存在的东西,在同一程序里的对象之间是存在关系的,比如说上下级关系或同级关系,上下级关系之间用英文句点“.”连接。...
  • 现需要筛选出所有上海的供应商采购记录,该如何用VBA实现? 商品编码 入库日期 部门 业务员 供应商 数量 单价 金额 GXGY023 2009/1/1 采购部 刘清 上海照明公司 200 41....
  • 工作中,有时候编号与时间、短信回复内容、评论内容等常有混在一起需要拆分的情况,还有一些从数据库Oracle、Mysql等导出的数据字段内容需要拆分,那么除了MID、LEN、SUBSTITUTE等字符函数外,用的最多的就是Find、...
  • 发现系统批量搜索Excel中的文字不好用,替换更无从谈起,于是利用VBA自己搞。 1、点击固定一个单元格,激发对话框打开事件,选定要搜索的文件夹。 2、选定后自动在该单元格下列出文件夹路径,和文件列表同时加载...
  • 同学想学习VBA,却没有勇气,下面是我VBA入门直播课程中的知识点,参加了培训的同学请自己对照下是否掌握了。其它有基础知识的同学也可以自检下。(报名培训班请加微信:527240310)第一讲:...
  • 主要解决,一个EXCEL表格数据,存在某列单元格数值是由指定分隔符号分隔的多个值组成的情况,需要将一行记录拆分为多行记录的需求!
  • 做excel发现现有的函数功能不够用,就自学了一下VBA写了第一新函数:根据条件连接字符串 比如count()有countif()和countifs(),sum()有sumif()和sumifs(),但是concatenate()却没有类似concatenateifs()的函数,...
  • 计数需求是可以用countif函数直接处理,但是同时说公式太长了,容易乱,于是想了想,用vba自定义一函数解决,主要思路是通过instr依次查找单元格内字符串中是否有①、②、③,然后相加起来是否大于1,如果是则...
  • 在实际工作中Word查找和替换强大到让你怀疑人生,本期Word妹与大家分享一在Excel难以解决问题,在Word中却可以轻松搞定的案例。如下图所示,如何将数据中含有汉字的内容删除,只保留非汉字部分或者直接提取汉字...
  • 原因很简单,现在很Excel操作我都不想吭哧吭哧手动编辑半天了,宁可花两三小时苦思冥想一自动化的解决方案不可。喜哉,悲哉?长远来看,肯定是好事了!VBA代码:Sub RowNumberLookup() For Each keyword In ...
  • 问题详情VBA的split函数能不能分隔被多个空格间隔的数据啊?比方说string = "1 23 4"我用split(string," ")得到的并不是我想要的1,2,3,4,而是1,2,空格,3,空格,空格,4怎么VBA的split这么弱,能不能象perl....
  • 当工作表中的列数比较,而且列数、列的位置经常变动时,如果在VBA代码中使用的静态指定的列名,将不得不经常改动VBA代码,非常不方便。 解决方法: 使用自定义列号、列名查找函数。 代码如下: 1. 列号查找...
  • VBA如何判断字符串中有没有汉字

    千次阅读 2019-02-18 09:56:08
    VBA代码时, 我们不时会遇到需要判断字符串中有没有出现汉字的情况。那么怎样判断字符串中有没有汉字呢? 一简单的办法就是使用"like”函数。比如在下例中,我们需要将包含汉字的单元格全部清空,应该怎么...
  • Excel单元格空格的删除是表哥表姐们日常工作中经常遇到的问题,大多数人对这问题的常规解决方法就是:1、全选工作表,按ctrl+H键,弹出查找和替换工作框2、在查找和替换工作框的“查找内容”项,输入“ ”,在...
  • “条件格式”,公式: =IF(COUNTIF($A2,"*北京*")>0,1,0) 然后根据需要设置格式 转载于:https://www.cnblogs.com/sxinfo/p/10661751.html
  • Excel---提取单元格中红色字符

    千次阅读 2019-04-29 09:35:18
    申明:主要参考...EXCEL单元格中有标红的字符串,需要将其从整个字符串中提取出来 2 方法 使用VBA,看起来是通过循环的方式提取的 贴函数,更具体的可以参考https://www.extendoffice.com/z...
  • 熟悉EXCEL函数的朋友遇到截取字符串的时候第一想到的肯定是FIND()、 LEN() 、LEFT()、**RIGHT()**这一套操作, 但很遗憾VBA里面的FIND针对的是Range对象,用到字符串类型的变量上只能会不停报错。此时需要请出的...
  • EXCEL表单元格内特定内容的提取

    千次阅读 2020-06-23 10:09:51
    今天我给大家介绍在工作中使用excel的一小技能-单元格字符串特定内容的提取。 Excel可以说是我们在工作中用得最频繁的一办公软件,但是大家是否知道excel其实具有很可以实现办公自动化的功能呢?不清楚吧?没...
  • 14 日志导出 15 excle文件格式转换 16 VBA隐藏表格 17 改变窗体外观 18 更改Sheet名 19 对文件夹中多个文件进行操作 20 合并单元格 21 插入一行单元格 22 在指定单元格内输入字符 23 调整行高和列宽 24 跳转到该列...
  • 针对一工作簿中很的表,有些需要隐藏,有些需要显示出来,因表的名称比较统一,仅有主体名称不同;如图: 目的是实现仅显示“汇总表”和 “人工费用表”,其他表则都隐藏 二、代码示例 Sub 特定...
  • 1、单元格引用 引用 含义 Range(“A1”) 单元格A1 Range(“A1:B2”) A1到B2的单元格区域 Range(“C5:D9,G9:H16”) 块选定区域 ...
  • VBA常用技巧

    2014-12-21 16:39:28
    技巧5 查找单元格 12 5-1 使用Find方法 12 5-2 使用Like运算符 12 技巧6 替换单元格内字符串 12 技巧7 复制单元格区域 12 技巧8 仅复制数值到另一区域 12 8-1 使用选择性粘贴 12 8-2 直接赋值的方法 12 技巧9 单元格...
  • 现有query的格式为table1.column_ABC as column_ABC,主查询中所需的格式为Query.column_ABC as "column ABC",可见,两者基本相同,可采用Excel公式快速构建query中字段表(select 到 from中间的50列)。

空空如也

空空如也

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

vba查找单元格内多个字符