当前位置: 首页 > 知识库问答 >
问题:

根据相关的下拉列表/多个条件更新单元格值

卫嘉谊
2023-03-14

我已经根据这个脚本/教程创建了一个带有相关下拉列表的google工作表。这是我创建的工作表的副本。我的目标是使用下拉列表中的每个唯一值自动填充C列中的单元格,而不是创建一个与母版图纸C列中当前显示的下拉列表类似的下拉列表。我曾尝试通过VLOOKUP实现这一点,但只得到了错误的响应,可能是由于缺乏验证或其他我不熟悉的逻辑形式。如果A列或B列选项被修改,我还希望C列中的填充选项是清除的(clearContent),类似于当前脚本的工作方式。如果您能帮我解决这个问题,我们将不胜感激。

共有1个答案

谢铭
2023-03-14
  • 更改“A”列和“B”列的下拉列表后,您需要将“选项”页中“C”列的相关值放入“C”列的单元格中。
    • 例如,当列“A”和列“B”的下拉列表为apple1_Dorment时,您希望将疫霉衣领腐病、欧洲红螨、鳞片的值放入列“C”的单元格中

    如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一。

    • 在您的脚本中,我认为可以使用applySecondLevelValidation函数的listToApply。使用此选项,可以将值放入“C”列

    当您的脚本被修改时,请按如下方式修改appyFirstLevelValidationappy秒级验证的函数。

    function applyFirstLevelValidation(val,r){
        ws.getRange(2, 3, ws.getLastRow() - 1, 1).clearContent(); // Added
    
        if(val===""){
          ws.getRange(r,secondLevelColumn).clearContent();
          ws.getRange(r,secondLevelColumn).clearDataValidations();
          ws.getRange(r,thirdLevelColumn).clearContent();
          ws.getRange(r,thirdLevelColumn).clearDataValidations();
        } else {
          ws.getRange(r,secondLevelColumn).clearContent();
          ws.getRange(r,secondLevelColumn).clearDataValidations();
          ws.getRange(r,thirdLevelColumn).clearContent();
          ws.getRange(r,thirdLevelColumn).clearDataValidations();
          var filteredOptions = options.filter(function(o){return o[0] == val });
          var listToApply = filteredOptions.map(function(o){return o[1]})
          var cell = ws.getRange(r,secondLevelColumn);
          applyValidationToCell(listToApply,cell);
        }
    }
    
    function applySecondLevelValidation(val,r){
        ws.getRange(2, 3, ws.getLastRow() - 1, 1).clearContent(); // Added
    
        if(val===""){
          ws.getRange(r,thirdLevelColumn).clearContent();
          ws.getRange(r,thirdLevelColumn).clearDataValidations();
        } else {
          ws.getRange(r,thirdLevelColumn).clearContent();
          var firstLevelColValue = ws.getRange(r,firstLevelColumn).getValue();
          var filteredOptions = options.filter(function(o){return o[0] == firstLevelColValue && o[1] === val});
          var listToApply = filteredOptions.map(function(o){return [o[2]]}); // Modified
          ws.getRange(r,thirdLevelColumn,listToApply.length, 1).setValues(listToApply); // Modified
        }
    }
    

    >

  • 如果您只想将值放在单元格“C2”中,请按如下方式修改上述脚本。

    >

  • var listToApply = filteredOptions.map(function(o){return [o[2]]});
    ws.getRange(r,thirdLevelColumn,listToApply.length, 1).setValues(listToApply);
    

    var listToApply = filteredOptions.map(function(o){return o[2]});
    ws.getRange(r,thirdLevelColumn).setValue(listToApply.join(","));
    
    • getRange(行,列,数字行,数字列
    • setValue(值)

    如果我误解了你的问题,而这不是你想要的方向,我道歉。

 类似资料:
  • 我试图在这里创建一个描述和回答(用脚本)的依赖列表。 我想实现的是,如果从第1列的单元格中选择某个值(例如“First”),那么同一行下一个单元格中的下拉选项应提供不同表格中列的一系列值,这些列的标题与第一个左单元格中的值相同(即,第一个表格称为“Selector”)-其中有下拉列表,在第二张名为“KAT”的表格中,我有这些下拉列表的选项)。然后,根据行的每个第一个单元格的值,每一行都可以这样做。

  • 我有这样的表: 我需要一个更新查询来根据它包含的值更新salary列。 工资需要增加: 10000到15000之间的值为5000 15000到20000之间的值为7000 20000到30000之间的值为8000 40000到60000之间的值为10000

  • 根据第一个下拉列表项选择,我希望第二个下拉列表应该包含相关内容。在Java怎么能这样?例如,假设第一个下拉列表包含国家名称,第二个下拉列表包含国家名称。如果我从第一个下拉列表中选择一个特定的国家,比如“印度”,那么第二个列表应该只显示国家的相关邦,即“印度”的邦。并且这两个列表都是动态的。

  • 问题内容: 我的站点读取一个XML文件,该文件包含数据表的信息(值)。我使用CSS设置表格样式,并且一切正常。 为了获得更好的用户体验,我想知道是否有可能根据其值动态更改每个单元格的背景颜色? 例如: 每个包含小于5的数字的单元格都有红色背景色; 每个大于等于“ 5”的单元格具有绿色背景色。 我对此的第一个解决方案是使用Javascript-但我想知道是否有办法仅使用CSS样式来解决此问题? 问题

  • 问题内容: 我需要使用JavaScript根据下拉菜单A中的选择更改下拉菜单B的内容。没有涉及到数据库查询- 我事先知道应该在A中选择B的内容。我已经找到了一些使用AJAX的示例,但是由于没有涉及到数据库查询,所以没有必要。谁能为我指出一些示例代码以实现此目的? 问题答案: function configureDropDownLists(ddl1, ddl2) {

  • 问题内容: 这个问题已经在stackoverflow上被问过很多次了,但是它们似乎都已经存在了一年多,所以我想如果有更新的话我会再问一次。 A是一条更新语句,它根据另一个表中的值更新一个表中的所有行,同时将两个表链接在一起。 从SQLAlchemy文档中,我们可以轻松地进行相关更新,但仅在单个列上进行: 转换为: 我们如何使用sqlalchemy中的多个列来编写相关更新?例如: 问题答案: 根据您