Ste*_*sky 5 validation spreadsheet google-sheets
无法解决这个问题,我感到有点傻。这是我设置的数据验证:
单元格范围:Journal!J2
条件:列表范围-Journal!W2:X2
单元格范围:Journal!M2
条件:列表范围-Journal!Y2:AA2
这在我的第一行中很棒。我创建另一行,并希望将所有的“ 2”更新为“ 3”。单元格范围可以正确更新,但条件不能正确更新,除了手动输入和更新之外,我无法找到一个简单的解决方案。
我试过复制/粘贴以及粘贴特殊->数据验证。
我知道像$ Y $ 2这样的东西可以修复行/列,但这与我想要的相反。我想我想保持相对公式而不是绝对公式?
小智 5
实际上,“来自某个范围的列表”验证类型会将对列表的引用视为绝对引用,而不是相对引用。我知道两种解决方法:
根据自定义公式进行验证
=not(isna(match(J2, W2:X2, 0)))
Run Code Online (Sandbox Code Playgroud)
等效于“值必须在W2:X2范围内”,并且将正确复制下来,其中W2:X2的引用是相对的。
缺点:您无法通过自定义公式验证获得单元内下拉列表。
可以使用Apps脚本来管理数据验证规则。以下脚本在范围J2:J100的每个单元格中设置数据验证规则,其中值必须来自同一行的W:X。
function validate() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("J2:J100");
var valuesColumn = 23; // begins in W
var valuesLength = 2; // has length 2, so W:X
var firstRow = range.getRow();
for (var i = 0; i < range.getHeight(); i++) {
var rule = SpreadsheetApp.newDataValidation()
.requireValueInRange(sheet.getRange(firstRow + i, valuesColumn, 1, valuesLength), true)
.setAllowInvalid(false)
.build();
range.offset(i, 0, 1, 1).setDataValidation(rule);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9497 次 |
最近记录: |