本文介绍了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与命名范围相结合以创建下拉菜单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!