Excel中有两个工作簿,sheet1中有数据A1到A10列,共有1到100行,A1列为日期,其余为普通数据,sheet2中有很多个重复表格,表格大小为A1到A10列,有10行,1至3行为标题行,第4至10行为空白行,第11行至20行为新的表格以此类推每10行一个表格,要求按照sheet1中的A1列的不同日期将全部数据填充在sheet2的表格空白行里,如果填不下就填在下一个表格里,使得不同日期的数据不允许填充在一个表格里。你有什么思路能讲给我吗
可以先在sheet2中找到第一个空白的表格,然后按照日期顺序遍历sheet1中的数据,将数据填充到空白行中,如果一张表格填满了,就找下一个空白表格继续填充,直到所有数据都填充完毕。
具体实现可以使用VBA编写宏来实现。首先需要定义两个工作表对象,然后使用循环遍历sheet1中的日期列,找到空白的表格,从第4行开始填充数据,如果填充到第10行了就跳到下一个空白表格。最后保存工作簿即可。
以下是一个示例代码:
Sub FillData() Dim ws1 As Worksheet Dim ws2 As Worksheet Dim lastRow As Long Dim i As Long Dim j As Long Dim k As Long
Set ws1 = ThisWorkbook.Worksheets("Sheet1")
Set ws2 = ThisWorkbook.Worksheets("Sheet2")
k = 1 '用于记录当前是填充到了哪一张表格
For i = 2 To ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row '遍历sheet1中的日期列
lastRow = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row '找到最后一行
For j = 1 To 10 '每张表格有10行
If ws2.Cells(lastRow + j, "A") = "" Then '找到第一个空白行
ws2.Cells(lastRow + j, "A") = ws1.Cells(i, "A") '填充日期
ws2.Cells(lastRow + j, "B") = ws1.Cells(i, j + 1) '填充数据
If j = 7 Then '如果填充到了第10行
k = k + 1 '换到下一个表格
End If
Exit For '填充完毕,退出循环
End If
Next j
Next i
ThisWorkbook.Save '保存工作簿
End Sub
原文地址: http://www.cveoy.top/t/topic/rVa 著作权归作者所有。请勿转载和采集!