2016-07-11 7 views
0

У меня есть таблица «Item Demand», которые имеют 3 разные вещи:значения Сумма в столбцах с переменным числом столбцов

столбец с номером объекта, несколько колонок с датами, как названия и количества в качестве значений в них.

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

Добро пожаловать на сайт! что ты уже испробовал? Зайдите в [tour] (https://stackoverflow.com/tour), чтобы узнать больше о вопросах, которые могут вызвать эффективные ответы. – cxw

+0

Используйте формулу массива для этого или sumif –

+0

Мне нужно это в vba, ive сделал макрос до сих пор, который берет информацию из SAP и анализирует некоторые данные, но im в зависимости от этого, чтобы продолжать. –

ответ

0

Fim. Вы не нуждаетесь в VBA для вашей ситуации, должны делать формулы SUM и OFFSET. Я сделал очень простой лист, чтобы понять:

Printscreen

+0

Я думаю, что это поможет, я собираюсь попробовать его. Но в вашей таблице почему есть 3 разных даты для «СЕГОДНЯЯ ДАТА» –

+0

Это значение, чтобы проверить, будет ли формула ОК с переменными датами. Вы можете изменить значения в этом столбце для = TODAY(). –

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 
+0

@ L.Fim: Вы попробовали это? – user3598756