Excel精英培训网

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

[已解决]《《《 --- (数据替换)的问题!恳请老师帮忙! --- 》》》

[复制链接]
发表于 2017-8-21 15:47 | 显示全部楼层 |阅读模式
数据替换的问题!恳请老师帮忙!

4253.jpg 附件::::::::: ListView1重新制表2003版.rar (148.01 KB, 下载次数: 12)
发表于 2017-8-21 18:28 | 显示全部楼层
  1. Private Sub CommandButton3_Click()
  2. 'MsgBox "将(进货数据.销售数据)表中 与【A组数据】相匹配的内容 全替换为【B组数据】", 48

  3. Dim arr(1 To 5), brr(1 To 5), i, crr, Str$, n%
  4. For i = 1 To 5
  5. arr(i) = ListView1.SelectedItem.SubItems(i + 1)
  6. brr(i) = ListView2.SelectedItem.SubItems(i + 1)
  7. Next
  8. Str = Join(arr, "|")
  9. With Sheets("进货")
  10.     crr = .Range("e8").CurrentRegion
  11.     For i = 2 To UBound(crr) '开始于行8-->i+6
  12.         If crr(i, 17) & "|" & crr(i, 21) & "|" & crr(i, 3) & "|" & crr(i, 4) & "|" & crr(i, 5) = Str Then
  13.         n = n + 1
  14.            .Cells(i + 6, "e") = brr(3)
  15.            .Cells(i + 6, "F") = brr(4)
  16.            .Cells(i + 6, "G") = brr(5)
  17.            .Cells(i + 6, "W") = brr(2)
  18.            .Cells(i + 6, "S") = brr(1)
  19.         End If
  20.     Next
  21. End With
  22. Erase crr
  23. With Sheets("销售")
  24.    crr = .Range("e8").CurrentRegion
  25.     For i = 2 To UBound(crr) '开始于行8-->i+6
  26.         If crr(i, 17) & "|" & crr(i, 21) & "|" & crr(i, 3) & "|" & crr(i, 4) & "|" & crr(i, 5) = Str Then
  27.         n = n + 1
  28.            .Cells(i + 6, "e") = brr(3)
  29.            .Cells(i + 6, "F") = brr(4)
  30.            .Cells(i + 6, "G") = brr(5)
  31.            .Cells(i + 6, "W") = brr(2)
  32.            .Cells(i + 6, "S") = brr(1)
  33.         End If
  34.     Next
  35. End With
  36. Erase arr, brr, crr
  37. MsgBox n & "个已更改"
  38. End Sub
复制代码

大概这样,数据源格式不要动,不然crr取的会有问题!若有问题自己改改吧
回复

使用道具 举报

 楼主| 发表于 2017-8-21 21:05 | 显示全部楼层
本帖最后由 80013025 于 2017-8-21 21:08 编辑
苏子龙 发表于 2017-8-21 18:28
大概这样,数据源格式不要动,不然crr取的会有问题!若有问题自己改改吧

苏子龙老师!谢谢您给的代码!
我刚执行代码后,发现数据没有任何变化!
请老师帮忙再看看!

651.jpg
回复

使用道具 举报

发表于 2017-8-22 09:19 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub CommandButton3_Click()
  2. 'MsgBox "将(进货数据.销售数据)表中 与【A组数据】相匹配的内容 全替换为【B组数据】", 48
  3. Dim arr(1 To 5), brr(1 To 5), i, crr
  4. Dim str2$, Str$, n%, X%
  5. For i = 1 To 6
  6.     If i <> 3 Then
  7.         X = X + 1
  8.         arr(X) = ListView2.SelectedItem.SubItems(i) 'B数据
  9.         brr(X) = ListView1.SelectedItem.SubItems(i) 'A数据
  10.     End If
  11. Next
  12. Str = Join(arr, "|")
  13. With Sheets("进货")
  14.     crr = .Range("e8").CurrentRegion
  15.     For i = 2 To UBound(crr) '开始于行8-->i+6
  16.         If crr(i, 17) & "|" & crr(i, 21) & "|" & crr(i, 3) & "|" & crr(i, 4) & "|" & crr(i, 5) = Str Then
  17.              n = n + 1
  18.            .Cells(i + 6, "e") = brr(3)
  19.            .Cells(i + 6, "F") = brr(4)
  20.            .Cells(i + 6, "G") = brr(5)
  21.            .Cells(i + 6, "W") = brr(2)
  22.            .Cells(i + 6, "S") = brr(1)
  23.         End If
  24.     Next
  25. End With
  26. Erase crr
  27. With Sheets("销售")
  28.    crr = .Range("e8").CurrentRegion
  29.     For i = 2 To UBound(crr) '开始于行8-->i+6
  30.         If crr(i, 17) & "|" & crr(i, 21) & "|" & crr(i, 3) & "|" & crr(i, 4) & "|" & crr(i, 5) = Str Then
  31.             n = n + 1
  32.            .Cells(i + 6, "e") = brr(3)
  33.            .Cells(i + 6, "F") = brr(4)
  34.            .Cells(i + 6, "G") = brr(5)
  35.            .Cells(i + 6, "W") = brr(2)
  36.            .Cells(i + 6, "S") = brr(1)
  37.         End If
  38.     Next
  39. End With
  40. Erase arr, brr, crr
  41. MsgBox n & "个已更改"
  42. End Sub
复制代码

改了,看下是否还有问题
回复

使用道具 举报

发表于 2017-8-22 09:25 | 显示全部楼层
还有规格不一样的咋办,有没有一个主键什么的,不然不好判断啊
规格不一样.png
回复

使用道具 举报

 楼主| 发表于 2017-8-22 13:27 | 显示全部楼层
苏子龙 发表于 2017-8-22 09:25
还有规格不一样的咋办,有没有一个主键什么的,不然不好判断啊

老师是指,好年冬有10ml的和100ml的吧这两个只是名称相同规格却不同,
可以根据货品编码进行区分
货品编码对每个货品是唯一的
好年冬 10ml      货品编码 HP0145
好年冬 100ml    货品编码 HP0144


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 05:55 , Processed in 0.464486 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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