我目前正在使用VBA在Excel中开发监视工具,并且在复制数据时遇到了一些困难。
当前代码:
Sub CopyID()
'Copies entire Row of IDs from "Sheet 2" to main Sheet "Main Sheet"
Dim lastCell As Long
LastCell = Cells(Rows.Count,'Sheet 2':M).End(xlUp).Row
'Missing here: Copy to Column 1 at Row 3!
Sheets("Sheet 2").Columns(M).Copy Destination:=Sheets("Main Sheet").Columns(1)
End Sub
应该做什么: 从第2行开始复制Sheet2_Column M的数据 至 主表列A在第3行发声
此外,我也不知道是否可以为目的地使用特定的公式(格式为:=LEFT(Data,10)
)
对于对此的任何响应,我感到很高兴,因为我想详细了解这些“复制方法”的工作方式,并对有关这些方法的任何提示和技巧感到高兴。
编辑// 复制部分应该像这样
Sheet 2包含一个具有标头单元格的Colum和具有相似格式值的X单元格。
工作表2内容示例
这是工作表2中的一行。我只需要单元格内容的前10位。是否可以将其作为类似于
的公式=Left(Sheet 2:M2,10)
所以它是这样的:
“工作表2”单元格内容:“ 1234567891_1_123X”复制为“ 1234567891”到“主工作表”
答案 0 :(得分:0)
定义源和目标工作表。范围/列名称也可以像"M"
这样的字符串提交。
Sub CopyID()
'Copies entire Row of IDs from "Sheet 2" to main Sheet "Main Sheet"
Dim WsSource As Worksheet
Set WsSource = ThisWorkbook.Worksheets("Sheet 2")
Dim WsDestination As Worksheet
Set WsDestination = ThisWorkbook.Worksheets("Main Sheet")
Dim lastRow As Long
lastRow = WsSource.Cells(WsSource.Rows.Count, "M").End(xlUp).Row
'Missing here: Copy to Column 1 at Row 3!
WsSource.Range("M2:M" & lastRow).Copy Destination:=WsDestination.Range("A3")
End Sub
编辑:
要仅复制每个单元格的前10个字符,则需要对每个值进行处理:
Option Explicit
Public Sub CopyID()
'Copies entire Row of IDs from "Sheet 2" to main Sheet "Main Sheet"
Dim WsSource As Worksheet
Set WsSource = ThisWorkbook.Worksheets("Sheet 2")
Dim WsDestination As Worksheet
Set WsDestination = ThisWorkbook.Worksheets("Main Sheet")
Dim lastRow As Long
lastRow = WsSource.Cells(WsSource.Rows.Count, "M").End(xlUp).Row 'Find last row in column M
Dim ArrSource As Variant
ArrSource = WsSource.Range("M2:M" & lastRow).Value 'read column m values into array
Dim i As Long
For i = 1 To UBound(ArrSource) 'process each value in the array
ArrSource(i, 1) = Left$(ArrSource(i, 1), 10) 'keep only left 10 characters
Next i
WsDestination.Range("A3").Resize(UBound(ArrSource), 1).Value = ArrSource 'write array into destination
End Sub
注意.Resize(UBound(ArrSource), 1)
定义的目标与我们要插入的数组大小相同。