如何删除表格的一列,并将其余的左移,而不影响Excel vba中的以前的表格

我有一个工作簿,其中包含固定列E到S的数据表和不固定的行。 我每个星期都把这张表复制到另一个名为“摘要”的工作簿中。 我需要做一些计算表,但首先我需要删除列P上的数据,并将其余的左移。 但是,我只想删除当前周的P列,忽略前几周。 这是因为我之前几周已经删除了P列。 我目前正在手动做。 因为我每周有20个数据表,所以这是很耗时的,因为我需要自动化大部分的过程。 。 我已经创build了删除P列后所需的计算过程的代码。我如何find粘贴在工作表上的数据的最后一个表,然后删除列P,而不影响以前的数据?

这是我使用的计算代码。 可能我需要创build一个删除P列的代码,并在运行此计算代码之前将其他列转移到左侧。

Dim ws As WorksheetDim y As Workbook Dim rng As Range Dim i As Integer, r As Long, j As Long Set y = ThisWorkbook For Each ws In y.Worksheets For Each rng In ws.UsedRange.SpecialCells(xlCellTypeConstants, 3).Areas If rng.Rows.Count > 1 And rng.Columns.Count = 14 Then j = 2 r = rng.Cells(rng.Rows.Count, 1).Row + 1 ws.Cells(r, rng.Columns(1).Column).Value = "total expenses" For i = rng.Columns(2).Column To rng.Columns(2).Column + 12 ws.Cells(r, i).Formula = "=SUM(" & rng.Columns(j).Address & ")" j = j + 1 Next i End If Next rng Next 

这是我粘贴到工作表后,我需要删除列P(99-0)当前星期表的示例表。 表格的例子

根据你的数据布局,你首先需要捕获S列,然后相应地移动到P列。 这应该做到这一点:

 With ws .Range(.Range("S1").End(xlDown), .Range("S999999").End(xlUp)).Offset(,-3).Delete Shift:=xlToLeft End With 

也许只是先删除列P,然后再粘贴? 没有样本数据,很难说出你的要求。

 Columns("P:P").Select Selection.Delete Shift:=xlToLeft 

您可以通过范围内的索引删除列。

 Range.CurrentRegion.Columns(12).Delete Shift:=xlToLeft 

上面的范围是你粘贴你的桌子的地方。 12是列索引。 范围E:S列P是12。