Вычитать через заданные интервалы между 2 значениями в Excel - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь написать калькулятор PTO в Excel, и мне нужна помощь в вычитании оплачиваемого отпуска.Часть, которую я не могу получить, это то, что она вычитается с шагом в четверть часа, но вместо использования формата HH: MM время масштабируется до 100.

Пример:

    |     A        |  B    
  --|--------------|--------
   1| Bank         |50.00
   2| CY           | 6.40
    |--------------|--------
   3| Used         | 9.50
    |--------------|--------
   4| Bank Remain  |
   5| CY Remain    |

Used будет сначала вычитаться из CY Accrued до тех пор, пока оно не станет меньше 0.25, а затем вычтет все остальное из Bank Accrued.

Спасибо за помощь.Я искал похожие вопросы, но единственные, которые я видел, - это расчетное время в стандартном формате (15-минутные интервалы), а не время, пропорциональное шкале 100.

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Я не уверен, должно ли это идти в своем собственном ответе или нет, поскольку принцип такой же, как и в ответе @ReyJuna, но исполнение несколько иное.Используя таблицу из вопроса:

    |     A        |  B    
  --|--------------|--------
   1| Bank         |50.00
   2| CY           | 6.40
    |--------------|--------
   3| Used         | 9.50
    |--------------|--------
   4| Bank Remain  |46.75
   5| CY Remain    | 0.15

Начиная с нахождения CY Remain, если CY больше Used, вам не нужно беспокоиться об исчерпании 0.25 сегментов приращения,так что вы можете напрямую вычесть, используя B2-B3 в функции ниже.

Когда CY меньше Used, вам нужны только группы с точным 0.25, поэтому вы можете использовать функцию TRUNC() для удаления десятичных дробей.Функция:

=IF(B2<B3,B2-(TRUNC(B2/0.25)*0.25),B2-B3)

Поскольку вы хотите прекратить вычитать на CY меньше 0.25, все, что вам нужно сделать, это получить количество 0.25 групп вCY и вычтите это.Остальная часть, которая должна быть вычтена из Bank, будет обрабатываться этой функцией:

=IF(B2<B3,B1-(B3-TRUNC(B2/0.25)*0.25),B1)

Обратите внимание, что TRUNC(B2/0.25)*0.25 то же самое, но теперь вычитается из значения вUsed.Это дает вам то, что осталось после того, как правильная сумма была вычтена из CY первой.Наконец, когда функция Bank Remain имеет значение false, что означает, что банковский ВОМ не нужен, тогда возвращается B1, поскольку он остался без изменений.

0 голосов
/ 08 февраля 2019

Это предполагает использование формулы вместо VBA, и я выложил данные в простую таблицу (см. Ниже), где CY Balance находится в ячейке B2.

| |     A       |  B   |   C   |    D     |
| |-------------|------|-------|----------|
|1|             | CY   | BANK  | PTO Used |
|2| Old Balance | 6.4  | 50    | 9.5      |
|3| New Balance | 0.15 | 46.75 |          |

Формула дляячейка нового баланса CY (B3):

=IF(B2>=D2,B2-D2,B2-0.25*INT(B2/0.25))

Если старый баланс CY больше или равен используемому ВОМ, то я предположил, что вся использованная сумма вычитается.

Часть B2-0.25*INT(B2/0.25) вычисляет, сколько целых частей .25 находится в вашем старом балансе, а затем вычитает это из вашего старого баланса, давая вам новый баланс CY.

Формула для BANK NewЯчейка баланса (C3) аналогична:

=IF(B2>=D2,C2,C2-(D2-0.25*INT(B2/0.25)))

Первая часть IF основана на том же предположении, что и выше.

C2-(D2-0.25*INT(B2/0.25)) использует то же самое "Подходят целые части .25 ", затем вычитают это из МОМ. Используется, чтобы получить то, что осталось.Затем он вычитается из старого баланса BANK, чтобы получить новый баланс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...