gpt4 book ai didi

google-apps-script - 谷歌表格寻找像 VLOOKUP 这样的谷歌脚本,但结合了找到的值并将它们连接到一个特定的单元格中

转载 作者:行者123 更新时间:2023-12-04 08:53:32 29 4
gpt4 key购买 nike

我有一个电子表格,每当工作表“列表”列 1 上的单元格被选中时,我都会尝试在其中添加自动搜索功能。
这有点像使用工作表的 VLOOKUP 函数,但我一直没有成功地想出一个有效的代码。
Test Spreadsheet link
我制作了一个简单的测试电子表格,希望人们能够轻松了解该表格的工作原理。
在“数据库”表中,列出了喜欢或不喜欢水果的人。
在“列表”表中,列表被反转,水果现在是主列表,但在这里,当一个人点击带有水果的单元格时,顶部的单元格应自动更新为喜欢或不喜欢的人的组合名称某种水果。
该函数应该是这样的:
如果我单击“列表”表第 1 列上的单元格,

  • A1 单元格使用事件单元格值更新它的值
  • B1 单元格根据“数据库”表第 2 列中的谁喜欢它的组合值更新它的值。
  • B2 单元格更新其值与上述类似,但来自第 3 列中的“不喜欢”

  • 我已经附上了我目前拥有的代码,但我无法使最后两个步骤起作用。
    表格中还有一个指南,说明每种水果的正确答案应该是什么样的。
    我一直在寻找使步骤 2 和 3 起作用的方法。我能够在这里找到一个代码,但在找到一个匹配项后它就停止了。 stackoverflow.com/questions/10838294/... 我目前的问题是:由于要从数据库表中过滤的单元格 [B2:B] 有多个值,是否可以找到至少部分匹配的所有单元格,获取值左侧的单元格然后将它们列出到“列表”表上的 B1 单元格中?
    Test Spreadsheet link
    代码.gs
    function onSelectionChange(e){
    var currentsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var currentcell = currentsheet.getActiveCell();
    var activerow = currentcell.getRow();
    var activecol = currentcell.getColumn();

    var sname = currentsheet.getName();

    // Check if current sheet name is correct
    if (
    sname == 'List'
    )
    {
    // Check if this on first column
    if (activecol == 1)
    {
    // ACTION
    var name = currentcell.getValue(); //Get current cell for searching
    var prefsheet = SpreadsheetApp.getActive().getSheetByName("Database");
    var last = prefsheet.getLastRow();
    var data = prefsheet.getRange(1,1,last,2).getValues(); // create an array of data from columns A and B
    for(nn=0;nn<data.length;++nn){
    if (data[nn][1]==name){break} ;
    SpreadsheetApp.getActiveSheet().getRange('A1').setValue('Fruit: ' + name);
    SpreadsheetApp.getActiveSheet().getRange('B1').setValue('Like: ' + data[nn][0]);
    }
    }
    };
    };

    最佳答案

    我找到了一种解决方法,结果证明我不必使用 Google Script 代码来不断更新 List!B1 上的公式。
    我是脚本和工作表的新手,但我会在这里分享这个公式,以防将来有人需要这样的东西。
    这是我在 List!B1 上使用的

    =JOIN(", ",query(filter(Database!A2:B,REGEXMATCH(Database!B2:B,A1)),"Select Col1"))
    Regexmatch 搜索部分值并返回“TRUE”
    然后过滤器将列出这些行,查询“Select Col1”将只保留结果的第一列并删除第二列。最后,Join 公式会将它们连接成一个单元格并添加分隔符。
    这对我的目的非常有效。如果有人有任何建议,我也很想听听。

    关于google-apps-script - 谷歌表格寻找像 VLOOKUP 这样的谷歌脚本,但结合了找到的值并将它们连接到一个特定的单元格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63972808/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com