本文介绍了Google Sheets-将VLOOKUP与命名范围相结合以创建下拉菜单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有3个工作表-库存产品大小

我已经创建了3个命名区域:"成人"、"孩子"和"鞋子"。

库存工作表上,根据产品中设置的命名范围,添加产品后-我希望"大小"列成为包含该产品正确大小的下拉列表。

示例

Products中的产品"redshit1"已分配"成人"范围。因此,Stock中的以下单元格应包含大小如下的下拉列表:l,xl,xxl

我希望这足够清楚,提前感谢您的帮助。

这是我的Google工作表:

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

推荐答案

尝试

function onEdit(e){
  var sh = e.source.getActiveSheet()
  for (var i = e.range.rowStart;i<=e.range.rowEnd;i++){
    for (var j = e.range.columnStart;j<=e.range.columnEnd;j++){
      validationManagement(sh,sh.getRange(i,j))
    }
  }
}
function validationManagement(sh,cel){
  if (sh.getName()=='Pending' && cel.getRow()>1 && cel.getColumn()==10){
    if (cel.getValue()==''){
      cel.offset(0, 2).clearContent().clearDataValidations();
    }else{
      var ss = SpreadsheetApp.getActiveSpreadsheet()
      var styles = ss.getSheetByName('Styles').getDataRange().getValues().filter( r => (r[0]==cel.getValue()) )
      var sizes = ss.getSheetByName('Sizes')
      var col = sizes.getRange(1,1,1,sizes.getLastColumn()).getValues().flat().indexOf(styles[0][2])+1
      cel.offset(0, 2).clearContent().clearDataValidations();
      var validationRule = SpreadsheetApp.newDataValidation().requireValueInRange(sizes.getRange(2,col,sizes.getLastRow()-1,1)).build()
      cel.offset(0, 2).setDataValidation(validationRule);
    }
  }
}

这将允许您一次更改多个值。

https://docs.google.com/spreadsheets/d/1tfs3fIj8pgMkmfySzbXUCqgXainG2o1rchLg4foVZeo/edit?usp=sharing

引用

这篇关于Google Sheets-将VLOOKUP与命名范围相结合以创建下拉菜单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-01 22:00