【问题标题】:Adding columns without breaking formula in template在模板中添加列而不破坏公式
【发布时间】:2019-08-10 05:27:03
【问题描述】:

我正在使用来自 Trump Excel 的 template

我想在名称列之前添加四列。

我浏览了来自 wesbite 的 cmets,并设法从 Dropbox 获得了一个带有附加列的样本,但一切似乎都如此困难,而且这个样本看起来不像原来的样本。缺少结束列。

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

LeaveTracker.Range(Columns(Range("A3").Value * 31 - 29), Columns(Range("A3").Value * 31 + 1)).Hidden = False

在 Name 前添加 EmpID、Rep、Col3 后将范围更改为 D3。

这会停止错误,但现在日期有问题。一月显示从 4 日开始只有 28 次,二月还有其他问题,其余月份也出现日期问题。

Excel 文件Download

完整的宏。

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),"")

【问题讨论】:

  • 你能把剩下的代码贴出来吗?出于安全原因,这里有些人可能不愿意下载启用宏的 Excel 文件。
  • 谢谢@asp8811 好声音,这就是我在宏中的全部内容。

标签: excel vba excel-formula


【解决方案1】:

日期和星期几中有一些复杂的公式。他们正在使用返回当前单元格的列号的 COLUMN 函数。

首先,您需要坚持对宏所做的更改,但将 Columns(Range("A3").Value * 31 + 1) 更改为 Columns(Range("A3").Value * 31 + 4)

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

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

这应该可以解决一些问题并让你动起来。

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

这应该可以解决几乎所有问题。现在唯一的问题是,如果少于 31 天,您将在月底有一两列空白。

【讨论】:

  • 我按照说明进行操作,并在一定程度上奏效了。然而,3天已经移到下个月。将发布屏幕截图
  • 我对我的回答做了一些修改。请看第一步和补充。将宏的该部分中的 +1 更改为 +4 可以解决您遇到的问题。工作表现在应该可以工作了。
  • 感谢 asp8811 但看起来这解决了问题。我会做一些检查并接受这个答案。另外,如果您不介意,请返回其他疑问。
  • 完全不介意。只需回答您的任何其他问题。很高兴我能帮上忙。
  • 谢谢,这太棒了。一切正常。挣扎了一整天,尝试不同的组合,因为我从未使用过 Excel 宏/公式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 2015-12-19
  • 2020-02-29
相关资源
最近更新 更多