Таким образом, в основном у меня есть лист Excel, содержащий несколько разных идентификаторов, дат и столбец, в котором я хотел бы указать начало или конец третьего столбца в зависимости от даты первого идентификатора. Однако это должно относиться только к блоку с тем же идентификатором. Когда пройдет следующий идентификатор, дата первого идентификатора в блоке будет определять оставшуюся часть 3-го столбца, и так далее, и так далее.
Эта проблема гораздо лучше понимается при просмотре набора данных.
ID DATE formula_col
10R46 10/8/2011
10R46 2/18/2012
10R46 6/30/2012
10R47 2/4/2010
10R47 5/16/2010
10R47 8/8/2010
10R47 12/11/2010
10R47 1/4/2011
10R48 6/26/2011
10R48 9/11/2011
10R48 1/29/2012
10R48 4/20/2012
10R48 7/8/2012
Как вы можете видеть здесь. Существует блок последовательных идентификаторов, и мне нужно, чтобы "Formula_col" читала начало первой даты, а остальные даты будут следовать следующему правилу:
Первый месяц начинается, следующий - средний, следующий - конец, затем повторяется.
Итак, если первым месяцем был февраль (2), то формулы для этих идентификаторов были бы:
Февраль: начало
Март: средний
Апрель: конец
Май: начало
Середина июня
Июль: конец
Август: начало
Сентябрь: средний
Октябрь: конец
Ноябрь: начало
Декабрь: средний
Январь: конец
И любой может появиться, не обязательно начало, середина, конец в этом порядке. Но они всегда будут в порядке дат, не возвращаясь во времени и т. Д., Пока удостоверение личности не закончится.
Так что для вышеупомянутого набора данных это будет:
ID DATE formula_col
10R46 10/8/2011 Beginning
10R46 2/18/2012 Middle
10R46 6/30/2012 End
10R47 2/4/2010 Beginning
10R47 5/16/2010 Beginning
10R47 8/8/2010 Beginning
10R47 12/1/2010 Middle
10R47 1/4/2011 End
10R48 6/26/2011 Beginning
10R48 9/11/2011 Beginning
10R48 1/29/2012 Middle
10R48 4/20/2012 Middle
10R48 7/8/2012 Middle
Чтобы уточнить: первая дата идентификатора будет определять, какие месяцы: начало, середина и конец.
Вот код, который я создал, если первым месяцем является январь, апрель, июль или октябрь. Но это не совсем то, чего я хочу, просто начало.
=IF(OR(MONTH(B2)=1,MONTH(B2)=4, MONTH(B2)=7,MONTH(B2)=10),"Beginning",IF(OR(MONTH(B2)=2,MONTH(B2)=5, MONTH(B2)=8,MONTH(B2)=11),"Middle",IF(OR(MONTH(B2)=3,MONTH(B2)=6, MONTH(B2)=9,MONTH(B2)=12),"End",NA)))
Таким образом, сложная часть - начало месяца, зависит от первой записи уникального идентификатора. Затем он начинает следовать правилу, которое применяется только к этому идентификатору. Когда появляется следующий идентификатор, правило сбрасывается на основании даты первого идентификатора. Они всегда будут последовательными, хотя я бы предпочел не полагаться на это.
Решения VBA приветствуются