Excel循环行并将单元格值复制到另一个工作表
我在为我的macro
达到预期的结果时遇到一些困难。
意图 :
我有一个数据sheets(input).column A
(具有值的行数会有所不同,因此我创build了一个循环,将运行macros,直到活动单元为空)的数据列表。
我的macros从Range(A2)
,一直延伸到A列,只有当它到达一个空行时才停止
macros的期望结果将开始复制工作sheet(input).Range(A2)
的单元格值粘贴到工作sheet(mywork).Range(B2:B6)
。
例如,如果“Peter”是单元格sheet(input),range(A2)
的值sheet(input),range(A2)
那么当marco运行并将值粘贴到sheet(mywork) range(B2:B6)
。 即范围B2:B6
将反映“彼得”
然后macros循环回工作表(input)并复制下一个单元格的值并粘贴到range(B7:B10)
例如 :“Dave”是工作sheet(input) Range(A3)
,则“Dave”将被粘贴到工作sheet(mywork).Range(B7:B10)
的下4行中。 B7:B10
会反映“Dave”
再次重复相同的过程返回到表(input)这个时间range(A4)
,将值复制到工作表(mywork)并粘贴到B11:B15
。
基本上这个过程重复…
sheet(input) column A
为空时macros结束。
Sub playmacro() Dim xxx As Long, yyy As Long ThisWorkbook.Sheets("Input").Range("A2").Activate Do While ActiveCell.Value <> "" DoEvents ActiveCell.Copy For xxx = 2 To 350 Step 4 yyy = xxx + 3 Worksheets("mywork").Activate With ActiveSheet .Range(Cells(xxx, 2), Cells(yyy, 2)).PasteSpecial xlPasteValues End With Next xxx ThisWorkbook.Sheets("Input").Select ActiveCell.Offset(1, 0).Activate Loop Application.ScreenUpdating = True End Sub
Private Sub CommandButton1_Click() Dim Z As Long Dim Cellidx As Range Dim NextRow As Long Dim Rng As Range Dim SrcWks As Worksheet Dim DataWks As Worksheet Z = 1 Set SrcWks = Worksheets("Sheet1") Set DataWks = Worksheets("Sheet2") Set Rng = EntryWks.Range("B6:ad6") NextRow = DataWks.UsedRange.Rows.Count NextRow = IIf(NextRow = 1, 1, NextRow + 1) For Each RA In Rng.Areas For Each Cellidx In RA Z = Z + 1 DataWks.Cells(NextRow, Z) = Cellidx Next Cellidx Next RA End Sub
另外
Worksheets("Sheet2").Range("P2").Value = Worksheets("Sheet1").Range("L10")
这是一个CopynPaste – 方法
Sub CopyDataToPlan() Dim LDate As String Dim LColumn As Integer Dim LFound As Boolean On Error GoTo Err_Execute 'Retrieve date value to search for LDate = Sheets("Rolling Plan").Range("B4").Value Sheets("Plan").Select 'Start at column B LColumn = 2 LFound = False While LFound = False 'Encountered blank cell in row 2, terminate search If Len(Cells(2, LColumn)) = 0 Then MsgBox "No matching date was found." Exit Sub 'Found match in row 2 ElseIf Cells(2, LColumn) = LDate Then 'Select values to copy from "Rolling Plan" sheet Sheets("Rolling Plan").Select Range("B5:H6").Select Selection.Copy 'Paste onto "Plan" sheet Sheets("Plan").Select Cells(3, LColumn).Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False LFound = True MsgBox "The data has been successfully copied." 'Continue searching Else LColumn = LColumn + 1 End If Wend Exit Sub Err_Execute: MsgBox "An error occurred." End Sub
在Excel中可能有一些方法。