Microsoft Excel 2010宏以更新另一个工作表上的行

时间:2011-05-03 17:38:37

标签: excel vba

我有一些问题创建一个宏>。> ..并想请求一些帮助,因为重新制作工作表并重新执行所有数据真的很痛苦。基本上我有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的标题并找到完全相同的标题,并且必须更新数量单元格(使用上面列出的列)

2 个答案:

答案 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!