我想要合并两张excel表。一些但不是所有的行在某种程度上可能是相同的,我想100%确定我没有丢失数据。
这就是我的意思:
Sheet 1 contains:
FName, Lname, Street, HasDog, HasCat, HasHorse
Joe, Carlson, 123 Street, 1, 1, 0
Bill, Jones, 345 Street, 1, 0, 0
Sheet 2 contains:
FName, Lname, Street, HasFish, HasBird
Joe, Carlson, 123 Street, 1, 0
Bill, Jones, 345 Street, 0, 1
最后,我想有这个:
Final Sheet Contains:
FName, Lname, Street, HasDog, HasCat, HasHorse, HasFish, HasBird
Joe, Carlson, 123 Street, 1, 1, 0, 1, 0
Bill, Jones, 345 Street, 1, 0, 0, 0, 1
注意:所有参赛作品都应在最终页面上,无论它们是在第1页,第2页还是两者中。
未设置的数据(例如HasFish)将为空或“0”
答案 0 :(得分:1)
此站点供程序员帮助其他程序员改进。它不是一个免费的编码站点,尽管有时会提供大量的代码,特别是如果回答者发现问题很有趣的话。我不认为在达到你的要求方面有任何挑战,所以我怀疑有人会给你一个完整的宏。
您必须学习Excel VBA。即使有人为你编写宏,也不一定就是你想要的。如果不了解VBA,您将无法进行最终更改。
在互联网上搜索“Excel VBA教程”。有很多可供选择。我认为有些穷人,但其他人非常好。尝试一些并选择一个适合您学习方式的。也许你更喜欢书。访问一个好的图书馆或书店,看看精选的Excel VBA入门。图书馆的优势在于您可以将几个引物带回家并在决定购买之前先试用它们。我喜欢在我的桌子上放一本参考书,这是我的方法。
我认为解决这个问题所需的关键知识领域是:
我认为您向我们展示的示例数据是假的。在实际数据中,是左侧的识别列还是分散的?在实际数据中,两个工作表是否在同一序列中?我会根据需要移动列和排序工作表,以使编程尽可能简单。完成后,您可以重新排列行和列。
下面的宏:
此宏旨在证明从工作表访问数据或操纵该数据并不困难。
将您的问题分成小步骤。编写一个执行步骤1的宏,并证明它已正确执行了该步骤。扩展宏以执行步骤1和2,然后执行步骤1,2和3.依此类推。我已经为你写了第1步宏。尝试扩展该宏。如果你的步骤代码不起作用,请回到这里;我相信有人会帮忙。
Option Explicit
Sub LoadSrc1()
Dim ColSrc1Crnt As Long
Dim ColSrc1Last As Long
Dim RowSrc1Last As Long
Dim ValuesSrc1 As Variant
Dim StgBot As String
Dim StgTop As String
With Worksheets("Src1")
RowSrc1Last = .Cells(Rows.Count, "A").End(xlUp).Row
ColSrc1Last = .Cells(1, Columns.Count).End(xlToLeft).Column
ValuesSrc1 = .Range(.Cells(1, 1), .Cells(RowSrc1Last, ColSrc1Last)).Value
StgBot = ""
StgTop = ""
For ColSrc1Crnt = 1 To ColSrc1Last
StgTop = StgTop & ValuesSrc1(1, ColSrc1Crnt) & " "
StgBot = StgBot & ValuesSrc1(RowSrc1Last, ColSrc1Crnt) & " "
Next
End With
Debug.Print StgTop
Debug.Print StgBot
End Sub