合并主键相同的两张excel表

本文介绍了如何合并主键相同的两张Excel表格。通过使用VLOOKUP函数,将表2的数据插入到表1中,实现左连接的效果。具体步骤包括添加新列、设置lookup_value为主键列、指定table_array、选择col_index_num以及设置精确匹配。此外,还提到了通过SQL语句(LEFT OUTER JOIN)在数据库中进行相同操作的方法。

表1:

表2:

合并后:

将表2的数据插入表1中,相当于左连接

1、在表1中添加要插入的列名(本例为score)

选中这一列下的一个单元格

选择公式->插入函数->VLOOKUP->确定

2、lookup_value选择表1的主键列(本例为ID)

3、table_array选择表2中主键列(与表1主键相同的列)以及要插入的列

 

4、col_index_num选择插入的列在表2中的位置,本例中score在表2中为第2列,col_index_num为2

5、range_lookup精确匹配为0,大致匹配为1,本例精确匹配,range_lookup为0

6、点确定,往下拖此单元格,或者Ctrl+shift+下箭头

 

或者将excel表中数据导入数据库,用SQL语句连接:

create table test3 select test1.id,name,score from test1 left outer join test2 on test1.id = test2.id;

 

 

明白了,如果你想在两张现有的格中直接进行操作而不创建新的工作或文件,你可以通过以下几种方法来实现。假设你要在`ONS.csv`和`Items756.csv`这两张之间查找匹配项,并将某些值从一张更新到另一张。以下是具体的步骤和建议。 ### 直接在现有格间操作的方法 #### 方法1:使用VLOOKUP函数(适用于较小规模的数据集) 如果你需要简单地在一个工作中添加来自另一个工作的额外信息,可以直接应用Excel内置的`VLOOKUP()`函数来进行查找并填充相应的单元格。 1. **打开两个CSV文件**并在Excel环境中加载它们作为单独的工作。 2. 假设你想把`Items756.csv`里的A列数据追加到`ONS.csv`中符合条件的行上,则可以在`ONS.csv`的新列(如L列)输入类似下面这样的公式: ```excel =IFERROR(VLOOKUP(C:C, [Items756.csv]Sheet1!$B:$D, 2, FALSE), "") ``` 这里我们选择的是当找不到对应记录时返回空字符串而不是错误提示符#N/A;同时注意引用外部链接的方式可能会因为版本差异有所不同,请依据自身情况调整。 3. 拉伸该公式覆盖所有目标区域内的单元格以完成整个范围的数据补充。 #### 方法2:使用Power Query进行动态同步 对于更复杂的情况或者更大体量的数据集来说,Power Query提供了一个更加高效而稳定的解决方案: 1. 分别加载两份源数据进入Power Query编辑器。 2. 创建一个合并查询任务,指定主键为共同存在的字段(比如这里的C列/D列),然后设置适当的联结类型(通常会选择左外连接Left Outer Join)。 3. 展开右侧辅助中的特定列内容回到左侧原结构当中去。 4. 应用更改并将结果重载回原有的`ONS`工作位置,这一步会替代掉原先的内容所以务必确认备份重要资料后再继续! #### 方法3:编写简单的宏脚本 (高级) 如果经常要做此类重复性的维护任务并且有编程基础的话,还可以考虑录制或是手写一小段VBA代码自动执行上述过程: ```vba Sub UpdateTableWithMatchedData() Dim sourceWS As Worksheet, targetWS As Worksheet Set sourceWS = Workbooks("ONS.csv").Worksheets(1) ' 替换成实际的 sheet 名称 Set targetWS = Workbooks("Items756.csv").Worksheets(1) With CreateObject("Scripting.Dictionary") .CompareMode = vbTextCompare ' 先遍历 Items756 建立字典映射关系 For Each cell In targetWS.Range("B2", targetWS.Cells(Rows.Count, "B").End(xlUp)) If Not IsEmpty(cell.Value) And Len(cell.Offset(0, -1)) > 0 Then .Item(cell.Value) = cell.Offset(0, -1).Value ' 存储 B 列对应的 A 列值 End If Next ' 再次循环 ONS 寻找匹配项并填写相应列 LastRow = sourceWS.Cells(sourceWS.Rows.Count, "C").End(xlUp).Row For r = 2 To LastRow KeyToFind = sourceWS.Cells(r, "C").Value If .Exists(KeyToFind) Then sourceWS.Cells(r, "O").Value = .Item(KeyToFind) Else Debug.Print "No match found for key: "; KeyToFind End If Next r End With End Sub ``` 这个例子展示了如何利用Dictionary集合快速定位配对关系并及时反馈给宿主机上的工作薄对象模型。当然具体细节还需要根据你的需求做适当修改和完善。 无论采用哪种方式都请提前做好必要的准备工作以及防范措施以免误删关键信息影响后续业务流程正常运转。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值