创建唯一值列表

发布于 2025-02-12 02:22:24 字数 1398 浏览 2 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你如我软肋 2025-02-19 02:22:24

您可以做到这一点的一种方法是使用额外的日志表和一个应用程序脚本。

这是我在您的工作表的副本中编写和测试的一个:

/** @OnlyCurrentDoc */

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var blad1 = ss.getSheetByName('Blad1');
  var editHistory = ss.getSheetByName('editHistory');
  var editRange = blad1.getRange('E1:L1');

  var eRange = e.range;
  var eRow = eRange.getRow();
  var eCol = eRange.getColumn();

  if (eCol >= editRange.getColumn() && eCol <= editRange.getLastColumn() && eRow >= editRange.getRow() && eRow <= editRange.getLastRow() && !eRange.isBlank()) {
    var newVal = eRange.getValue();
    editHistory.appendRow([newVal]);
  }
}

此脚本采用任何放置在编辑范围中的值(在您的情况下是e1:l1),并将其附加到额外的工作表中。由此,您可以使用unique()公式,该公式指向此表中的列表,以获取所有输入值的完整唯一历史记录。


One way you can do this is with an extra log sheet and an Apps Script script.

Here is one that I have written and tested in a copy of your sheet:

/** @OnlyCurrentDoc */

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var blad1 = ss.getSheetByName('Blad1');
  var editHistory = ss.getSheetByName('editHistory');
  var editRange = blad1.getRange('E1:L1');

  var eRange = e.range;
  var eRow = eRange.getRow();
  var eCol = eRange.getColumn();

  if (eCol >= editRange.getColumn() && eCol <= editRange.getLastColumn() && eRow >= editRange.getRow() && eRow <= editRange.getLastRow() && !eRange.isBlank()) {
    var newVal = eRange.getValue();
    editHistory.appendRow([newVal]);
  }
}

This script takes any value that's placed into the edit range (in your case that's E1:L1) and appends it to the extra sheet. From this, you can use a UNIQUE() formula that points to the list in this sheet in order to get a full unique history of all the entered values.

ex
ex2

ペ泪落弦音 2025-02-19 02:22:24

独特的

function unique() {
  Logger.log([...new Set(SpreadsheetApp.getActiveSheet().getRange("E1:L1").getValues().flat())]);
}

Unique

function unique() {
  Logger.log([...new Set(SpreadsheetApp.getActiveSheet().getRange("E1:L1").getValues().flat())]);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文