【问题标题】:Google Sheets - formula for expense sheet谷歌表格 - 费用表的公式
【发布时间】:2019-06-08 21:04:55
【问题描述】:

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

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

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

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

【问题讨论】:

  • 在列末尾的 Essentials 日志下

标签: if-statement google-sheets


【解决方案1】:

在“Essentials Log”中,我更改了您的年份开始结束日期的格式,以说明您参考的年份。我为“里程”添加了一列。

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 I 中的值。我想知道这作为脚本是否会更好。
  • 我已经改变了一些东西,它正在为我工​​作 - 这是一个有点麻烦的公式,但它可能比使用脚本更简单。
【解决方案2】:

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

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

}

【讨论】:

    猜你喜欢
    • 2021-05-03
    • 2021-12-03
    • 1970-01-01
    • 2021-01-14
    • 2021-08-05
    • 2020-09-09
    • 2019-02-17
    相关资源
    最近更新 更多