Validation 设置一个;“子范围”;下拉列表中的值列表(数据验证),基于从Google工作表中的范围中选择的值
光荣的互联网。我寻求你的帮助 我从OpenOffice导入了一个电子表格,“子范围”下拉列表(来自数据验证)被破坏了 基本上,列B=“Category”和列C=“Subcategory”——列B数据验证工作正常,填充标准类别下拉列表(它只是同一张表中的一个范围,在下面的示例D2:E2中)。但是,基于类别值,列C应该更新子类别的下拉列表 i、 e 行/列 D E 2. 果 蔬菜 3. 苹果 胡萝卜 4. 香蕉 洋葱Validation 设置一个;“子范围”;下拉列表中的值列表(数据验证),基于从Google工作表中的范围中选择的值,validation,google-apps-script,google-sheets,dropdown,Validation,Google Apps Script,Google Sheets,Dropdown,光荣的互联网。我寻求你的帮助 我从OpenOffice导入了一个电子表格,“子范围”下拉列表(来自数据验证)被破坏了 基本上,列B=“Category”和列C=“Subcategory”——列B数据验证工作正常,填充标准类别下拉列表(它只是同一张表中的一个范围,在下面的示例D2:E2中)。但是,基于类别值,列C应该更新子类别的下拉列表 i、 e 行/列 D E 2. 果 蔬菜 3. 苹果 胡萝卜 4. 香蕉 洋葱 如果你不需要什么特别的东西,而且只需要一个细胞,那么这个公式就可以了。只需将范围更
如果你不需要什么特别的东西,而且只需要一个细胞,那么这个公式就可以了。只需将范围更改为正确的图纸名称/范围,它就适用于您。公式获取从表1中选择的值,并检查其是否与水果或蔬菜匹配。如果它与这些匹配,则选择B3:B或C3:C。然后,我将数组限制为只达到B3:B中的计数……假设您的两列具有相同数量的元素。然后,我将此范围添加到表1中C2的数据验证中
=Array_Constrain(ArrayFormula(if(Sheet1!B2="Fruit",B3:B,if(Sheet1!B2="Vegetable",C3:C,""))),countif(B3:B,"<>"),1)
希望这有帮助!将来,通过提供的演示表演示示例会更容易。请查看并编辑您的问题。如果您共享的工作表副本没有任何敏感数据,这将非常有用。您是否计划使用工作表功能或应用程序脚本来完成此操作?
function onEdit(e) {
var ss = e.source;
var value = e.value;
var activeSheet = ss.getSheetName();
var range = e.range;
var currentRow = range.getRow();
var currentColumn = range.getColumn();
if(activeSheet == 'Sheet1' && currentRow > 1 && currentColumn == 2 && value == 'Fruit') {
//IF THE ROW IS > 1 AND THE COLUMN = 2 AND FRUIT WAS SELECTED, THEN IT WILL COPY THE VALIDATION RULES FROM
//SHEET2 D2.
var fruitRule = ss.getSheetByName('Sheet2').getRange(2, 4).getDataValidation().copy();
range.offset(0,1).setDataValidation(fruitRule);
return;
} else if(activeSheet == 'Sheet1' && currentRow > 1 && currentColumn == 2 && value == 'Vegetable') {
//IF THE ROW IS > 1 AND THE COLUMN = 2 AND VEGETABLE WAS SELECTED, THEN IT WILL COPY THE VALIDATION RULES FROM
//SHEET2 E2.
var vegRule = ss.getSheetByName('Sheet2').getRange(2, 5).getDataValidation().copy();
range.offset(0,1).setDataValidation(vegRule);
return;
} else if(activeSheet == 'Sheet1' && currentRow > 1 && currentColumn == 2 && value == null) {
//IF THE ROW IS > 1 AND THE COLUMN = 2 AND VALUE WAS DELETED, THEN IT WILL CLEAR THE VALIDATION RULES
//FROM THE ADJACENT CELL.
range.offset(0,1).clearDataValidations();
}
}