首页 > 解决方案 > 请帮助修复创建每日投资组合价值的脚本,其中包含 $ 更改和 % 更改

问题描述

我有一个包含两张表(投资组合和每日)的电子表格。我有一个脚本,它将创建一个包含日期和总余额的新条目(来自投资组合表上的 B59)。这将始终添加到第 4 行,将所有先前的条目下移一行,将当前日期保持在顶部(当前结果如表 1)。

我想在表 2 中得到结果。这将复制超过 3 个单元格(B59、B60、B61)并创建一个 $ 更改条目和一个 % 更改条目。美元找零条目总是从 B4 中减去 B5,百分比找零条目也总是使用 B4 和 B5。结果应保留在每行的 E 列和 F 列中(不被覆盖),但与其余数据一起向下移动

我正在编写一个不同的脚本,我在其中复制了 3 个单元格,但不得不冻结前 3 行,并且在尝试执行 $ change 公式时遇到了添加空白单元格的问题。我什至从未尝试过百分比公式。我遇到的主要问题是新行将使用 E4 空白创建,并且我为 A4 减去 A5 尝试的任何公式都适用于现有行,但会被向下推。

我希望我已经很好地解释了自己并感谢任何帮助

一个 C D
日常的
日期 总余额
(空白的)
2021 年 6 月 25 日 500
2021 年 6 月 24 日 475
一个 C D F
日常的
日期 总余额 账户 1 账户 2
(空白的)
2021 年 6 月 25 日 500 210 290 $改变 % 改变
2021 年 6 月 24 日 475 200 275 $改变 % 改变
    function logPortfolioValuedaily() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var overview = sheet.getSheetByName("Portfolio");
  sheet.getSheetByName("daily").insertRowBefore(4)
  var history = sheet.getSheetByName("daily");
  
  var PortfolioValue = overview.getRange("A59");

  var col = 1;
  var row = 3;
  
  do{
    row++;
    
  }while(!history.getRange(row,col).isBlank())
  
  var pvHistDate = history.getRange(row,col);  
  var pvHist = history.getRange(row,col+1);
  
  
  pvHist.setValue(PortfolioValue.getValue());
  pvHistDate.setValue(new Date());
};

新配方

function recordHistory() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var inputSheet = ss.getSheetByName("Portfolio");
var source = inputSheet.getRange("A59:D59");
var values = source.getValues();
// first 4 rows of spreadsheet frozen

values[0][0] = Utilities.formatDate(new Date(), "EST", "M/d/yyyy");


var outputSheet = ss.getSheetByName("daily")

outputSheet.appendRow(values[0]);outputSheet.sort(1,false)
}

标签: google-sheetsgoogle-sheets-formula

解决方案


推荐阅读