ExcelVba如何把一个表里的数据放入另一个表里相应的单元格

如何用vba把sheet2里的c,d,e列数据放到sheet1里对应的单元格内,且只复制数值不复制公式。

参考vlookup公式的用法,图例是要对D2输入对应的数字,解释=VLOOKUP(A:A,H:K,2,0)的含义:

vlookup()接收4个参数,图中分别是A:A,H:K,2,0。A:A代表以第一列为要查找的值,H:K代表搜索的范围是H列到K列,2代表取出H:K列中的第二列(左起),因为D2这个单元格是要找采购总量,那么H:K列的第二列就是我们要的,所以是2,0是一个参数表示匹配的方法,完全匹配就用0。

那么E2,F2的公式就分别是=VLOOKUP(A:A,H:K,3,0)和=VLOOKUP(A:A,H:K,4,0),我们只要修改第三个参数就好了(可以看到找不到的品类是#N/A因为没有对应的结果)。

对于你的情况,不同页或者不同工作表,引用不如在同一页这么简单,前2个参数你可以手动选择,会自动填上,填好一个按逗号(英文半角)。

如果上面2个图,不在一个工作簿(也就是不是同一个excel文件),那么在公式计算完后,选择全部公式区域,复制,右键选择“值”粘帖以去除公式,但如此一来这些值就是静态的数值不会再改变。

追问

我需要的是vba的做法 因为每天都需要做这样的表 数据量非常大 这样我也会做

追答

Public Sub xlookup()
原始数据1 = ThisWorkbook.Sheets("Sheet1").UsedRange.Value
原始数据2 = ThisWorkbook.Sheets("Sheet2").UsedRange.Value
执行列 = [{"采购总量","单价","总价"}]
For 外循环 = 1 To UBound(执行列)
For 中循环 = 1 To UBound(原始数据2, 2)
If 原始数据2(1, 中循环) = 执行列(外循环) Then
Set 字典 = CreateObject("scripting.dictionary")
For 内循环 = 2 To UBound(原始数据2)
If Len(原始数据2(内循环, 1)) > 0 Then
字典(原始数据2(内循环, 1)) = 原始数据2(内循环, 中循环)
End If
Next 内循环
For 查找目标列 = 1 To UBound(原始数据1, 2)
If 原始数据1(1, 查找目标列) = 执行列(外循环) Then Exit For
Next 查找目标列
For 内循环 = 2 To UBound(原始数据1)
ThisWorkbook.Sheets("Sheet1").Cells(内循环, 查找目标列).Value = 字典(ThisWorkbook.Sheets("Sheet1").Cells(内循环, 1).Value)
Next 内循环
Exit For
End If
Next 中循环
Next 外循环
End Sub

这里默认是同一个工作簿的Sheet1和Sheet2(用页的名字来定位),按需修改,如果你需要查找的列增加了,只要修改
执行列 = [{"采购总量","单价","总价"}]
这一行,如果要增加“进价”,就是
执行列 = [{"采购总量","单价","总价","进价"}]

温馨提示:答案为网友推荐,仅供参考
相似回答