Excel-删除列但保留命名范围

Excel-删除列但保留命名范围,excel,vba,named-ranges,Excel,Vba,Named Ranges,我的目标是创建一个宏,它获取一周的数据,将摘要/总计粘贴到另一个工作表中,然后隐藏/删除我刚刚复制的一周,或者将其移动到其他工作表中,我不在乎。 到年底时,你基本上每周都应该从Sheet1复制到Sheet2 目前,我已经命名了从周一到周五捕获的单元格,我希望在宏运行后,这些单元格可以移动 到目前为止我所拥有的 WorksheetsPaste Stuff Here.RangeA1.Value=工作表YearlyDaily.RangeOne Week包括总计列.Value 工作表YearlyDail

我的目标是创建一个宏,它获取一周的数据,将摘要/总计粘贴到另一个工作表中,然后隐藏/删除我刚刚复制的一周,或者将其移动到其他工作表中,我不在乎。 到年底时,你基本上每周都应该从Sheet1复制到Sheet2

目前,我已经命名了从周一到周五捕获的单元格,我希望在宏运行后,这些单元格可以移动

到目前为止我所拥有的

WorksheetsPaste Stuff Here.RangeA1.Value=工作表YearlyDaily.RangeOne Week包括总计列.Value

工作表YearlyDaily.RangeMon-Fri.Select Selection.Delete Shift:=xlToLeft


我知道这是一个很好的做法,但是你为什么在周一到周五使用命名范围呢?如果使用单元引用,它们将始终指向同一区域,即使在删除之后也是如此。除非我遗漏了什么。如果看不到您的列,就很难看到。

我在这里假设您的意思是,我希望在宏运行后,这些列可以移动。是指您希望命名的范围在其中移动

我有一个电子表格,用于按周跟踪时间,第一张是活动的。当一周结束时,我将整个活动工作表复制到新工作表。我想从上周结转一些总数,所以我保留这些数据。我通过3列来实现这一点:当前周总计、前几周的旧总计、新总计。我将值从新总计粘贴到旧总计。然后我清除用于输入的单元格

我的每一个本能都是使用命名的细胞,但在这种情况下,我认为这样做是不对的。我只使用了单元格范围A1、K2:K0等。问题是,名称不是每个表的本地名称,因此必须将名称从旧表移动到新表,这不值得付出努力。此外,在这种情况下,创建每个工作表特有的类似名称(例如,周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、周一至周五、!A1:A10,等等-除了可能的自我满足感,你用了你应该用的名字。这是我的意见

也许这会有所帮助:在我的电子表格中,可以从一周到下一周添加/删除行。为了做到这一点,并且仍然避免命名范围,我模拟了转到每行都有公式的列,然后按Shift+End,然后按向下箭头。选择将在输入内容的最后一个单元格上停止。以下是第一行是标题/标签的代码:

    'Copy New Total Hours as PasteValues to Old Total
    Dim lastRow As Long
    Range("K1").Select
    Range(Selection, Selection.End(xlDown)).Select
    lastRow = Selection.Rows(Selection.Rows.Count).Row + 1
    Range("K2:K" & CStr(lastRow)).Select
    Selection.Copy
    Range("J2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
你需要至少保持一行在那里,否则它和许多其他事情在我的情况下不起作用。但这很适合我的需要

我希望这会有所帮助。

您可以用定义命名范围的相同方式更改命名范围:

Option Explicit 

Sub NamedRange() 

    Dim Rng1            As Range 

     'Change the range of cells (A1:B15) to be the range of cells you want to define
    Set Rng1 = Sheets("Sheet1").Range("A1:B15") 
    ActiveWorkbook.Names.Add Name:="MyRange", RefersTo:=Rng1 

End Sub 
[]

然而,正如其他答案所指出的,可能还有其他更好的方法来处理这个问题。请告诉我们更多信息或提出一个新问题,提供更多信息,以便我们能够帮助您。

请不要使用Select,除非确实有必要,否则这种情况几乎从未发生过