2013-06-02 69 views
2

我有我的工作人员谁登录,使用以下命令从一个工作表复制多列到另一个

Categories Washing Cleaning Office Duties Baking Cooking 

Date   Hours Hours  Hours Hours  Hours Hours 
Jan/1/13    3.00    6.00 
Jan/2/13       
Jan/6/13      3.00  
Jan/10/13      

基本上我想是有其复制日期与数目的代码片的时间的时间片根据相关类别将其小时数调整为另一张名为报告的表格我需要三列作为输出日期时间类别。

回答

1

试试下面的代码:

Sub sample() 


    Dim lastRow As Long 
    Dim col As Long 
    Dim a As String, b As String, c As String 

    With Sheets("sheet1") 
     lastRow = .Range("A" & Rows.Count).End(xlUp).Row 

     If lastRow < 4 Then lastRow = 4 

     For i = 4 To lastRow 
      For col = 2 To 7 
       If .Cells(i, col) <> "" Then 

        a = .Cells(i, 1) 
        b = .Cells(i, col) 
        c = .Cells(1, col) 

        With Sheets("Report") 
         .Range("A" & .Range("A" & .Rows.Count).End(xlUp).Row + 1).Value = a 
         .Range("B" & .Range("B" & .Rows.Count).End(xlUp).Row + 1).Value = b 
         .Range("C" & .Range("C" & .Rows.Count).End(xlUp).Row + 1).Value = c 
        End With 
       End If 
      Next 
     Next 

    End With 
End Sub 

enter image description here

+0

亲爱的桑托斯,非常感谢您对这样一个伟大的解决方案。真的,我找不到话来谢谢你。我还有一件事,因为我有一个以上的工人,比如让Sheet1代表John,Sheet2代表Michael并且Sheet3代表Tom,我希望所有工人都有详细信息,那么我应该如何重复其他工人的代码,以便我可以在一张表中获取数据。 – OMK28

+0

@ OMK28'昏暗SHT作为工作表 对于每个SHT在ThisWorkbook.Sheets 随着SHT '代码 ' ' 结束随着 Next'使用上述代码时可以循环片材。非常感谢:) – Santosh

+0

非常感谢您的帮助,实际上我是一名初学者,对VBA知之甚少,所以如果您能够知道在上面的代码中何处以及如何放置这些行,那将是非常棒的。谢谢 – OMK28

0

你有没有尝试过这样的:

Sheet2.Range("A1").Value = Sheet1.Range("A1").Value 

Sheet2.Range("A1").Text = Sheet1.Range("A1").Text 

也许你可以做一个循环,这样做:

Sheet2.Range("A" & i).Value = Sheet1.Range("A" & i).Value 

是有很多的选择可以做到这一点...甚至Range.Copy(见:http://msdn.microsoft.com/en-us/library/office/ff837760.aspx

祝你好运。

相关问题