Google表格-费用表的公式

时间:2019-01-14 20:45:40

标签: if-statement google-sheets

我需要一个公式,可以帮助我计算出我的里程费的费用金额。

这是我的工作表https://docs.google.com/spreadsheets/d/1PPFuFWbxWi9iIdtYBJvnSNB1j1cjjQutepF3hnpGoFM/edit?usp=sharing

在费用标签上,我需要检查我在A列中约会的年份(因为不同的年份有不同的费率),然后检查D列以查看是否显示里程,然后在E列中查看哪种类型的里程(有4种类型),然后返回以I列输入的数字乘以该年份的适当费率和里程类型。我在另一个标签中设置了价格表。

我认为这将是一个很长的IF和AND公式。任何帮助都会很棒!

2 个答案:

答案 0 :(得分:0)

在“基本日志”中,我更改了您的年份开始日期的格式,以指明您所参考的年份。我已经为“里程”添加了一个列。

Expense Reference Screenshot

'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))))

Working Example Screenshot

看看(我复制了您的示例表):Milage expense

答案 1 :(得分:0)

我通过创建一个应用程序脚本解决了这个问题。

我意识到我不想使用公式,因为在$ 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)

}