我张贴了一个类似的问题,在过去,但另一个问题已经提出了自己。
Original Post在这里发现的。
现有代码的工作原理:它为每个唯一值创建一个新的工作簿,并在A列中为其副本创建一个包含所有相关行数据的新工作簿。
这段代码非常适合我需要它做的事情,除非我试图在表范围内使用它。经过一些研究后,我意识到我的所有引用都是不正确的,不能在一个表上这样做。我正在研究如何从长远的角度解决我的问题。
作为一种短期的选择,我一直在研究如何将每个新的工作簿范围转换为一个表,但无法找到如何将其插入到我现有的代码中。下面的示例是我认为应该用到的地方,但是,当我看到我在研究中遇到的其他示例时,我无法理解如何添加命令。
For Each ky In dic.keys
ThisWorkbook.Sheets("DEMURRAGE INSTRUCTIONS").Copy
Set wbN = ActiveWorkbook
xSht.Range(xTitle).AutoFilter xCName, ky
Set xNSht = Worksheets.Add(, wbN.Sheets(wbN.Sheets.Count))
xSht.AutoFilter.Range.EntireRow.Copy xNSht.Range("A1")
xNSht.Name = xNSht.Range("T2").Value
ActiveWindow.DisplayGridlines = False
xNSht.Columns.AutoFit发布于 2022-02-04 22:47:08
如果您有一个以A1开头的标题的连续范围,那么应该可以将其转换为ListObject/Table:
With xNSht.ListObjects.Add(xlSrcRange, xNSht.Range("A1").CurrentRegion, , xlYes)
.Name = "Table1"
End with发布于 2022-02-05 04:22:08
将范围转换为表(ListObject)
For Each ky In dic.keys
ThisWorkbook.Sheets("DEMURRAGE INSTRUCTIONS").Copy
Set wbN = ActiveWorkbook
xSht.Range(xTitle).AutoFilter xCName, ky
' You have just copied a single worksheet to wbN hence:
Set xNSht = Worksheets.Add(After:=wbN.Sheets(1))
' Why entire row? No need, unless there is data to the right!?
With xSht.AutoFilter.Range
.Copy xNSht.Range("A1")
With xNSht.ListObjects.Add(xlSrcRange, _
xNSht.Range("A1").Resize(.Rows.Count, .Columns.Count), , xlYes)
.Name = xNSht.Range("T2").Value ' or some other table name?
End With
End With
xNSht.Name = xNSht.Range("T2").Value
ActiveWindow.DisplayGridlines = False
xNSht.Columns.AutoFithttps://stackoverflow.com/questions/70989839
复制相似问题