簡體   English   中英

Google 表格 - 水平范圍內的數據驗證

[英]Google Sheets - Data validation from a horizontal range

我正在嘗試做一些看起來足夠直接的事情。 在單元格 ( D15 ) 驗證規則中,我想選擇List from a range並指定水平范圍而不是垂直范圍。 請參閱以下不言自明的屏幕截圖。

水平數據范圍

但是,這不起作用。 下拉列表僅顯示給定范圍第一列的數據。 請參閱下面的屏幕截圖。

范圍第一列的數據

我怎樣才能使這項工作? 我希望在下拉列表中看到 - 貓、老鼠、獅子和鹿。

PS:在列表中垂直排列我想要的項目不是一種選擇。

解決方案原則上與@Marios 接受的答案類似,我在這里找到了針對我的確切用例的解決方案。 不幸的是,AppScript 似乎是唯一的答案。

這似乎是桌面網絡應用程序中的一個錯誤:

  • 范圍的水平范圍或垂直方向不是問題
  • 但是,當使用水平范圍時,數據驗證范圍不接受一個封閉式( F3 )和一個開放式( 3 )范圍( F3:3 )。 如果兩端都是
    • open, 3:3 : 數據驗證成功
    • 關閉, F3:M3 : 數據驗證成功
    • 一側打開,一側關閉: F3:3 這實際上應該計算 lastColumn 並相應地輸入范圍。 但是,數據驗證輸入對話框刪除了開放端並將輸入保存為F3 這會導致只有一個單元格下拉,如您的問題所示。
  • 如果您能夠繞過數據驗證的模態對話框並以某種方式強制F3:3進入數據驗證配置(例如通過官方移動應用程序或腳本),則數據驗證設置正確。
  • 考慮使用“幫助”>“幫助表改進”將反饋連同此帖子一起發送給 Google。

替代解決方案:

下面的Google Apps Script解決方案怎么樣。

以下代碼將在單元格D15 中創建數據驗證,數據驗證值由范圍E15:H15 給出

function setDataValidation() {

const ss = SpreadsheetApp.getActive();
const sh = ss.getActiveSheet();
var cell = sh.getRange('D15'); // data validation cell
var range = sh.getRange('E15:H15'); // range of options
var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range).build();
cell.setDataValidation(rule);
}

指示:

  1. 單擊工具=>腳本編輯器

第1步

  1. 上述代碼片段復制並粘貼到腳本編輯器中,然后單擊運行(播放按鈕):

第2步


進一步的想法:

  • 您可以在 Google 表格 UI 中創建一個按鈕來為您執行此功能,而不是從腳本編輯器中執行該功能。
  • 另一種方法是讓用戶選擇他想要的列表范圍作為數據驗證單元格的值,然后單擊按鈕為他自動創建一個數據驗證單元格。
  • 您還可以創建觸發器以在編輯某些內容時創建數據驗證單元格。
  • 您可以為一系列單元格等創建數據驗證,而不是僅為一個單元格創建數據驗證。

參考:

我知道您想水平顯示這些值,因此不能選擇在該工作表中垂直排列它們,但是您可以在其他地方這樣做嗎?

在這種情況下,我更喜歡至少有一個其他工作表,我可以在其中列出輸入值——讓我們稱該工作表為“輸入”。 在每一列中,我可以手動列出值或使用一些公式來手動填充它(例如=TRANSPOSE('Dynamic Brands'!E15:15) )。 現在我可以在數據驗證中使用這個新范圍。

或者,您可以使用行數據構建數據驗證,但沒有“在單元格中顯示下拉列表”功能。 將您的標准更改為自定義公式並使用此公式=ISNUMBER(MATCH('Dynamic Brands'!D15, 'Dynamic Brands'!E15:15, 0))

如果您的列范圍不是動態選擇列的結束范圍以及行,即使用給定的示例而不是將范圍插入為E15:15將范圍設置為E15:H15 ,它將填充下拉列表中的所有范圍

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM