Excel 在模板中添加列而不中断公式

Excel 在模板中添加列而不中断公式,excel,vba,excel-formula,Excel,Vba,Excel Formula,我使用的是来自特朗普Excel的 我想在name列之前添加四列 我仔细阅读了wesbite的评论,并设法从中获得了一个带有附加专栏的示例,但一切似乎都很困难,而且这个示例与原始示例不一样。缺少结束列 我尝试在开头插入列,宏中断。我通过更改以下行修复了宏: LeaveTracker.Range(Columns(Range("A3").Value * 31 - 29), Columns(Range("A3").Value * 31 + 1)).Hidden = False 在名称前添加EmpID、

我使用的是来自特朗普Excel的

我想在name列之前添加四列

我仔细阅读了wesbite的评论,并设法从中获得了一个带有附加专栏的示例,但一切似乎都很困难,而且这个示例与原始示例不一样。缺少结束列

我尝试在开头插入列,宏中断。我通过更改以下行修复了宏:

LeaveTracker.Range(Columns(Range("A3").Value * 31 - 29), Columns(Range("A3").Value * 31 + 1)).Hidden = False
在名称前添加EmpID、Rep、Col3之后,将范围更改为D3

这将停止错误,但现在日期有问题。1月只有28场比赛从4号开始,2月还有其他问题,剩下的几个月也有日期问题

Excel文件

完整的宏

Sub showcalendar()
LeaveTracker.Columns("B:NI").Hidden = True
LeaveTracker.Range(Columns(Range("A3").Value * 31 - 29), Columns(Range("A3").Value * 31 + 1)).Hidden = False
End Sub
日期公式

=IF(AND((COLUMN()-1)>31*($A$3-1),MONTH(DATE($A$2+INT(($A$3+$A$1)/12),INT((COLUMN()-1)/31.001)+$A$1,ROUNDUP(MOD(COLUMN()-1,31.001),0)))=ROUNDUP(MOD($A$1+$A$3-1,12.01),0)),ROUNDUP(MOD(COLUMN()-1,31.001),0),"")

在一周的日期和天数中有一些复杂的公式。它们使用的是COLUMN函数,该函数返回当前单元格的列号

首先,您需要坚持对宏所做的更改,但要将
列(范围(“A3”).Value*31+1)
更改为
列(范围(“A3”).Value*31+4)

其次,需要调整行
LeaveTracker.Columns(“B:NI”).Hidden=True
,以反映所做的更改。我认为列应该是“E:NM”

第三,一周中的日期和天数都有复杂的公式。他们使用COLUMN()函数来确定月份的哪一天,该函数返回单元格的列号。你需要调整这个。对“COLUMN()-1”进行查找和替换,并将其替换为“COLUMN()-4”

这会解决一些问题,让你行动起来

编辑以添加: 右键单击底部的滚动条并选择“格式控制…” 将目标单元格链接更改为“离开跟踪器”$D$1


这几乎可以解决所有问题。现在唯一的问题是,如果时间少于31天,那么月末会有一两个空白栏。

您可以发布其余代码吗?出于安全原因,这里的一些人可能不愿意下载启用宏的excel文件。谢谢@asp8811这里的好消息,这就是宏中的全部内容。我按照说明进行了操作,并且在一定程度上起到了作用。然而,3天已经移到下个月。将发布截图我对我的答案做了一些修改。请参见第一步和添加内容。将宏的该部分中的+1更改为+4可以解决您遇到的问题。工作表现在应该可以工作了。谢谢asp8811,但看起来问题解决了。我会做一些检查并接受这个答案。另外,如果你不介意的话,带着更多的疑问回来。一点也不介意。只要回答你的其他问题就行了。很高兴我能帮忙。谢谢你,这太棒了。一切正常。一整天都在挣扎,尝试不同的组合,因为我从未使用过Excel宏/公式