此宏的目的是将一个单元格值(从长列表)复制到位于不同工作表中的另一个单元格。
这是我的代码:
Sub journalben()
Set rawben = Sheets("BEN")
Set finaljnl = Sheets("JNL_BEN")
Set Rng = Range("G2:G1048576")
For Each cell In Rng
'test if cell is empty
If cell.Value <> "" Then
finaljnl.Range("L4").Value = rawben.Range("G5").Value
finaljnl.Range("K4").Value = rawben.Range("L5").Value
End If
Next
End Sub
借助图像,我将解释我想要实现的目标:
由于某些原因,复制整个列不是此宏的一个选项,因为要求来自sheet1的单元格必须从左到右(或水平)粘贴或放置在Sheet2中。
我希望你能抽出一些时间来帮助我。我的代码不起作用,我猜FOR FOR EACH的实现是不正确的。我不确定FOR EACH是否是最好的代码。
我感谢任何人对此的帮助。非常感谢你!愿力量与你同在。
答案 0 :(得分:2)
试试这个:
Sub journalben()
Dim i As Long, lastRow As Long
Set rawben = Sheets("BEN")
Set finaljnl = Sheets("JNL_BEN")
lastRow = rawben.Cells(Rows.Count, "G").End(xlUp).Row
For i = 5 To lastRow
'test if cell is empty
If rawben.Range("G" & i).Value <> "" Then
finaljnl.Range("K" & i - 1).Value = rawben.Range("G" & i).Value
finaljnl.Range("L" & i - 1).Value = rawben.Range("L" & i).Value
End If
Next i
End Sub
我从FOR
开始5
,因为图片中的数据从单元格G5
开始(不考虑标题)。
答案 1 :(得分:1)
为此使用数字变量会更容易:
Sub journalben()
Set rawben = Sheets("BEN")
Set finaljnl = Sheets("JNL_BEN")
Set Rng = rawben.Range("G4:G1048576")
For i = Rng.Cells(1,1).Row to Rng.Cells(1,1).End(xlDown).Row
'test if cell is empty
If rawben.Range("G" & i).Value <> vbNullString Then
finaljnl.Range("L" & i - 1).Value = rawben.Range("G" & i).Value
finaljnl.Range("K" & i - 1).Value = rawben.Range("L" & i).Value
End If
Next i
End Sub
答案 2 :(得分:0)
你应该使用一个简单的for循环。它更容易使用。
此外,要使其动态化并转到范围中的最后一个单元格,请使用SpecialCells
方法。
您的范围需要从第5行正确设置。
以下是代码:
Sub journalben()
Set rawben = Sheets("BEN")
Set finaljnl = Sheets("JNL_BEN")
Set Rng = Range("G5:G1048576")
For i = Rng.Cells(1,1).Row to Rng.SpecialCells(xlCellTypeLastCell).Row
If rawben.Range("G" & i).Value <> vbNullString Then
finaljnl.Range("L" & CStr(i - 1)).Value = rawben.Range("G" & CStr(i)).Value
finaljnl.Range("K" & CStr(i - 1)).Value = rawben.Range("L" & CStr(i)).Value
End If
Next i
End Sub