Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: ptguanyao1

根据关键词 调取

[复制链接]
 楼主| 发表于 2020-1-3 11:45 | 显示全部楼层
爱疯 发表于 2020-1-3 11:43
当条件1=对应条件1  条件2=对应条件2    读取瞒足条件的对应行
会不会有多行?比如4楼那样

不会有多行 重复的 ,没行条件都不一样  
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

 楼主| 发表于 2020-1-3 11:47 | 显示全部楼层
爱疯 发表于 2020-1-3 11:43
当条件1=对应条件1  条件2=对应条件2    读取瞒足条件的对应行
会不会有多行?比如4楼那样

工作表里面 数据 A b列    同时相同的 不会存在,  在第一个工作表 是A 和B列 数据是会有相同的  
回复

使用道具 举报

发表于 2020-1-3 15:20 | 显示全部楼层
Sub test()
    Dim A, d, i
    Application.ScreenUpdating = False
    Set d = CreateObject("scripting.dictionary")

    '1)写
    Sheets(2).Select
    A = Range("a1").CurrentRegion
    For i = 3 To UBound(A)
        If A(i, 1) <> "" And A(i, 2) <> "" Then d(A(i, 1) & "|" & A(i, 2)) = A(i, 3)
    Next i

    '2)读
    Sheets(1).Select
    A = Range("a4").CurrentRegion
    For i = 2 To UBound(A)
        If A(i, 1) <> "" And A(i, 2) <> "" Then A(i, 3) = test2(d(A(i, 1) & "|" & A(i, 2)))
    Next i

    Range("a4").Resize(UBound(A), UBound(A, 2)) = A
End Sub


'从C列的总个数里,随机取10个
Function test2(str)
    Dim x, y, z, arr, brr(), i, t
    arr = VBA.Split(str, ",")
    x = LBound(arr): y = UBound(arr): z = 10
    ReDim brr(1 To z)
    For i = x To x + z - 1
        t = Int((y - i + 1) * Rnd) + i
        brr(i - x + 1) = arr(t)
        arr(t) = arr(i)
    Next i
    test2 = Join(brr, ",")
End Function



提取数据2.rar (16.63 KB, 下载次数: 5)

评分

参与人数 1学分 +2 收起 理由
ptguanyao1 + 2 我和小伙伴都惊呆了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2020-1-3 15:33 | 显示全部楼层
爱疯 发表于 2020-1-3 15:20
Sub test()
    Dim A, d, i
    Application.ScreenUpdating = False

非常感谢
回复

使用道具 举报

 楼主| 发表于 2020-1-3 17:12 | 显示全部楼层
爱疯 发表于 2020-1-3 15:20
Sub test()
    Dim A, d, i
    Application.ScreenUpdating = False

21.png
第一种情况:在研究你的 代码是 我把数据读取数据修改为1时,  数据库时间量少时  会有读取到数据为空的情况。这种要如何修改。



32.png
第二种情况:随机读取数据10个不变,当数据库那边数据低于10个时会提示 下标越界 需要修改哪里
帮忙再指导下,谢谢
回复

使用道具 举报

发表于 2020-1-3 17:23 | 显示全部楼层
z=10

改成

z = IIf(y > 10, 10, y)

评分

参与人数 1学分 +2 收起 理由
ptguanyao1 + 2 学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2020-1-3 17:30 | 显示全部楼层

好的  谢谢,第一种问题 我发现是我入数据库 后面多了一个, 造成的 非常感谢
回复

使用道具 举报

 楼主| 发表于 2020-1-3 17:35 | 显示全部楼层

21.png
改完下面这个有提示了
回复

使用道具 举报

发表于 2020-1-3 20:22 来自手机 | 显示全部楼层
本帖最后由 爱疯 于 2020-1-3 20:23 编辑

If A(i, 1) <> "" And A(i, 2) <> "" Then

两处都改成

If A(i, 1) <> "" And A(i, 2) <> "" and a(i,3)<>"" Then

评分

参与人数 1学分 +2 收起 理由
ptguanyao1 + 2 学习

查看全部评分

回复

使用道具 举报

发表于 2020-1-3 20:22 来自手机 | 显示全部楼层
手机回,没测试,如果还不行,上传失败附件,只能明天再看

评分

参与人数 1学分 +2 收起 理由
ptguanyao1 + 2 学习

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 11:06 , Processed in 0.511431 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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