美好的一天,
如果我的串联代码请寻求帮助。我试图连接列E&薄片1中的G,进入薄片2中的B列。
sheet2上已有数据,所以我试图将数据复制到第2页的最后一行。
它仅连接工作表1中的最后一行,而不是放在正确的位置。
提前谢谢
Dim LastRowOutput As Long
LastRowOutput = ThisWorkbook.Worksheets(2).Cells.SpecialCells(xlCellTypeLastCell).Row
Dim i As Integer
i = 2
While (ThisWorkbook.Worksheets(1).Range("A" & i).Value <> "")
ThisWorkbook.Worksheets(2).Range("B" & (LastRowOutput + 1)).Value = _
ThisWorkbook.Worksheets(1).Range("G" & i).Value & "," & _
ThisWorkbook.Worksheets(1).Range("E" & i).Value
i = i + 1
Wend
这是我得到的结果:
Sheet 1中
ID First Name Last Name
1 John Doe
2 Joe Smith
3 Bob Sled
Sheet 2中
Employee # Employee name
0 St Nick
1 Sled,Bob
2
3
答案 0 :(得分:0)
我会先将值放入数组中,然后将它们连接起来,然后将值分配回工作表。这比逐行进行要快得多。
Sub test()
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = ThisWorkbook.Worksheets(1)
Set ws2 = ThisWorkbook.Worksheets(2)
'Place your cells into an array
Dim valE() As Variant, valG() As Variant
valE = ws1.UsedRange.Columns("E").Value
valG = ws1.UsedRange.Columns("G").Value
'Merge into a new 2-D array
Dim retArr() As Variant, i As Long
ReDim retArr(2 To UBound(valE))
For i = 2 To UBound(valE)
retArr(i) = valE(i, 1) & valG(i, 1)
Next
'determine the start and end rows to add data to
Dim lngStart As Long, lngEnd As Long
lngStart = NextRow(ws2, "B")
lngEnd = UBound(retArr) + lngStart - LBound(retArr)
ws2.Range("B" & lngStart & ":B" & lngEnd) = Application.Transpose(retArr)
End Sub
Function NextRow(ws As Worksheet, Optional col As Variant = 1) As Long
With ws
NextRow = .Cells(.Rows.Count, col).End(xlUp).Row + 1
End With
End Function