разница в году в Excel - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть два столбца года в листе Excel в формате year.months (первый столбец 1,11 означает 1 год 11 месяцев) второй столбец 0,7 означает 7 месяцев).Мне нужна разница между двумя столбцами в формате year.months.т.е. 1.11-0.7 = 1.4 означает 1 год 4 месяца.

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

Этот подход будет выполнять математику, конвертируя все в те же базовые единицы, что и месяц. Вы можете выполнять действия над несколькими столбцами, что облегчит чтение, обслуживание и устранение неполадок. Когда все работает, вы можете объединить его в единую формулу, которая будет чудовищной, которую трудно будет прочитать и, возможно, поддерживать другие в будущем.

Ради этого решения предположим, что ваша дата 1.11 указана в A1, а дата 0.7 - в B1.

Шаг 1) Преобразовать А1 и В1 в месяцы

В C1 поместите следующую формулу и скопируйте ее в D1

=LEFT(A1,FIND(".",A1)-1)*12+RIGHT(A1,LEN(A1)-FIND(".",A1))

Шаг 2) Найдите разницу в месяцах

В E1 Поместите следующую формулу

=C1-D1

Шаг 3) Преобразовать разницу в месяцах в формат year.month

В F1 поместите следующую формулу

=INT(E1/12)&"."&(E1-INT(E1/12)*12)

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

=INT(((LEFT(A1,FIND(".",A1)-1)*12+RIGHT(A1,LEN(A1)-FIND(".",A1)))-(LEFT(B1,FIND(".",B1)-1)*12+RIGHT(B1,LEN(B1)-FIND(".",B1))))/12)&"."&(((LEFT(A1,FIND(".",A1)-1)*12+RIGHT(A1,LEN(A1)-FIND(".",A1)))-(LEFT(B1,FIND(".",B1)-1)*12+RIGHT(B1,LEN(B1)-FIND(".",B1))))-INT(((LEFT(A1,FIND(".",A1)-1)*12+RIGHT(A1,LEN(A1)-FIND(".",A1)))-(LEFT(B1,FIND(".",B1)-1)*12+RIGHT(B1,LEN(B1)-FIND(".",B1))))/12)*12)

Я бы не хотел, чтобы кто-то новенький приходил и смотрел на это и пытался выяснить, что он делает, не говоря уже о том, чтобы редактировать его через 3 месяца, когда потребуется изменение.

POC

Несколько предостережений. Убедитесь, что дата в A больше, чем дата в B. Это дает плохие результаты для отрицательных значений. Также убедитесь, что всегда есть "." в дату или ошибки будут следовать. Если разница составляет 12 месяцев, в настоящее время она будет отображаться как 1,0 вместо 0,12. Если требуется позднее, необходимо разработать особый случай, когда есть различия, приводящие к кратности 12 различий.

0 голосов
/ 14 ноября 2018

Работа с DatedIF

Предположим, что начальная дата указана в B1, а конечная дата в A1.

Шаг 1) Дата конвертации

Преобразовать строку в фактическую дату серийного номера Excel

В C1 и используйте следующую формулу и скопируйте в D1

=DATE(LEFT(A1,FIND(".",A1)-1),RIGHT(A1,LEN(A1)-FIND(".",A1)),1)

Преобразование предполагает первое число месяца

Шаг 2) Определите разницу в месяцах

Поместите следующее в E1

=DATEDIF(D1,C1,"M") 

Обратите внимание, что дата начала должна быть более поздней, чем дата окончания, иначе вы получите ошибку #NUM.

Шаг 3) Преобразование обратно в формат строки для y.m

Поместите следующее в F1

=INT(E1/12)&"."&(E1-INT(E1/12)*12)

и объединены в уродливость одной клетки формулы:

=INT((DATEDIF(DATE(LEFT(B1,FIND(".",B1)-1),RIGHT(B1,LEN(B1)-FIND(".",B1)),1),DATE(LEFT(A1,FIND(".",A1)-1),RIGHT(A1,LEN(A1)-FIND(".",A1)),1),"M"))/12)&"."&((DATEDIF(DATE(LEFT(B1,FIND(".",B1)-1),RIGHT(B1,LEN(B1)-FIND(".",B1)),1),DATE(LEFT(A1,FIND(".",A1)-1),RIGHT(A1,LEN(A1)-FIND(".",A1)),1),"M"))-INT((DATEDIF(DATE(LEFT(B1,FIND(".",B1)-1),RIGHT(B1,LEN(B1)-FIND(".",B1)),1),DATE(LEFT(A1,FIND(".",A1)-1),RIGHT(A1,LEN(A1)-FIND(".",A1)),1),"M"))/12)*12)
0 голосов
/ 14 ноября 2018

Скажем, A1=1.11 и B1=0.7, тогда формула будет иметь вид:

=LEFT(A1;FIND(".";A1;1)-1)-LEFT(B1;FIND(".";B1;1)-1)&"."&(MID(A1;FIND(".";A1;1)+1;2)-MID(B1;FIND(".";B1;1)+1;2))

enter image description here

...