簡體   English   中英

獲取選定范圍內的值和行號,單元格之間有間隙?

[英]Get a value and row number in selected range with gaps between cells?

所選范圍示例

我需要在 Google 工作表腳本中獲取超出選定范圍的值和行號。

最初的問題是我試圖使用此腳本獲取選定范圍的值和行號:

sheet = ss.getActiveSheet(),
  sheetvalues = sheet.getActiveRange().getValues();
  for (i=0; i<sheetvalues.length; i++) {
  mr = sheet.getActiveRange().getRow()+i;
  }

但我發現,如果您使用 filer 和 select 范圍,那么所有隱藏單元格也將成為活動范圍的一部分,但我只需要那些在過濾范圍內的單元格。 我決定最好的方法是 select 單元格一個一個地分開。通過我無法獲得值和行索引,因為它僅將最后一個選定的單元格計為活動范圍。

我相信你的目標如下。

  • 在工作表的選定行下,您想使用 Google Apps 腳本檢索未選定行的行號。

在這種情況下,我認為可以使用getSelection的方法。 並且,為了確認行,使用getActiveRangeList 當這反映到示例腳本時,它變成如下。

示例腳本:

當您使用此腳本時,首先請 select 像您的示例圖像一樣的單元格並運行該腳本。

function myFunction() {
  // 1. Retrieve the selected ranges.
  const selection = SpreadsheetApp.getSelection();

  // 2. Retrieve the selected row numbers.
  const selectedRows = selection.getActiveRangeList().getRanges().flatMap(r => {
    const row = r.getRow();
    const temp = [];
    for (let i = 0; i < r.getNumRows(); i++) {
      temp.push(row + i);
    }
    return temp;
  }).sort((a, b) => a - b);

  // 3. From data range, retrieve the row numbers except for the selected row numbers.
  const sheet = selection.getActiveSheet();
  const range = sheet.getDataRange();
  const rowNumbers = [];
  for (let r = 1; r <= range.getNumRows(); r++) {
    if (!selectedRows.includes(r)) rowNumbers.push(r);
  }
  console.log(rowNumbers); // Here, you can see the retrieved row numbers at the log.

  // 4. Retrieve the row values of the retrieved row numbers.
  // If you want to retrieve the row values of "rowNumbers", you can also the following script.
  const allValues = range.getValues();
  const values = rowNumbers.map(n => allValues[n]);
  console.log(values); // Here, you can see the values of row numbers at the log.
}
  • 作為使用所選范圍的重點,例如,當依次選擇第 3 行、第 1 行、第 2 行的單元格時,范圍列表返回單元格的順序。 所以在這個示例腳本中,檢索到的行號是排序的。

  • 例如,在運行上面的腳本時,當數據范圍為“ A1:C5”時,並且選擇單元格“ A1”,“ A3”和“ A5”時2, 4的行。

參考:

暫無
暫無

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

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