Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1842|回复: 8

[已解决]如何按两种标准提取数据,谢谢爱疯老师。

[复制链接]
发表于 2016-5-1 11:45 | 显示全部楼层 |阅读模式
本帖最后由 lhj323323 于 2016-5-2 07:18 编辑

老师:
我想按如下两种标准从数据源表提取数据,导入到结果表里,从第2行起导入。

请看附件,先谢谢了。

提取不带汉字的行.rar (3.36 KB, 下载次数: 13)
 楼主| 发表于 2016-5-1 13:35 | 显示全部楼层


我倒是用了个笨办法

Sub BBBB()
Dim arr, arrt(), i%, k%

arr = Sheet2.Range("a1").CurrentRegion
MsgBox "csv文件的个数:" & Len(arr(3, 1))
For i = 2 To UBound(arr)
    If Len(arr(i, 1)) > 4 Then
        k = k + 1
        ReDim Preserve arrt(1 To 5, 1 To k)
        arrt(1, k) = arr(i, 1)
        arrt(2, k) = arr(i, 2)
        arrt(3, k) = arr(i, 3)
        arrt(4, k) = arr(i, 4)
        arrt(5, k) = arr(i, 5)
    End If
Next
With Sheet3
    .Range("a2:e65536").ClearContents
    .[a2].Resize(UBound(arrt, 2), 5) = WorksheetFunction.Transpose(arrt)

End With
Sheet3.Activate
End Sub

就是判断数据源的A列的字符个数,大于4的就提取出来。
但总觉得没有真正解决问题
针对数组,除了用LEN(arr(a,b)),还有没有什么办法能提取arr(a,b)里的是是数字类型还是汉字类型?

这种是不是用不起?
arr(a,b).Value Like "*[一-龥]*"



回复

使用道具 举报

发表于 2016-5-1 16:25 | 显示全部楼层
Sub test()
    Dim A, B(10 ^ 5) As Boolean, i&, j%, s&
    A = Sheet2.Range("a1").CurrentRegion

    For i = 2 To UBound(A)
        If Val(A(i, 1)) = A(i, 1) Then
            If B(A(i, 3)) = False Then
                s = s + 1
                B(A(i, 3)) = True

                For j = 1 To UBound(A, 2)
                    A(s, j) = A(i, j)
                Next j
            End If
        End If
    Next

    With Sheet3
        .Range("a2:e65536").ClearContents
        .[a2].Resize(s, UBound(A, 2)) = A
        .Activate
    End With
End Sub

提取不带汉字的行2.rar (12.33 KB, 下载次数: 3)
回复

使用道具 举报

 楼主| 发表于 2016-5-1 17:39 | 显示全部楼层
爱疯 发表于 2016-5-1 16:25
Sub test()
    Dim A, B(10 ^ 5) As Boolean, i&, j%, s&
    A = Sheet2.Range("a1").CurrentRegion

爱疯老师:
B(10 ^ 5)表示什么?
合同编号是在全国范围内排的,对于个人来说,用不了这么多个合同笔数。
回复

使用道具 举报

发表于 2016-5-1 17:43 来自手机 | 显示全部楼层
等同于 B(0 to 100000)
回复

使用道具 举报

 楼主| 发表于 2016-5-1 17:53 | 显示全部楼层
本帖最后由 lhj323323 于 2016-5-1 17:55 编辑
爱疯 发表于 2016-5-1 16:25
Sub test()
    Dim A, B(10 ^ 5) As Boolean, i&, j%, s&
    A = Sheet2.Range("a1").CurrentRegion

爱疯老师:

我把附件中的数据源更新成全量数据后,为什么导不出来?
复件.rar (30.32 KB, 下载次数: 4)
回复

使用道具 举报

发表于 2016-5-1 19:48 | 显示全部楼层    本楼为最佳答案   
lhj323323 发表于 2016-5-1 17:53
爱疯老师:

我把附件中的数据源更新成全量数据后,为什么导不出来?

复件2.rar (43.16 KB, 下载次数: 9)
回复

使用道具 举报

发表于 2016-5-1 22:22 | 显示全部楼层
只提取了非汉字的记录。因c列分类,不知其它几个字段是否保留?怎样保留?故未分。

提取不带汉字的行.rar

15.61 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2016-5-2 07:18 | 显示全部楼层
爱疯 发表于 2016-5-1 19:48
1)数据源D列的编号位数(也就是字符长度)最多有几位,就必须改为几。
    比如,现在改8就可 ...

谢谢爱疯老师

昨晚测试通过后,论坛限制发言,所以今天早上专程言谢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-17 03:25 , Processed in 0.181901 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表