我一直在尝试确定如何仅使用函数逻辑来动态扩展excel表,但似乎无法弄清楚。我开始认为只有使用VBA才有可能,对此我不太熟悉。
我正在尝试做的事情: 我有一个开始日期以及持续时间(以周为单位)。我实现了手动逻辑,可以为我提供每周的结束日期,但是我正在尝试使这一过程自动化。
可用参数:
项目开始日期:2018年5月14日
项目结束日期:6/29/2018,正在计算此字段:“((IF($ B $ 1,$ B $ 1 +(B3 * 7),”“))-7 * 1)+ 6-WEEKDAY( ((IF($ B $ 1,$ B $ 1 +(1 * 7),“”))-7 * 1))“
项目总周数:7以上逻辑中引用了该字段
所需结果:
使用上述参数在不同列中填充星期结束日期的动态表
“ 5/18/2018 5/25/2018 6/1/2018 6/8/2018 6/15/2018 6/22/2018 6/29/2018”
手动逻辑: “ =(((IF($ B $ 1,$ B $ 1 +(1 * 7),”“))* 7 * 1)+ 6-WEEKDAY((((IF($ B $ 1,$ B $ 1 +(1 * 7 ),“”))-7 * 1))“
“ =(((IF($ B $ 1,$ B $ 1 +(2 * 7),”“))-7 * 1)+ 6-WEEKDAY((((IF($ B $ 1,$ B $ 1 ++( 2 * 7),“”))-7 * 1))“
“ =(((IF($ B $ 1,$ B $ 1 +(3 * 7),”“))-7 * 1)+ 6-WEEKDAY((((IF($ B $ 1,$ B $ 1 +( 3 * 7),“”))-7 * 1))“
谢谢您的时间。
答案 0 :(得分:0)
基于起始日期在B1中,结束日期在B2中以及周数在B3中;以下VBA代码将在第1行中填充以D1开始并向右移动的周末日期:
Sub headers()
Dim start As Double
Dim weeks As Integer
start = Range("B1").Value
weeks = Range("B3").Value
For i = 0 To weeks - 1
Cells(1, 4 + i).Value = start + 4 + (i * 7)
Next
End Sub
答案 1 :(得分:0)
您可以尝试使用此数组公式
=IF(COLUMN(A1:Z1)>A2,"",A1+7-WEEKDAY(A1,16)+(COLUMN(A1:Z1)-COLUMN(A1))*7)
如果突出显示一个足以容纳最大周数的范围(例如A3:Z3),则将其作为数组公式输入。
A1包含开始日期,A2包含星期数。