问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Excel 用VBA提取数据

发布网友 发布时间:2022-04-21 17:12

我来回答

4个回答

热心网友 时间:2022-07-14 15:29

 1、汉字在前,数字在后面的情形。可以用MID,min, find三个函数来实现提取里面的数字。如图:在B2输入“=MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&“0123456789”)),20)”

 2 、把单元格里面所有的数字都提出来。可以使用宏。先打开VBA编辑器。工具——宏——visual basic 编辑器

 3、在编辑器里点击插入——模块。在模块那里输入如下代码:

  Function zzsz(xStr As String) As StringDim i As IntegerFor i = 1 To Len(xStr)If IsNumeric(Mid(xStr, i, 1)) Then zzsz = zzsz & Mid(xStr, i, 1)NextEnd Function

  4、回到工作表,在B2单元格那里输入“=zzsz(A2)”。就可以用VBA把A2单元格里所有的数字都提取出来了,如图所示。



 Excel怎么只提取表格中的数字

  5、指定从第几个数组提取开始。也就是说在不连续的那些数字中,从第几次出现的数组开始提取。同样在模块那里输入如下代码:

  Function GetNums(rCell As Range, num As Integer) As StringDim Arr1() As String, Arr2() As StringDim chr As String, Str As StringDim i As Integer, j As IntegerOn Error GoTo line1

  Str = rCell.TextFor i = 1 To Len(Str)chr = Mid(Str, i, 1)If (Asc(chr) 《 48 Or Asc(chr) 》 57) ThenStr = Replace(Str, chr, “ ”)End IfNext

  Arr1 = Split(Trim(Str))ReDim Arr2(UBound(Arr1))For i = 0 To UBound(Arr1)If Arr1(i) 《》 “” ThenArr2(j) = Arr1(i)j = j + 1End IfNext

  GetNums = IIf(num 《= j, Arr2(num - 1), “”)line1:End Function


 6、在回到单元格那里输入“=Getnums(A3,2)”就可以提取第几次出现的数组了,如图所示。

热心网友 时间:2022-07-14 15:29

Sub 提取数据()
Application.ScreenUpdating = False '这句将极大提升效率
n = 1  '数据提取表从第一行开始填充数据
For i = 3 To Sheets.count '从第3个表开始直到最后1个表
    For j = 4 To 2000  '每个表的数据从第四行开始
        If Sheets(i).Cells(j, "C") = "" Then Exit For 'C列数据为空,该表数据提取完毕
        If Sheets(i).Cells(j, "L") <> "√" Then
            Sheets(1).Range("B" & n & ":K" & n).Value = Sheets(i).Range("B" & j & ":K" & j).Value
            n = n + 1
        End If
    Next
Next
Application.ScreenUpdating = True
End Sub

追问你好,基本可以实现了,因上传的文件和实际的有少许出入。现实的表,√在m列,将符合的要求的数据C-L列提取出来,应该怎么改

追答Sub 提取数据()
Application.ScreenUpdating = False '这句将极大提升效率
n = 1  '数据提取表从第一行开始填充数据
For i = 3 To Sheets.count '从第3个表开始直到最后1个表
    For j = 4 To 5000  '每个表的数据从第四行开始
        If Sheets(i).Cells(j, "D") = "" Then Exit For 'D列数据为空,该表数据提取完毕
        If Sheets(i).Cells(j, "M") <> "√" Then
            Sheets(1).Range("C" & n & ":L" & n).Value = Sheets(i).Range("C" & j & ":L" & j).Value
            n = n + 1
        End If
    Next
Next
Application.ScreenUpdating = True
End Sub

热心网友 时间:2022-07-14 15:30

附件做好的,

有问题追问

 

Alt +F8运行

热心网友 时间:2022-07-14 15:30

你的前两个表是不是固定的名称,而且是不需要提取的?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求想逗比的.4个字。 支付宝快捷登机可享受什么服务呢? 掌嘴怎么造句 春带彩的翡翠怎么辨别真假春带彩的翡翠辨别真假的方法 社会工作师的考试难度怎么样 社工证容易考下来吗 双层玻璃碎了一层能换吗?原因和更换步骤 直接支付和授权支付方式的区别与联系? 国库集中支付包括什么 老师你好事业单位的直接支付和授权支付怎么区分 如何用2007版Excel VBA提取给定条件单元格数据? VBA提取符合某列条件的行数据到指定的工作表位置,... VBA中怎样把行里数据根据某一条件写到另一张表对应... vba 单独提取符合条件数据 VBA 按条件查找并提取数据 如何利用excel vba提取指定条件的数据 小米10正常相机和108m乃个照的质量好? 小米10s超级防抖没效果 小米10和p40拍照哪个好 为什么小米10致尊版手机没有光学防抖功能? 现在的小米手机旗舰机是不是都没有那个防抖功能呀... 小米10光学防抖怎么打开 小米10致尊相机不支持osi防抖吗 小米10稳定版是双防抖功能吗? excel count函数的用法 内置计算函数count的功能是 count()函数的作用是将范围内单元格内容相加这句话... 计算机里COUNT是什么函数?怎么用的?好评!! 函数COUNT(A1:A10)的功能是 excel函数的count与counta的运用有什么区别啊 excel满足一定条件提取数据,最好用VBA 求助: 利用VBA按照指定条件搜索数据,并把数据复制... EXCEL中请用VBA按要求提取数据。 用vba提取一列数中第一个满足条件的数值 VBA 跨工作簿按条件查找并提取数据 Vba实现“提取工作簿指定工作表符合条件的数据到特... VBA 如何按照特定的条件获取一定范围内的随机数据.... 用VBA实现Excel中数据的提取并且汇总 如何使用Excel vba快速提取需要的信息? 怎么用vba实现按条件提取word文档中的数据? VBA 提取满足条件的值到另一个表 澳洲PTE考试培训机构哪个比较好?哪家PTE培训辅导... 网上那些免费的澳洲留学中介靠谱吗 新移民到澳洲如何免费参加英语课程 澳大利亚免费英文培训班 澳洲有哪些比较好的英语语言培训,具体费用得多少? 哪个托福培训机构最好 澳移民答疑:移民申请人为什么要付英语培训费 你好,去澳大利亚需不需要英语培训?我从万国国际... 澳洲留学有语言培训吗?