Google表格 - 费用表的公式

问题描述 投票:0回答:2

我需要一个公式来帮助我计算里程费用的$费用金额。

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

在费用标签上,我需要检查我在Col A的日期年份(因为不同的年份有不同的费率),然后检查Col D以查看它是否显示Milage,然后检查Col E是什么类型的milage(有4种类型),然后返回Col I输入的数字乘以该年的适当比率和类型的milage。我在另一个标签中设置了一个包含费率的表格。

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

if-statement google-sheets
2个回答
0
投票

在“Essentials Log”中,我更改了年份开始日期的格式,以说明您引用的年份。我为“Milage”添加了一个专栏。

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


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)

}
© www.soinside.com 2019 - 2024. All rights reserved.