如果单元格 B 或单元格 C 中的复选框为 FALSE,则用户无法从单元格 A 的下拉列表中选择数据

IF Checkbox in cell B OR cell C is FALSE, user can't choose data from dropdown in cell A

如果单元格 B 或单元格 C 中的复选框为 FALSE,我想阻止用户从单元格 A 内的下拉列表中选择数据。

更好的是,如果 B 或 C 中的复选框为 FALSE,甚至可以不在单元格 A 中显示下拉菜单。

当 B 或 C 为 FALSE(也是默认值)时,下拉菜单将默认禁用,当 B 或 C 被勾选并更改为 TRUE 时,下拉菜单将显示。

B 列和 C 列默认为 FALSE(未选中实际复选框)。

是否可以在 Google 电子表格中进行此操作?

使用应用程序脚本:

使用应用脚本尝试以下代码。这使用每次编辑单元格时运行的 onEdit 触发器。然后检查条件 -> 如果单元格 B 和单元格 C 都为真,那么它将在单元格 A 上显示下拉列表,如果更改为假,它将再次被删除。

function onEdit(e) {
  var spreadsheet = e.source;
  var sh = spreadsheet.getActiveSheet();
  var rng = spreadsheet.getActiveRange();
  var rngRow = rng.getRow();
  var rngCol = rng.getColumn();

  var options = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("OPTIONS").getRange("A2:A") //set sheetname and cell range where the options are coming from
  var dropdownCell = sh.getRange(rngRow, 1);

  var otherCol = sh.getName() == 'Sheet1' ? rngCol == 2 ? 3 : 2 : '';
  var [cell, otherCell] = sh.getRangeList([`R${rngRow}C${rngCol}`, `R${rngRow}C${otherCol}`])
    .getRanges().map(range => range.getValue());

  if (rngCol == 2 || rngCol == 3) {
    if (cell && otherCell) {
      var rule = SpreadsheetApp.newDataValidation().requireValueInRange(options)
        .build();
      dropdownCell.setDataValidation(rule);
    } else {
      dropdownCell.setDataValidation(null);
    }
  }
}

结果:

数据验证选项来自另一个tab/sheet“OPTIONS”,从第 2 行开始。

这是一个玩具示例,说明如何在没有 Apps 脚本的情况下执行此操作。显然,您需要进行修改以满足您的要求。

在A1中,开启'List from a range'数据校验,设置范围为'D1:G1'。在 B1 和 C1 中,添加复选框。在 D1 中输入以下公式:

=if(or(B1,C1),{"A","B","C","D"},)

因此,无论何时勾选 B1 或 C1,数组文字都会扩展为 D1:G1,并且这些单元格的内容会填充 A1 的数据验证列表。当两者都没有被勾选时,D1 为空并且没有可用的验证列表。显然验证范围不需要在 D1 中;只要您将 A1 中的数据验证指向正确的范围,任何地方(甚至另一个 sheet)都可以工作。