Excel VBA - 在工作表之间传输数据
Posted
技术标签:
【中文标题】Excel VBA - 在工作表之间传输数据【英文标题】:Excel VBA - Transferring data between sheets 【发布时间】:2013-12-03 15:50:36 【问题描述】:我正在尝试比较一个工作簿中的两个工作表。我需要将第一张表的 A 列中的值与表 2 的 A 列进行匹配,如果找到匹配值,请将表 2 的 E 列中的值复制并粘贴到表 1 的 E 列中。例如:
Sheet 1: A B C D E Sheet 2: A B C D E
k 9 b 3 k d 3 d 6
j 2 d 4 m h 4 g 3
s 3 u 9 j e 8 a 9
i 4 s 6 s i 9 t 7
o 7 n 8 l b 10 s 9
i c 4 p 8
o l 0 n 9
会变成
Sheet 1: A B C D E
k 9 b 3 6
j 2 d 4 9
s 3 u 9 7
i 4 s 6 8
o 7 n 8 9
我目前正在使用的代码是: 子合并类别值() 将行变暗
With ActiveSheet
lngRow = .Cells(65536, 1).End(xlUp).Row
.Cells(1).CurrentRegion.Sort key1:=.Cells(1), Header:=xlYes
Do
If .Cells(lngRow, 1) = Sheets("Sheet2").Cells(lngRow, 1) Then
.Cells(lngRow, 5) = Sheets("Sheet2").Cells(lngRow, 5)
End If
lngRow = lngRow - 1
Loop Until lngRow < 2
End With
End Sub
无论大小写,我都需要提取副本。这可能吗?
感谢任何帮助。
提前谢谢你。
【问题讨论】:
VLOOKUP 运行良好。我试图找到一种方法来用 VBA 完成同样的事情,但我想这不值得。谢谢! 【参考方案1】:我已经编写了一个 VBA 代码:
Sub sof20355637MergeCategoryValues()
Dim i As Long, i2 As Long, lngRow As Long, lngRow2 As Long
Dim strKey As String
Dim wks1, wks2 As Worksheet
Dim objRange2
Set wks1 = Sheets("Sheet1")
Set wks2 = Sheets("Sheet2")
' get mximum rows of each sheet:
lngRow = wks1.Cells(wks1.Rows.Count, 1).End(xlUp).Row
lngRow2 = wks2.Cells(wks1.Rows.Count, 1).End(xlUp).Row
' we loop on the first column of sheet1:
For i = 1 To lngRow
strKey = wks1.Range("A" & i)
Set objRange2 = wks2.Range("A:A").Find(strKey, Range("A1"), SearchDirection:=xlPrevious)
If (Not objRange2 Is Nothing) Then
i2 = objRange2.Row
wks1.Range("E" & i) = wks2.Range("E" & i2)
End If
Next
Set objRange2 = Nothing
Set wks1 = Nothing
Set wks2 = Nothing
End Sub
一些图片:
表 1:表 2:
合并的 Sheet1:
【讨论】:
【参考方案2】:假设工作表 1 上的 k
在 A1 中,然后在工作表 1 的 E1 中:
=VLOOKUP(A1,'Sheet 2'!A:E,5,0)
并复制下来以适应可能会服务,但不是 VBA。
【讨论】:
以上是关于Excel VBA - 在工作表之间传输数据的主要内容,如果未能解决你的问题,请参考以下文章
如何正确地从 Excel 工作表的 VBA 连接到另一个 Excel 工作表?