我有一个物品需求'表有3种不同的东西:
包含对象部件号的列,多个列,其中Dates为标题,数量为其中的值。
Part Number | Date1 | Date2 | Date3 | Date4 ... | Lead Time
2003032.........201.........63.......54..........63.............3
2145631..........54.........21........53..........21............2
4563214.........23..........121.......12.........31.............5
但这是我需要做的事情,我不知道如何。
因此,如果提前期为3个月,我需要采取今天的日期并总计3个月,而不是选择与此总和的结果相对应的列(仅在同一个月不是同一天),而不是获取此列中的值以及它之前的所有列并将所有列相加。
我不确定自己是否已经清楚了,如果我没有,我很抱歉。如果有任何问题,我会尝试进一步解释。
希望有人可以提供帮助。
Excel 2002
答案 0 :(得分:0)
鱼翅。根据您的情况,您不需要VBA,公式SUM和OFFSET应该这样做。我做了一个非常简单的表格来说清楚:
答案 1 :(得分:0)
假设
日期按从左到右的升序排列
日期在连续范围内(它们之间没有空格)
日期是其行中唯一的数字
提前期是其专栏中唯一的数字
然后你可以试试这个
Option Explicit
Sub main()
Dim cell As Range, datesRng As Range
Dim jMonth As Variant
Dim mySht As Worksheet: Set mySht = Worksheets("leadtimes") '<--| change "leadtimes" with your actual sheet name
Dim leadCol As String: leadCol = "N" '<--| change "N" to your actual lead times column index
With mySht
Set datesRng = .Rows(1).SpecialCells(xlCellTypeConstants, xlNumbers)
For Each cell In .Columns(leadCol).SpecialCells(xlCellTypeConstants, xlNumbers)
jMonth = Application.Match(CLng(DateAdd("m", cell.Value, Date)), datesRng, 1)
If Not IsError(jMonth) Then cell.offset(, 1) = WorksheetFunction.Sum(datesRng.offset(cell.Row - datesRng.Rows(1).Row).Resize(, jMonth))
Next cell
End With
End Sub