我有一些问题创建一个宏>。> ..并想请求一些帮助,因为重新制作工作表并重新执行所有数据真的很痛苦。基本上我有Sheet1和Sheet2,Sheet1包含“NEW”数据,Sheet2包含“OLD”数据。
Inside Sheet2第1行有特定的列标题,例如:(B1)标题,(E1)数量。在Sheet1中有标题; (A1)标题,(G1)数量。
现在我的问题是,任何人都可以创建一个工作宏来扫描Sheet1和Sheet2,比较标题名称,找到常见标题..然后只需更新Sheet2中的数量列?
Sheet1和Sheet2不包含相同数量的标题,但是Sheet2中的所有标题都应该在Sheet1中找到。我只需要它将数量更新为它在Sheet1中找到的数量。
这有意义吗? (不是整行) 任何帮助将不胜感激。这让我很生气。先谢谢你。
编辑兰斯:
Sheet1:
Title id Type Paperid Imageid uuid Quantity
Batman5132 23
Sheet2:
category title description price Quantity
Batman5132 54
我想要宏,获取Sheet2的标题并查看Sheet1的标题并找到完全相同的标题,并且必须更新数量单元格(使用上面列出的列)
答案 0 :(得分:1)
Dim sh1 As Worksheet
Dim rw2 As Range
Set sh1 = Worksheets("Sheet1")
For Each rw2 In Sheets("Sheet2").UsedRange.Rows
If Not sh1.UsedRange.Columns(1).Find(rw2.Cells(1, 2).Value,, xlValues, xlWhole) Is Nothing Then
rw2.Cells(1, 5) = sh1.UsedRange.Columns(1).Find(rw2.Cells(1, 2).Value,, xlValues, xlWhole).Offset(0, 6)
End If
Next rw2
答案 1 :(得分:0)
如果您的数据合适且您愿意从宏/模块子(需要参考ADO)或脚本/程序执行SQL语句,则可以使用单个
进行更新。UPDATE [OldSheet$] AS O INNER JOIN [NewSheet$] AS N ON O.[Title] = N.[Title] SET O.[Quantity] = N.[Quantity]
证据:
SELECT * FROM [NewSheet$]
!Title !Quantity!
!Title1 ! 10!
!Title2 ! 20!
!Title3 ! 30!
!Title4 ! 40!
!Title5 ! 50!
!Title6 ! 60!
!Title7 ! 70!
!Title8 ! 80!
!Title9 ! 90!
!Title10! 100!
SELECT * FROM [OldSheet$]
!Title !Quantity!
!Title1! 1!
!Title3! 3!
!Title5! 5!
!Title7! 7!
!Title9! 9!
UPDATE [OldSheet$] AS O INNER JOIN [NewSheet$] AS N ON O.[Title] = N.[Title] SET O.[Quantity] = N.[Quantity]
SELECT * FROM [OldSheet$]
!Title !Quantity!
!Title1! 10!
!Title3! 30!
!Title5! 50!
!Title7! 70!
!Title9! 90!