Excel精英培训网

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

[已解决]从【ListView2】取值到【ListView1】的问题!

[复制链接]
发表于 2017-8-19 15:45 | 显示全部楼层 |阅读模式
本帖最后由 lenovo0312 于 2017-8-19 15:47 编辑

左边是由(大灰狼1976)老师帮忙修改的代码!
__________________________________________
我参照左边【单元格取值】的代码,试着将其修改成
从【ListView2】取值到【ListView1】。结果失败!
小妹实在是没有办法!
还请坛里的大师出手帮忙修改一下!谢谢!
————————————————————————————
如大灰狼1976老师路过,请再次出手相助!谢谢!
2751.jpg
153154.jpg 附件: 比较复杂的筛选Book3.rar (46.84 KB, 下载次数: 13)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-8-19 16:05 | 显示全部楼层
是不是这样
  1. Private Sub CommandButton1_Click() 'ListView2中取值
  2. Set LV1 = ListView1
  3. Set LV2 = ListView2
  4. Set d2 = CreateObject("scripting.dictionary")
  5. Set d1 = CreateObject("scripting.dictionary")
  6. ReDim arr1(1 To LV2.ListItems.Count, 1 To 9)
  7. For x = 1 To LV2.ListItems.Count
  8.   d1(LV2.ListItems(x).SubItems(9)) = d1(LV2.ListItems(x).SubItems(9)) + LV2.ListItems(x).SubItems(8)
  9.   If LV2.ListItems(x).SubItems(4) = "退" Or LV2.ListItems(x).SubItems(4) = "赠" Then
  10.     d2(LV2.ListItems(x).SubItems(9)) = ""
  11.   End If
  12. Next x
  13. p = d2.Keys
  14. q = d1.Keys
  15. T = d1.Items
  16. For i = 0 To d2.Count - 1
  17.   For x = 1 To LV2.ListItems.Count
  18.     H = LV1.ListItems.Count
  19.     For j = 0 To d1.Count - 1
  20.       If LV2.ListItems(x).SubItems(9) = p(i) Then
  21.         If q(j) = p(i) And T(j) <> 0 Then
  22.           k = k + 1
  23.           LV1.ListItems.Add , , H
  24.           LV1.ListItems(k).SubItems(1) = LV2.ListItems(x).SubItems(9)
  25.           LV1.ListItems(k).SubItems(2) = LV2.ListItems(x).SubItems(1)
  26.           LV1.ListItems(k).SubItems(3) = LV2.ListItems(x).SubItems(2)
  27.           LV1.ListItems(k).SubItems(4) = LV2.ListItems(x).SubItems(3)
  28.           LV1.ListItems(k).SubItems(5) = LV2.ListItems(x).SubItems(4)
  29.           LV1.ListItems(k).SubItems(6) = LV2.ListItems(x).SubItems(7)
  30.           LV1.ListItems(k).SubItems(7) = LV2.ListItems(x).SubItems(5)
  31.           LV1.ListItems(k).SubItems(8) = LV2.ListItems(x).SubItems(8)
  32.           LV1.ListItems(k).SubItems(9) = LV2.ListItems(x).SubItems(6)
  33.         End If
  34.       End If
  35.     Next
  36.   Next
  37. Next
  38. End Sub
复制代码
回复

使用道具 举报

发表于 2017-8-19 16:09 | 显示全部楼层
漏了一句清空listview语句。
  1. Private Sub CommandButton1_Click() 'ListView2中取值
  2. Set LV1 = ListView1
  3. Set LV2 = ListView2
  4. Set d2 = CreateObject("scripting.dictionary")
  5. Set d1 = CreateObject("scripting.dictionary")
  6. ReDim arr1(1 To LV2.ListItems.Count, 1 To 9)
  7. For x = 1 To LV2.ListItems.Count
  8.   d1(LV2.ListItems(x).SubItems(9)) = d1(LV2.ListItems(x).SubItems(9)) + LV2.ListItems(x).SubItems(8)
  9.   If LV2.ListItems(x).SubItems(4) = "tui" Or LV2.ListItems(x).SubItems(4) = "zen" Then
  10.     d2(LV2.ListItems(x).SubItems(9)) = ""
  11.   End If
  12. Next x
  13. p = d2.Keys
  14. q = d1.Keys
  15. T = d1.Items
  16. LV1.ListItems.Clear
  17. For i = 0 To d2.Count - 1
  18.   For x = 1 To LV2.ListItems.Count
  19.     H = LV1.ListItems.Count
  20.     For j = 0 To d1.Count - 1
  21.       If LV2.ListItems(x).SubItems(9) = p(i) Then
  22.         If q(j) = p(i) And T(j) <> 0 Then
  23.           k = k + 1
  24.           LV1.ListItems.Add , , H
  25.           LV1.ListItems(k).SubItems(1) = LV2.ListItems(x).SubItems(9)
  26.           LV1.ListItems(k).SubItems(2) = LV2.ListItems(x).SubItems(1)
  27.           LV1.ListItems(k).SubItems(3) = LV2.ListItems(x).SubItems(2)
  28.           LV1.ListItems(k).SubItems(4) = LV2.ListItems(x).SubItems(3)
  29.           LV1.ListItems(k).SubItems(5) = LV2.ListItems(x).SubItems(4)
  30.           LV1.ListItems(k).SubItems(6) = LV2.ListItems(x).SubItems(7)
  31.           LV1.ListItems(k).SubItems(7) = LV2.ListItems(x).SubItems(5)
  32.           LV1.ListItems(k).SubItems(8) = LV2.ListItems(x).SubItems(8)
  33.           LV1.ListItems(k).SubItems(9) = LV2.ListItems(x).SubItems(6)
  34.         End If
  35.       End If
  36.     Next
  37.   Next
  38. Next
  39. End Sub
复制代码

评分

参与人数 1 +12 收起 理由
苏子龙 + 12 来学习

查看全部评分

回复

使用道具 举报

发表于 2017-8-19 20:11 | 显示全部楼层
学习  了
回复

使用道具 举报

 楼主| 发表于 2017-8-19 22:16 | 显示全部楼层
大灰狼1976 发表于 2017-8-19 16:09
漏了一句清空listview语句。


谢谢!(大灰狼1976)老师!刚回家测试了一下您帮忙修改的代码
发现有个这样的问题,多出了10组数据!
请见附图!
03.jpg
比较复杂的筛选Book3.rar (47.08 KB, 下载次数: 14)
回复

使用道具 举报

 楼主| 发表于 2017-8-20 13:04 | 显示全部楼层
{:31:}{:31:}{:31:}
回复

使用道具 举报

发表于 2017-8-21 09:53 | 显示全部楼层
本帖最后由 苏子龙 于 2017-8-21 09:55 编辑
lenovo0312 发表于 2017-8-19 22:16
谢谢!(大灰狼1976)老师!刚回家测试了一下您帮忙修改的代码
发现有个这样的问题,多出了10组数据!
...

For X = 1 To LV2.ListItems.Count
  d1(LV2.ListItems(X).SubItems(9)) = d1(LV2.ListItems(X).SubItems(9)) + Val(LV2.ListItems(X).SubItems(8))
  If LV2.ListItems(X).SubItems(4) = "退" Or LV2.ListItems(X).SubItems(4) = "赠" Then
  d2(LV2.ListItems(X).SubItems(9)) = ""
  End If

加个val或者*1,不然d1的items是字符串

评分

参与人数 1 +8 收起 理由
大灰狼1976 + 8 赞一个

查看全部评分

回复

使用道具 举报

发表于 2017-8-21 09:58 | 显示全部楼层    本楼为最佳答案   
加附件

比较复杂的筛选Book3.zip

44.21 KB, 下载次数: 15

回复

使用道具 举报

 楼主| 发表于 2017-8-21 15:11 | 显示全部楼层

谢谢老师!
回复

使用道具 举报

发表于 2017-8-21 15:24 | 显示全部楼层

不是我写的,应该给大灰狼版主
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 12:27 , Processed in 0.522167 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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