2011-11-16 23 views
0

我的目标是获得一个需要花费一周的数据的宏,将总结/总计粘贴到另一个工作表中,然后隐藏/删除刚刚复制的星期(或将其移动到一张不同的纸张,我不在乎)。 在年底,你应该基本上每周都从Sheet1复制到Sheet2Excel - 删除列但保留命名范围

目前我已经命名周一至周五的细胞 - 我希望在宏运行后移动。

我有什么那么远,

工作表( “粘贴的东西在这里”),范围( “A1”)。值=工作表( “YearlyDaily”),范围(” 1周含总列 “)。价值

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

回答

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]

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

1

我知道这是一个很好的做法,但是您为什么在周一至周五使用命名的范围是有原因的吗?如果使用单元格引用,它们将始终指向同一区域,即使在删除之后。除非我错过了一些东西。没有看到你的专栏很难看到。

0

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

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

我的每一个本能都是使用命名单元格,但在这种情况下,我认为这不是正确的做法。我只是使用单元格区域(A1,K2:K0等)问题是名称不是每个表单的本地名称,所以您必须将名称从旧表单移动到新表单,而这不是值得努力。此外,在这种情况下,创建每个表单所独有的类似名称(例如,Mon-FriWeek1,Mon-FriWeek2等)的替代方案在第一周没有给你带来任何实际意义!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 

你需要保持至少一个排在了那里,还是它(在我的情况非常多其他的事情)没有按”工作。但是,这适合我的需求就好。

我希望这会有所帮助。

+2

请不要使用'Select',除非它真的**是必需的(它几乎从来不是这样) – JMax