情景:
我有2个工作簿,第一个是“主”工作簿,另一个是“仆人”工作簿或者其他术语“仆人”工作簿是“主”工作簿的子集,两个工作簿都包含一个名为“商品”的列, “master”工作簿包含所有项目的详尽列表,其中“servant”工作簿中的项目很少,但它包含与这些项目相对应的新更新值。
给我的工作:
我不得不手动首先从“servant”工作簿中选择商品,在“master”工作簿中找到“商品”,并使用填充在“servant”工作簿中的新值更新master工作簿。
为什么我必须手动查找每种商品,因为两张纸上的数据排序都不匹配。
我的代码:
Sub Macro4()
'
' Macro4 Macro
'
Windows("test2.xlsx").Activate
Range("A2:A15").Select
Selection.Copy
Windows("Test.xlsx").Activate
Range("B2:B15").Select
Windows("test2.xlsx").Activate
Range("B2:B15").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Test.xlsx").Activate
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
答案 0 :(得分:0)
我想我明白你的意思,但我不相信有人能把它给你。
您要求的内容似乎是一个非常简单的VBA宏。如果你不知道有足够的VBA写这个宏,我不相信你会理解它,如果给你的话。
你必须学习基础知识。在网上搜索“Excel VBA教程”。有很多可供选择,所以尝试一些并完成符合您学习风格的那个。我更喜欢书。我参观了一个很好的图书馆,审查了他们的Excel VBA Primers并借用了我喜欢在家里尝试的那些。最后,我买了一本我最喜欢的作为永久性参考书。
我不知道你会多快吸收Excel VBA编程的关键概念。有些人发现这些概念是显而易见的,而对于其他人而言,编程是一个永远不会幸福的外星世我建议你投入半天时间学习VBA。如果您发现VBA相当容易理解,那么请开始考虑您的宏。
您提供的代码由Excel宏记录器创建。宏录制器是识别与键盘功能相对应的VBA语句的好方法,但它不是学习VBA的好方法。它对你的宏没有多大帮助。
本教程应解释“工作簿”和“工作表”之间的区别。工作簿是保存到磁盘的文件。 “test2.xlsx”和“Test.xlsx”是工作簿。工作簿将包含一个或多个工作表。工作表包含行和列。在您的问题中,您将“工作簿”用于工作簿和工作表。
您需要设计宏。对于一个简单的宏,最常用的方法是记录如何手动接近任务:
Open master workbook.
Open servant workbook.
Within Servant workbook look at worksheet containing Commodity column.
For each entry in this column:
Search for matching entry in Community column of master workbook.
If matching entry found
Copy select values from servant row to master row
If matching entry not found
Record error or take corrective action.
Next
Save master workbook.
假设我已经理解了你的问题,上面的列表是宏的结构。列表中的大多数行对应于您应该从教程中学习的一个或几个简单的VBA语句。
在您的宏中,您已经打开了主服务器和服务工作簿。一个工作簿中的VBA宏可以打开其他工作簿。一旦你有一点经验,你可能会发现这是最方便的方法。但是,我建议您将多工作簿宏保留到第2阶段。我建议您创建一个包含主工作表和服务方工作表副本的开发工作簿。首先让您的宏在单个工作簿中工作,然后更新多个工作簿。我通常认为最好让工作簿中的宏不能由普通用户评估。该宏将打开主工作簿和服务工作簿。
我希望这会给你一个开始。大多数人一旦掌握了基础知识,就不会发现Excel VBA中的编程太难了。但是,在掌握了这些基础知识之前尝试在网络上找到代码片段最多是困难,缓慢而且往往是不可能的。