Excel 确定最后使用的单元格并粘贴到下面
我对VBA完全是个新手。我有下面的代码,它进行匹配练习,然后将相关值粘贴到B列。我的问题是每次使用代码时,该列都会更改如何将其添加到模块中,以便它查找第1行中使用的最后一个单元格并粘贴下面的值Excel 确定最后使用的单元格并粘贴到下面,excel,vba,Excel,Vba,我对VBA完全是个新手。我有下面的代码,它进行匹配练习,然后将相关值粘贴到B列。我的问题是每次使用代码时,该列都会更改如何将其添加到模块中,以便它查找第1行中使用的最后一个单元格并粘贴下面的值 Sub TransferData() Dim i As Long, j As Long, lastrow1 As Long, lastrow2 As Long Dim myname As String Application.ScreenUpdating = False lastrow1 = She
Sub TransferData()
Dim i As Long, j As Long, lastrow1 As Long, lastrow2 As Long
Dim myname As String
Application.ScreenUpdating = False
lastrow1 = Sheets("Input Sheet").Range("B" & Rows.Count).End(xlUp).Row
For i = 2 To lastrow1
myname = Sheets("Input Sheet").Cells(i, "B").Value
Sheets("Data").Activate
lastrow2 = Sheets("Data").Range("A" & Rows.Count).End(xlUp).Row
For j = 2 To lastrow2
If Sheets("Data").Cells(j, "A").Value = myname Then
Sheets("Input Sheet").Activate
Sheets("Input Sheet").Cells(i, "c").Copy
Sheets("Data").Activate
Sheets("Data").Cells(j, "B").Select
ActiveSheet.PasteSpecial
End If
Next j
Application.CutCopyMode = False
Next i
Application.ScreenUpdating = True
End Sub
如果您有任何帮助,我们将不胜感激。您可以用
匹配功能替换j=2至最后一行的第二个
此外,无需一直激活
纸张背面和第四张,只需使用完全限定的范围
s即可
代码
Option Explicit
Sub TransferData()
Dim i As Long, j As Long, lastrow1 As Long, lastrow2 As Long
Dim myname As String
Dim MatchRng As Range
Application.ScreenUpdating = False
j = 2
With Sheets("Input Sheet")
lastrow1 = .Range("B" & .Rows.Count).End(xlUp).Row
' the 2 lines bellow should be outisde the loop
lastrow2 = Sheets("Data").Range("A" & Sheets("Data").Rows.Count).End(xlUp).Row
Set MatchRng = Sheets("Data").Range("A2:A" & lastrow2)
For i = 2 To lastrow1
myname = .Range("B" & i).Value
If Not IsError(Application.Match(myname, MatchRng, 0)) Then '<-- if successful Match
Sheets("Data").Range("B" & j).Value = .Range("C" & i).Value
j = j + 1
End If
Application.CutCopyMode = False
Next i
End With
Application.ScreenUpdating = True
End Sub
选项显式
子传输数据()
尺寸i为长,j为长,lastrow1为长,lastrow2为长
将myname设置为字符串
调光匹配范围
Application.ScreenUpdating=False
j=2
带工作表(“输入工作表”)
lastrow1=.Range(“B”和.Rows.Count).End(xlUp).Row
'下面的两条线应位于环路外
lastrow2=工作表(“数据”).Range(“A”)和工作表(“数据”).Rows.Count).End(xlUp).Row
设置MatchRng=图纸(“数据”)。范围(“A2:A”和最后一行2)
对于i=2到最后一行1
myname=.Range(“B”&i).Value
如果不是IsError(Application.Match(myname,MatchRng,0)),则“可能的副本”。这个问题的答案不被接受,但答案是正确的。如果你搜索一下,可能还有更多关于这个的答案。@Mark你在上面的答案中试过我的代码了吗?有什么反馈吗?谢伊,看看这个。它按预期工作,但我的问题是,每次使用工作簿时,数据表上的第1行都会添加一个新的日期,这就是需要粘贴新数据的位置,因为上面的代码只会粘贴到ColB中。我需要某种方法让代码识别要粘贴的正确位置。@标记这不在上面的帖子中我想这就是原因我在问题的最后一部分问,“我的问题是,每次使用代码时,col都会更改如何将其添加到模块中,以便它查找第1行中使用的最后一个单元格并粘贴下面的值。”