left()函数(不是Leftsub())不填充目标范围。我究竟做错了什么?谢谢!!!
Sub LeftSub()
Dim SourceRange As Range, DestinationRange As Range, i As Integer, LastRow As Integer
Worksheets("JE_data").Activate
Range("J2").Activate
LastRow = Cells(Rows.count, "A").End(xlUp).row
'Define our source range:
Set SourceRange = Worksheets("JE_data").Range(Cells(2, 10), Cells(LastRow, 10))
'Define our target range where we will print.
'Note that this is expected to be of same shape as source
Set DestinationRange = Worksheets("JE_data").Range(Cells(2, 11), Cells(LastRow, 11))
'Iterate through each source cell and print left 30 characters in target cell
For i = 2 To SourceRange.count
DestinationRange(i, 11).Value = Left(SourceRange(i, 10).Value, 30)
Next i
End Sub
答案 0 :(得分:2)
错误在这里
Left(SourceRange(i, 10).Value, 30)
您已将SourceRange定义为细胞范围
Set SourceRange = Worksheets("JE_data").Range(Cells(2, 10), Cells(LastRow, 10))
你再次指向我,10给你
.Range(Cells(2, 10), Cells(LastRow, 10))(i,10)
指向相对于选择的左上角单元格的单元格,这意味着(2 + i,10 + 10)单元格(因为(2,10)是所选范围的左上角单元格),它不会工作。相反,您可以直接使用此命令
Left(Worksheets("JE_data").Cells(i,10).Value, 30)
对于DestinationRange以及
Worksheets("JE_data").Cells(i, 11).Value = Left(Worksheets("JE_data").Cells(i,10).Value, 30)
希望这有帮助
答案 1 :(得分:1)
当我想在工作表中找到最后一个单元格时,我使用它:
llof = ActiveSheet.UsedRange.SpecialCells(xlLastCell).address
或
llof = ActiveSheet.UsedRange.SpecialCells(xlLastCell).row
这个命令的优点在于它重新设置了电子表格指针,以便删除添加和删除行中未使用的空间。
答案 2 :(得分:1)
只是快速查看它 - 尝试替换
DestinationRange(i, 11).Value = Left(SourceRange(i, 10).Value, 30)
带
DestinationRange(i, 1).Value = Left(SourceRange(i, 1).Value, 30)