【问题标题】:Link dynamic and manual data i Google sheets using QUERY使用 QUERY 链接动态和手动数据 i Google 表格
【发布时间】:2021-11-03 16:55:23
【问题描述】:

我有一个名为“Words”的 Google 电子表格,其中包含许多按类别划分的单词。

2) 在名为“UNIQUE + MANUALLY”的 Google 电子表格中,我从“Words”的类别中创建了一个(唯一类别)中的唯一列表。 在唯一列表中,我想附上一个手动词。

如何让列(手动类别组)跟随(唯一类别),以便在添加新词和类别时列表不会改变?

【问题讨论】:

  • 公式将始终自动更新,因此需要使用静态文本填充单元格,而不是使用公式从另一个范围导入。您需要为此使用 Apps 脚本,这是一个可以接受的解决方案吗?
  • 凡是能解决问题的都会是解决方案。 :-) 你有脚本解决方案吗?

标签: google-apps-script google-sheets


【解决方案1】:

答案:

您可以在单击按钮时使用脚本来运行查询并将文本静态添加到所需的单元格中。

理念:

这个想法与公式目前的工作方式非常相似:

  • 获取所有单词的列表
  • 删除重复项和空白单元格
  • 按字母顺序排列
  • 将它们插入正确的列中

代码示例:

假设你的专栏是'UNIQUE + MANUALLY'!B2:B,单词都在'words'!A2:A

function getUniqueWords() {
  const ss = SpreadsheetApp.getActiveSpreadsheet()
  const wordsSheet = ss.getSheetByName("words")
  const destSheet = ss.getSheetByName("UNIQUE + MANUALLY")

  const wordsToSort = wordsSheet.getRange("B2:B").getValues()
    .flat().filter(function (el) {
      return el != ""
    }).filter(function (v, i, s) {
      return s.indexOf(v) === i
    }).sort().map(x => [x])

  destSheet.getRange("A2:A").clear()
  destSheet.getRange(2, 1, wordsToSort.length, 1).setValues(wordsToSort)
}

您可以按照Tools > Script editor 菜单项将此脚本添加到您的工作表中,将此函数粘贴到编辑器中,然后保存脚本。确保至少按一次Run 以授权脚本,以便它可以代表您运行。

如果您想将此添加到工作表本身的按钮单击,您可以从Insert 菜单项创建绘图或将图像添加到工作表中,然后将图像加载到工作表中,您可以单击它,选择出现在图像右上角的垂直省略号菜单(),选择Assign script并在对话框中输入函数名称(在本例中为getUniqueWords,没有后续的@ 987654331@).

【讨论】:

  • 嗨 Rafa 非常感谢您的分享。该脚本完美运行,因此我将继续处理该部分。但是,我仍然需要解决匹配 2 个单词类型的问题,但我想我现在可以成功,因为我可以决定何时使用脚本检索数据。这非常有帮助,谢谢!
  • 是否可以对 "UNIQUE + MANUALLY A2: A" 中的 "words B2: B" 中的值进行排序,以便在 "words B2: B" 中新添加的单词在“words C2: C”,打印在列表底部,不改变“UNIQUE + MANUALLY A2: A”中现有单词的顺序??这将是一个很大的帮助
  • @Smedegaard 确实如此 - 但它涉及的更多一些,所以最好提出一个新问题以获得专门的答案:)
猜你喜欢
  • 1970-01-01
  • 2020-10-30
  • 2015-03-06
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
相关资源
最近更新 更多