2013-06-04 69 views
0

面對實現期望結果的一些難題。 當前結果=例如在片材的最後一個值(輸入)是「彼得」 然後在片材(Sheet 1中)的整個列將只是反映彼得Excel VBA:循環遍歷單元格並將值複製到另一個工作表

所需的結果,片材=最後2行的值(輸入) 「大衛」然後「彼得」我希望在表(Sheet1)中實現的範圍(B5:B8)反射「大衛」和範圍(B9:B12)「彼得」

希望你們在這裏可以給一些就此事提供意見。在此先感謝:)))

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("Sheet1").Activate '"select Sheet1" 
      With ActiveSheet 
       'copy the first active cell value from worksheet "input" and paste onto "sheet1" range("B2:B5") basically 1 cell value will occupy 4 rows in "sheet1" 
       'then jump to the next empty row, return back to worksheet "input" copy the next row value and paste the data into range("B6:B9") 
       'the loop will keep repeating until sheet "input" activecell value is blank 
       .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 

回答

0

不知道我完全理解你的要求,但也許這就是你需要:

Sub PlayMacro() 
    Dim lngLastRow as Long 
    With Sheets("Input") 
     lngLastRow = .Range(.Rows.Count, 1).End(xlUp).Row 
     Sheets("Sheet1").Range("B5:B8").Value = .Range(lngLastRow-1,1).Value 
     Sheets("Sheet1").Range("B9:B12").Value = .Range(lngLastRow,1).Value 
    End With 
End Sub 
相關問題