|
本帖最后由 咯咯喵 于 2018-7-30 11:21 编辑
示例如附件,需要把“单子”里的内容填充到后面的表格里。
我的问题是:
1. 我在“单子”表格里设置了一个单击D列2-3000格会出现当日日期的宏,但是为什么整个表格都是单击出现日期呢?哪里出错了呢?
2. 在CTSR模版右上角有一个下拉菜单,数据来源是“单子”那个表格C列数据去掉重复项后的副表(AF列)。下拉菜单的内容不会被打印,我想在下拉菜单里选择数据后,把“单子”那个表格里对应的数据全部抓取到“CTSR模版”。要求是,每一页里只有一个Q-Tag No.(单子里的K列)。附件里的示例填充到“CTSR模版”应该有4页。
我目前的思路是,在单子那张表里,先把C列数据(与下拉菜单选的数据一致的)复制到A列,然后合同数据相同的单元格,把A列选中的单元格resize到column23,这些就是所有数据的来源。接下来在K列找数据,所有的数据都填到“CTSR模版”D13里,不一样的数据填到下一页,这样排出来4页;然后把2c-8c,8c-30C的E列到I列的数据填写到CTSR模版的19行后面,把“no requirement"的E列到I列的数据填写到CTSR模版的14行后面。
然后我试着写了一段宏,因为不知道”K列数据不同时填充到D13的下一页“怎么表达,先试着用2c-8c,8c-30C查找信息并填充到CTSR模版的19行后面。于是写了下面的宏:
Sub 填充()
'找到选择的CONSIGNMENT,并复制到A列
Sheets("单子").Select
Dim consign, consignmarker As Range, consignadd As String
Set consign = Sheets("单子").Range("c:c").Find(Sheets("CTSR模版").Range("E14").Value)
If Not consign Is Nothing Then
consignadd = consign.Address
Do
consign.Copy consign.Offset(, -2)
Set consign = Sheets("单子").Range("c:c").FindNext(consign)
If consign.Address = consignadd Then Exit Do
Loop
End If
'选中所有数据
With Sheets("单子").Range("a:a").SpecialCells(xlCellTypeConstants, 23)
Application.DisplayAlerts = False
For i = 1 To .Count - 1
If .Cells(i) = .Cells(i + 1) And Cells(i).Value <> "" Then .Cells(i).Resize(2, 1).Merge
Next
Application.DisplayAlerts = True
End With
'以CTSR里的consignment为基
Set consignmarker = Sheets("单子").Range("a:a").Find(Sheets("CTSR模版").Range("E14").Value)
consignmarker.Resize(, 23).Select
With Selection
Dim temp1 As Range, tempadd1 As String
Set temp1 = .Find("2C-8C", LookIn:=xlValues)
If Not temp1 Is Nothing Then
tempadd1 = temp1.Address
Do
Set temp1 = .FindNext(temp1)
Sheets("CTSR模版").Range("A:F").Find("DUN No.", LookAt:=xlWhole).Offset(1, 0).Select
Selection.EntireRow.Insert Shift:=xlUp, CopyOrigin:=xlFormatFromLeftOrAbove
Sheets("CTSR模版").Range("A:F").Find("DUN No.").Offset(1, -3).Value = temp1.Offset(, -5).Value
Sheets("CTSR模版").Range("A:F").Find("DUN No.").Offset(1, -2).Value = temp1.Offset(, -4).Value
Sheets("CTSR模版").Range("A:F").Find("DUN No.").Offset(1, -1).Value = temp1.Offset(, -3).Value
Sheets("CTSR模版").Range("A:F").Find("DUN No.").Offset(1, 0).Value = temp1.Offset(, -2).Value
Sheets("CTSR模版").Range("A:F").Find("DUN No.").Offset(1, 1).Value = temp1.Offset(, -1).Value
Loop While temp1.Address <> tempadd1
End If
End With
End Sub
|
|