Google Sheets - формула для расходной ведомости - PullRequest
0 голосов
/ 14 января 2019

Мне нужна формула, которая поможет мне рассчитать сумму расходов в долларах для моих ставок по пробегу.

Вот мой лист https://docs.google.com/spreadsheets/d/1PPFuFWbxWi9iIdtYBJvnSNB1j1cjjQutepF3hnpGoFM/edit?usp=sharing

На вкладке «Расходы» мне нужно проверить год моей даты в полковнике А (потому что разные годы имеют разные показатели), затем проверить полковник D, чтобы узнать, написано ли это «Миледж», а затем проверить полковник Е для какого типа милигара. (есть 4 типа), затем верните число, введенное в Col I, умноженное на соответствующую норму для этого года и тип milage. У меня есть таблица с тарифами в другой вкладке.

Я думаю, это будет длинная формула IF и AND. Любая помощь будет отличной!

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Я решил это с помощью создания скрипта приложения.

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

Вот код, если кому-то это может понадобиться. Я добавил его в меню, чтобы вычисление производилось щелчком мыши.

function expenseMilageCalculation() {
  var auditionsSheet = SpreadsheetApp.getActiveSpreadsheet();
  var expensesTab = auditionsSheet.getActiveSheet();  
  var activeCell = expensesTab.getActiveCell();
  var activeRow = activeCell.getRow();
  var expenseDate = expensesTab.getRange(activeRow, 1).getValue();
  var expenseYear = expenseDate.getFullYear();
  var expenseType = expensesTab.getRange(activeRow, 4).getValue();
  var expenseDetails = expensesTab.getRange(activeRow, 5).getValue();
  var numMiles = expensesTab.getRange(activeRow, 9).getValue();

  var essentialsLogTab = auditionsSheet.getSheetByName("Essentials Log")

//2018 Business Milage
if (expenseYear == 2018 && expenseType == "Milage" && expenseDetails == "Business") { 

  var milageBusinessRate2018 = essentialsLogTab.getRange(3, 27).getValue();
  var dollarMilesDeduction = numMiles * milageBusinessRate2018
  expensesTab.getRange(activeRow, 8).setValue(dollarMilesDeduction)

}

//2019 Business Milage
if (expenseYear == 2019 && expenseType == "Milage" && expenseDetails == "Business") { 

  var milageBusinessRate2019 = essentialsLogTab.getRange(8, 27).getValue();
  var dollarMilesDeduction = numMiles * milageBusinessRate2019
  expensesTab.getRange(activeRow, 8).setValue(dollarMilesDeduction)

}
0 голосов
/ 15 января 2019

В «Журнале Essentials» я изменил формат дат начала и окончания года, чтобы указать год, на который вы ссылаетесь. Я добавил колонку для "Milage".

Снимок экрана справки по расходам

В 'Expenses'!M2, я попробовал это, и, кажется, работает:

=ARRAYFORMULA(iferror(if(isblank(A2:A),"",I2:I*vlookup(D2:D&year(A2:A)&E2:E,query({'Essentials Log'!Y2:Y&'Essentials Log'!Z2:Z&'Essentials Log'!AA2:AA,'Essentials Log'!AB2:AB},"Select *"),2,false))))

Рабочий пример экрана

Взгляните (я скопировал ваш пример): Расход за мили

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