EXCEL如何用VBA实现多条件查询数据?

EXCEL如何用VBA实现多条件查询数据?,第1张

1、以商场2015年第一季度电器销售统计为例子,“产品”、“品牌”、“月份”3个条件的销售额进行查询。

2、假设要查询“康佳”的“1月”份“各类家电”的销售额,先建一个对应列的工作簿。如图,输入条件1:“成品名称”,条件2:“品牌名称”,条件3:“月份”,

3、下面到了建立宏的步骤:单击菜单栏中的“开发工具”——插入——表单控件——按钮,在出现的十字箭头上拖住画出一个按钮,如图所示。

4、在d出的查找红对话框中选择“录制”,在d出的“录制新宏”对话框中,修改宏名称为“查找”,单击确定。

5、单击“开发工具”——查看代码,打开VBA编辑器,如图所示。

6、在VBA编辑器点击插入-模块,如图,

7、现在来输入代码:

Sub查找()

DimiAsInteger,jAsInteger

arr1=Sheets("数据").Range("A2:D"&Sheets("数据").Cells(Rows.Count,"A").End(xlUp).Row)

arr2=Sheets("查找").Range("A2:D"&Sheets("查找").Cells(Rows.Count,"A").End(xlUp).Row)

Fori=1ToUBound(arr2)

Forj=1ToUBound(arr1)

Ifarr2(i,1)=arr1(j,1)Andarr2(i,2)=arr1(j,2)Andarr2(i,3)=arr1(j,3)Then

arr2(i,4)=arr1(j,4)

GoTo100

EndIf

Next

arr2(i,4)=""

100:

Next

Sheets("查找").Range("A2:D"&Sheets("查找").Cells(Rows.Count,"A").End(xlUp).Row)=arr2

EndSub

8、现在回到EXCEL表格,右击按钮,选择“编辑文字”,修改按钮名称为“统计”。

9、那么就完成了。

excel 支持不是很好,range 我没用过 我都是用 select * from [sheet1]

而且加上 order by 就会不稳定

你可以试试 给 range 加上 []

[range1].A ... from [range1]

还有,你的变量不对, cn cnn,rs,rst ,在代码最开头加一行

Option Explicit 强制一下会好点

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9923319.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存