Вычисление последнего меньшего значения - PullRequest
0 голосов
/ 29 мая 2019

У меня есть лист Excel с датами (отсортированными) в одном столбце и значениями в другом. Пример:

1/1/2019     10
1/2/2019     12
1/3/2019     8
1/4/2019     20
1/10/2019    8
1/12/2019    22

Я хочу вычислить в третьем столбце самую последнюю дату, чтобы значение было меньше или равно текущему значению (если текущее значение самое низкое, используйте текущую дату). Так, для приведенных выше примеров,

1/1/2019     10    1/1/2019
1/2/2019     12    1/1/2019
1/3/2019     8     1/3/2019
1/4/2019     20    1/3/2019
1/10/2019    8     1/3/2019
1/12/2019    22    1/10/2019

Есть ли способ сделать это без макросов VBA?

1 Ответ

1 голос
/ 29 мая 2019

Вот способ.Вставьте их и скопируйте столбец.

Column C:  =IF(COUNTIF(B2:B6,D1)=0,A1,MINIFS(A2:A6,B2:B6,D1))

Column D:  =CONCATENATE("<",TEXT(VALUE(B1),"#"))

Вы можете скрыть столбец D, чтобы сделать его красивее.Это критерии, используемые COUNTIF и MINIFS.Столбец C является выходным.

1/1/2019    10  1/3/2019    <10
1/2/2019    12  1/3/2019    <12
1/3/2019    8   1/3/2019    <8
1/4/2019    20  1/10/2019   <20
1/10/2019   8   1/10/2019   <8
1/12/2019   22  1/12/2019   <22

Представление формулы:

43466   10  =IF(COUNTIF(B2:B6,D1)=0,A1,MINIFS(A2:A6,B2:B6,D1))  =CONCATENATE("<",TEXT(VALUE(B1),"#"))
43467   12  =IF(COUNTIF(B3:B7,D2)=0,A2,MINIFS(A3:A7,B3:B7,D2))  =CONCATENATE("<",TEXT(VALUE(B2),"#"))
43468   8   =IF(COUNTIF(B4:B8,D3)=0,A3,MINIFS(A4:A8,B4:B8,D3))  =CONCATENATE("<",TEXT(VALUE(B3),"#"))
43469   20  =IF(COUNTIF(B5:B9,D4)=0,A4,MINIFS(A5:A9,B5:B9,D4))  =CONCATENATE("<",TEXT(VALUE(B4),"#"))
43475   8   =IF(COUNTIF(B6:B10,D5)=0,A5,MINIFS(A6:A10,B6:B10,D5))   =CONCATENATE("<",TEXT(VALUE(B5),"#"))
43477   22  =IF(COUNTIF(B7:B11,D6)=0,A6,MINIFS(A7:A11,B7:B11,D6))   =CONCATENATE("<",TEXT(VALUE(B6),"#"))

Это немного неаккуратно, поскольку вы можете использовать именованное значение или абсолютное значение для конца диапазона, например, B $ 6.В противном случае вы будете смотреть на ячейки под вашим столом, и это нормально, пока они пустые, но неаккуратные.

Column C:  =IF(COUNTIF(B2:B$6,D1)=0,A1,MINIFS(A2:A$6,B2:B$6,D1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...