Excel精英培训网

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

[已解决]关于使用VBA代码达成数据替换的问题---求助

[复制链接]
发表于 2011-8-28 17:04 | 显示全部楼层 |阅读模式
本帖最后由 iphone4 于 2011-8-28 18:07 编辑

请教如何使用VBA代码、


根据sheet1里面B列的正确数据
替换sheet2里面B列的错误数据???




关于数据替换的问题---求助.rar (6.23 KB, 下载次数: 16)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-8-28 17:29 | 显示全部楼层
回复

使用道具 举报

发表于 2011-8-28 17:56 | 显示全部楼层
用公式就可以了=IF(ISNA(VLOOKUP(B3,Sheet1!B:C,2,)),B3,VLOOKUP(B3,Sheet1!B:C,2,))
回复

使用道具 举报

发表于 2011-8-28 18:19 | 显示全部楼层    本楼为最佳答案   
数据多的话用公式还是费时间的,给你一个VBA的:
数据替换.rar (11.27 KB, 下载次数: 30)

评分

参与人数 1 +16 收起 理由
macky591 + 16 学习

查看全部评分

回复

使用道具 举报

发表于 2011-8-28 20:10 | 显示全部楼层
  1. Sub t()
  2. Dim arr, arr1, arr2
  3. arr = Sheet1.Range("B3:C" & Sheet1.Range("B65536").End(xlUp).Row)
  4. arr1 = Sheet2.Range("B3:B" & Sheet2.Range("B65536").End(xlUp).Row)
  5. ReDim arr2(1 To UBound(arr1, 1), 1 To 1)
  6. For i = 1 To UBound(arr1, 1)
  7.     For j = 1 To UBound(arr, 1)
  8.         If arr(j, 1) = arr1(i, 1) Then
  9.             arr2(i, 1) = arr(j, 2)
  10.             i = i + 1
  11.         Else
  12.             arr2(i, 1) = arr1(i, 1)
  13.         End If
  14.     Next
  15. Next
  16. Sheet2.Cells(3, 3).Resize(UBound(arr1, 1), 1).ClearContents
  17. Sheet2.Cells(3, 3).Resize(UBound(arr1, 1), 1) = arr2
  18. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2011-8-29 07:45 | 显示全部楼层
回复 cjainwei 的帖子

大侠,您的代码在( 西西乐sdf )这个数据上,替换不了~!!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 08:11 , Processed in 0.645705 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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