ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1646|回复: 10

[求助] 根据条件提取不重复值

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-1-19 16:07 | 显示全部楼层 |阅读模式
之前论坛求助过提取不重复值VBA代码,多谢大家帮助解决了,尤其感谢NadrsSaber。现再次求助大家。需求将“底档”C列货名为“集装箱”和“杂货”,“底档”B列为“进”所对应的A列不重复值提取至“表格”A4以下,“底档”B列为“出”所对应的A列不重复值提取至表格F4以下。万分感谢!

根据条件提取不重复值.rar

15.55 KB, 下载次数: 125

TA的精华主题

TA的得分主题

发表于 2020-1-19 18:44 | 显示全部楼层
Sub tq()
    Set dc = CreateObject("scripting.dictionary")
    Set dj = CreateObject("scripting.dictionary")
    arr = Sheets(2).UsedRange
    For j = 2 To UBound(arr)
        If arr(j, 2) = "出" Then
            dc(arr(j, 1)) = ""
        Else
            If arr(j, 2) = "进" Then
                If arr(j, 3) = "集装箱" Or arr(j, 3) = "杂货" Then
                    dj(arr(j, 1)) = ""
                End If
            End If
        End If
    Next j
    If dj.Count > 1 Then
        [b4].Resize(dj.Count) = WorksheetFunction.Transpose(dj.keys)
    End If
    If dc.Count > 1 Then
        [f4].Resize(dc.Count) = WorksheetFunction.Transpose(dc.keys)
    End If
End Sub

TA的精华主题

TA的得分主题

发表于 2020-1-19 18:44 | 显示全部楼层
附件内容供参考。。。。。

根据条件提取不重复值.zip

21.4 KB, 下载次数: 78

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-1-19 20:40 | 显示全部楼层
liulang0808 发表于 2020-1-19 18:44
附件内容供参考。。。。。

版主威武!    顺祝版主老师新春快乐!

点评

楼主这个仅仅是字典的一个简单应用的  发表于 2020-1-19 20:49

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-20 10:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liulang0808 发表于 2020-1-19 18:44
附件内容供参考。。。。。

多谢版主啦 我先去试试,如有问题再请教。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-20 10:52 | 显示全部楼层
liulang0808 发表于 2020-1-19 18:44
Sub tq()
    Set dc = CreateObject("scripting.dictionary")
    Set dj = CreateObject("scripting.di ...

版主我没描述清楚,应该是需求将“底档”C列货名为“集装箱”和“杂货”,“底档”B列为“进”所对应的A列不重复值提取至“表格”A4以下。将“底档”C列货名为“集装箱”和“杂货”,“底档”B列为“出”所对应的A列不重复值提取至表格F4以下。少打了红色字体的部分,所以出提取出来的是所以的货类,自己尝试改了下,但是进口就不显示啦,还是麻烦版主给改下把
arr = Sheets(2).UsedRange
    For j = 2 To UBound(arr)
        If arr(j, 2) = "出" Then
           If arr(j, 3) = "集装箱" Or arr(j, 3) = "杂货" Then
            dc(arr(j, 1)) = ""
        Else
            If arr(j, 2) = "进" Then
                If arr(j, 3) = "集装箱" Or arr(j, 3) = "杂货" Then
                    dj(arr(j, 1)) = ""

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-20 11:17 | 显示全部楼层
版主还需要麻烦下,因为我没描述清楚需求,所以出口提取出来了全部货类,自己试着改了下,但是进口不能提取了,我将需求改下还请版主给修改下代码,感谢感谢
需求将“底档”C列货名为“集装箱”和“杂货”,“底档”B列为“进”所对应的A列不重复值提取至“表格”A4以下。
      将“底档”C列货名为“集装箱”和“杂货”,“底档”B列为“出”所对应的A列不重复值提取至“表格”F4以下。

TA的精华主题

TA的得分主题

发表于 2020-1-20 12:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub tq()
  2.     Set dc = CreateObject("scripting.dictionary")
  3.     Set dj = CreateObject("scripting.dictionary")
  4.     arr = Sheets(2).UsedRange
  5.     For j = 2 To UBound(arr)
  6.         If arr(j, 3) = "集装箱" Or arr(j, 3) = "杂货" Then
  7.             If arr(j, 2) = "出" Then
  8.                 dc(arr(j, 1)) = ""
  9.             Else
  10.                 If arr(j, 2) = "进" Then
  11.                     dj(arr(j, 1)) = ""
  12.                 End If
  13.             End If
  14.         End If
  15.     Next j
  16.     If dj.Count > 1 Then
  17.         [b4].Resize(dj.Count) = WorksheetFunction.Transpose(dj.keys)
  18.     End If
  19.     If dc.Count > 1 Then
  20.         [f4].Resize(dc.Count) = WorksheetFunction.Transpose(dc.keys)
  21.     End If
  22. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2020-1-20 12:16 | 显示全部楼层
附件内容供参考。。。。。。

根据条件提取不重复值.zip

18.84 KB, 下载次数: 56

TA的精华主题

TA的得分主题

发表于 2020-1-20 18:25 | 显示全部楼层
本帖最后由 jeff_ps2009 于 2020-1-20 18:29 编辑

谢谢楼主的例子和大神的解答,不过我有点搞不懂这个不重复的逻辑~~~   

假如序号:320010002    进出状态:出    货物:集装箱
                 320010002     进出状态:出    货物:杂货

那最后的结果只显示一个 320010002。  这种情况怎么办?

还是说,楼主的例子里面不可能存在同样序号和同样的进出状态,而货物即是集装箱又是杂货?如果存在,怎么判断?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 08:36 , Processed in 0.035907 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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