如何使一个选项卡中的先前日期数据出现在另一个选项卡中[关闭]

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

我正在尝试创建一个函数,从“2024 年 11 月”选项卡中提取昨天“皮肤评估”(B90:AE93) 和“患者摘要/护理人员更新”(B101:101)”的数据,并将其放入“更新”选项卡如下:

2024 年 11 月选项卡“皮肤评估”(B90:AE93)昨天日期的数据将转到“更新”选项卡“昨天的皮肤评估”(B17:B20)。

2024 年 11 月选项卡“患者摘要/看护者更新”(B101:101) 昨天日期的数据将转至“更新”选项卡“昨天的患者摘要/看护者更新”(B12)

这里是 Google 表格,如果您想在那里使用编辑器,请启用编辑器。

https://docs.google.com/spreadsheets/d/1adILT_xNvZY8RsbxfKx9hL74TOz-id8gaZKbrlo5C24/edit?usp=sharing

google-sheets google-apps-script google-sheets-formula formula
2个回答
1
投票

在“更新”选项卡中:

  • 对于 B11,请使用
    =INDEX(November2024!101:101, MATCH(Updates!B5 - 1, November2024!7:7, 0))
  • 对于 B17,请使用
    =ARRAYFORMULA(INDEX(November2024!90:93, , MATCH(Updates!B5 - 1, November2024!7:7, 0)))

您应该看到类似这样的内容: enter image description here

说明
  • November2024!B101:101
    访问其他 October2024 的第 101 行单元格,从 B 列开始。
  • MATCH(Updates!B5 - 1, November2024!7:7, 0)
    找到昨天日期在November2024 中的位置!第 7 行。
  • INDEX(November2024!101:101, ...)
    检索行中该位置下的值。
  • ARRAYFORMULA()
    检索多行下的值。

您可以查看Google表格功能列表以了解更多信息。


0
投票

使用应用程序脚本的替代解决方案

我在您共享的电子表格上注意到您也在考虑使用应用程序脚本来完成您的项目。只是为了涵盖所有基础并为您提供尽可能多的选项来完成您的项目,我正在分享这个替代解决方案,它将使用 Google Apps 脚本获得您预期的结果。

完整代码:

function update() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var updates = ss.getSheetByName('Updates');
  var dataSrc = ss.getSheetByName('November2024');

  var today = new Date(new Date().setHours(0, 0, 0, 0));
  updates.getRange('B5').setValue(today);
    
  var ystd = new Date(new Date(Date.now() - 864e5).setHours(0, 0, 0, 0));
  
  var dateRow = dataSrc.getRange(7, 1, 1, dataSrc.getLastColumn()).getValues();

  var colIndex = dateRow.flat().map(date => {
    var cellDate = new Date(new Date(date).setHours(0, 0, 0, 0));
    return cellDate.getTime();
  }).indexOf(ystd.getTime());

  var pt = dataSrc.getRange(90, colIndex + 1, 4, 1).getDisplayValues();
  var skin = dataSrc.getRange(101, colIndex + 1, 1, 1).getValues();

  updates.getRange(17, 2, 4, 1).setValues(pt);
  updates.getRange(11, 2, 1, 1).setValues(skin);
}

注意: 您需要至少运行一次脚本并接受授权。

示例输出: enter image description here

为了自动更新您的电子表格,您最好创建一个可安装的触发器,而不是每次需要更新时都单击运行按钮(您始终可以选择最适合您需要的触发器)。

以下是如何为示例创建时间驱动的触发器:

  1. 在应用程序脚本的左侧,转到
    Triggers
  2. 添加
    Triggers
  3. 将事件源更改为
    Time-driven
  4. 将基于时间的触发器类型更改为
    Day Timer
  5. 指定您想要更新的
    time of day
    ,然后保存。

触发器应如下所示: enter image description here

参考资料:

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