Sheets("Tem").Activate 'tem为原始表格
ActiveSheet.AutoFilterMode = False
Sheets("Tem").Rows("1:1").Select
Selection.AutoFilter '将原始表格设为过滤状态
Selection.AutoFilter Field:=10, Criteria1:="<1000" '选择过滤的位置,设定过滤的条件
Sheets("Tem").Range("a1").CurrentRegion.Select '选择过滤的内容
Selection.Copy Sheets("Sheet1").Range("a1") '复制选择的内容到目标表格
End Sub
不需要用vba, *** 作方法如下:
1.在sheet1中先写好筛选条件,点开你文件复制的目标excel(本文是sheet2),最上面工具栏中点“数据”,找到筛选旁边的“高级”选项,跳出“高级筛选”框。
2.选中“将筛选结果复制到其他位置”,然后“列表区域”选中sheet1中的原始数据,“条件区域”选中sheet1中我们提前写好的条件,“复制到”选中sheet2中任意一个单元格(如果有要求是哪个单元格,直接点击对应单元格),“确定”。
3.结果就出来了,是不是很简单。
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)