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

时间:2011-11-16 00:54:18

标签: excel vba named-ranges

我的目标是拥有一个需要一周数据的宏,将摘要/总数粘贴到另一个工作表中,然后隐藏/删除我刚刚复制过的那一周(或将其移动到另一个工作表,我不关心)。 在年底,您基本上应该每周从Sheet1复制到Sheet2

目前,我已将星期一到星期五命名为单元格 - 我希望在宏运行后进行移动。

到目前为止我所拥有的......

  
    

工作表(“粘贴在这里”)。范围(“A1”)。值=工作表(“YearlyDaily”)。范围(“一周包括总列”)。值

         

工作表(“YearlyDaily”)。范围(“周一至周五”)。选择Selection.Delete Shift:= xlToLeft

  

3 个答案:

答案 0 :(得分:1)

我知道这是一个很好的做法,但是你有没有理由为Mon-Fri使用命名范围?如果使用单元格引用,即使在删除后,它们也始终指向同一区域。除非我错过了什么。没有看到你的专栏就很难看到。

答案 1 :(得分:1)

您可以更改命名范围,方法与定义它们相同:

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 

[Source]

然而,正如其他答案指出的那样,可能还有<强>其他(更好)的方法来处理这个。请告诉我们更多信息或提出更多信息,以便我们为您提供帮助。

答案 2 :(得分:0)

我在这里假设你的意思是“我希望在宏运行之后移动它。”是你希望命名范围移动。

我有一个电子表格,用于按周跟踪时间,“第一张”表是活动表。当一周结束时,我将整个活动工作表复制到新工作表。我想从前一周结转总数,所以我保留了这些数据。我这样做有3列:当前周总数,旧(前几周)总数,新总数。我将值从新总计粘贴到旧总计。然后我清除用于输入的细胞。

我的每一个本能都是使用命名单元格,但在这种情况下,我得出结论,这不是正确的事情。我刚刚使用了单元格范围(A1,K2:K0等)问题是每个工作表的名称不是本地的,所以你必须将名称从旧工作表移动到新工作表,这不是值得努力。此外,在这种情况下,创建每个工作表独有的相似名称(例如,Mon-FriWeek1,Mon-FriWeek2等)的替代方案在第1周时没有任何实用性!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

你确实需要在那里至少保留一行,否则它(在我的情况下还有很多其他的东西)不起作用。但这很适合我的需要。

我希望这会有所帮助。