Excel精英培训网

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

[已解决]老师!帮请帮我实现这个功能!

[复制链接]
发表于 2016-7-13 23:07 | 显示全部楼层 |阅读模式
本帖最后由 666666666 于 2016-7-14 08:28 编辑

2016-07-14_223428.jpg

录3333入A.rar (13.1 KB, 下载次数: 13)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-7-14 08:48 | 显示全部楼层
查询按钮代码如下:
  1. Private Sub CommandButton1_Click()
  2.     ListView1.ListItems.Clear '清除
  3.     ListView2.ListItems.Clear '

  4. With Sheets("sheet1")
  5.     For i = 2 To .[F65536].End(xlUp).Row
  6.    If InStr(.Cells(i, 8) & " ", "主") > 0 Then
  7.                        Set Itm = ListView1.ListItems.Add()
  8.                             qq = ListView1.ListItems.Count
  9.             Itm.Text = qq
  10.             Itm.SubItems(1) = qq
  11.             Itm.SubItems(2) = .Cells(i, 1)
  12.             Itm.SubItems(3) = .Cells(i, 2)
  13.             Itm.SubItems(4) = .Cells(i, 3)
  14.             Itm.SubItems(5) = .Cells(i, 4)
  15.             Itm.SubItems(6) = Application.WorksheetFunction.SumIfs(.Columns("E:E"), .Columns("h:h"), "副", .Columns("F:F"), .Cells(i, 6)) * -1
  16.             Itm.SubItems(7) = .Cells(i, 6)
  17.             Itm.SubItems(8) = .Cells(i, 7)
  18.             Itm.SubItems(9) = .Cells(i, 8)
  19.     End If
  20.           Next i
  21.           End With
  22.           Call CommandButton3_Click
  23. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2016-7-14 11:17 | 显示全部楼层
老司机带带我 发表于 2016-7-14 08:48
查询按钮代码如下:

老师!如ListView1直接从ListView2取值,怎么修改。
因为ListView2里面的金额是手动修改的,并非来自单元格!
回复

使用道具 举报

发表于 2016-7-14 11:36 | 显示全部楼层
666666666 发表于 2016-7-14 11:17
老师!如ListView1直接从ListView2取值,怎么修改。
因为ListView2里面的金额是手动修改的,并非来自单元 ...

直接取值你里面的项目名称怎么处理?比如编号,名称,规格
回复

使用道具 举报

 楼主| 发表于 2016-7-15 09:07 | 显示全部楼层
[ 本帖最后由 666666666 于 2016-7-16 11:03 编辑 ]\n\nPrivate Sub CommandButton2_Click()
    Dim i As Integer
    With Sheets("sheet1")
For G = 1 To ListView1.ListItems.Count
              ListView1.ListItems(G).SubItems(6) = Application.WorksheetFunction.SumIfs(.Columns("E:E"), .Columns("h:h"), "副", .Columns("F:F"), ListView1.ListItems(G).SubItems(7)) * -1
            Next G
    End With
End Sub
想改成从ListView2.ListItems(G).SubItems中取值
Private Sub CommandButton2_Click()
    Dim i As Integer
    With Sheets("sheet1")
For G = 1 To ListView1.ListItems.Count
              ListView1.ListItems(G).SubItems(6) = Application.WorksheetFunction.SumIfs(.Columns("ListView2.ListItems(G).SubItems(6):ListView2.ListItems(G).SubItems(6)"), .Columns("ListView2.ListItems(G).SubItems(9):ListView2.ListItems(G).SubItems(9)"), "副", .Columns("ListView2.ListItems(G).SubItems(7):ListView2.ListItems(G).SubItems(7)"), ListView1.ListItems(G).SubItems(7)) * -1
            Next G
    End With
End Sub
请老师再出手帮帮忙!
回复

使用道具 举报

 楼主| 发表于 2016-7-16 11:01 | 显示全部楼层
本帖最后由 666666666 于 2016-7-16 11:04 编辑

请老师出手再帮帮我



回复

使用道具 举报

发表于 2016-7-16 14:51 | 显示全部楼层    本楼为最佳答案   
金额通过单号进行匹配取值,代码如下:
  1. Private Sub CommandButton2_Click()
  2.     Dim d, i%
  3.     Set d = CreateObject("Scripting.Dictionary")
  4.     With Me
  5.         For i = 1 To .ListView2.ListItems.Count
  6.             If Not d.Exists(.ListView2.ListItems(i).SubItems(7)) Then
  7.                 d.Add (.ListView2.ListItems(i).SubItems(7)), .ListView2.ListItems(i).SubItems(6) * 1
  8.             Else
  9.                 d(.ListView2.ListItems(i).SubItems(7)) = d(.ListView2.ListItems(i).SubItems(7)) + .ListView2.ListItems(i).SubItems(6) * 1
  10.             End If
  11.         Next
  12.         For i = 1 To .ListView1.ListItems.Count
  13.             .ListView1.ListItems(i).SubItems(6) = -d(.ListView1.ListItems(i).SubItems(7))
  14.         Next
  15.     End With
  16. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 21:57 , Processed in 0.344866 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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