Google表格 - 费用表的公式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google表格 - 费用表的公式相关的知识,希望对你有一定的参考价值。

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

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

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

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

答案

在“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

另一答案

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

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

}

以上是关于Google表格 - 费用表的公式的主要内容,如果未能解决你的问题,请参考以下文章

来自多个工作表的 Google 表格复杂数组

自动填充公式(跨电子表格运行) - Google 表格/应用程序脚本

Google 表格 - 返回包含特定文本的单元格的列号

Google 表格中的 IFS 公式

如何使用 Google Apps 脚本将公式添加到 Google 表格?

检索 Google 表格公式的行号