Скрыть строки в Google Sheets, если столбец B пуст, а не 0? - PullRequest
0 голосов
/ 30 сентября 2019

Я использовал скрипт, предоставленный JPV для сокрытия строк, если ячейка в столбце B пуста в этой строке:

function onEdit() {

var sheets = ["MyProgress"];
for (var i = 0, sLen = sheets.length; i < sLen; i++) {
    var sheet = SpreadsheetApp.getActive()
        .getSheetByName(sheets[i])
    var val = sheet.getRange('B:B')
        .getValues();
    for (var j = 0, vLen = val.length; j < vLen; j++) {
      sheet.showRows(j + 1)
        if (!val[j][0]) sheet.hideRows(j + 1)
        }
    }



}

Проблема в том, что этот код также скрывает строкуесли данные в ячейке B содержат число '0'

Может ли кто-нибудь помочь / улучшить этот ответ, пожалуйста?

PS: значения в столбце получены из другой ячейки (отформатированной в процентах):

=iferror(AZ2/CX2,)

И значения в столбцах AZ и CX получаются в виде запроса:

=transpose(QUERY(Task!$B$3:$E$10011,"Select E where B='"& A2 &"'",0))

Ответы [ 3 ]

0 голосов
/ 30 сентября 2019

Один обходной путь, не идеальный, который я использовал, - это (используя ФИЛЬТРЫ). Трудно редактировать данные на другом листе, так как он продолжает перелистывать на / с листов:

  function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var first = ss.getSheetByName("MyProgress");

  first.activate();
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('B1').activate();
  var criteria = SpreadsheetApp.newFilterCriteria()
  .whenCellNotEmpty()
  .build();
  spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(2, criteria);
  var second = ss.getSheetByName("Task");
  second.activate();

};
0 голосов
/ 30 сентября 2019

@ Предложение Phat Tran Ky почти выполнило свою задачу, но в этом условии отсутствовало равное val[j][0] != 0.

Поэтому попробуйте изменить это:

if (!val[j][0]) sheet.hideRows(j + 1)

Для этого:

if (!val[j][0] && val[j][0] !== 0) sheet.hideRows(j + 1)
0 голосов
/ 30 сентября 2019

Поскольку !0 и !'' имеют одинаковый результат, истинно при условии

if (!val[j][0]) sheet.hideRows(j + 1)

Таким образом, вы просто добавляете еще одно условие, чтобы пропустить значение 0

if (!val[j][0] && val[j][0] != 0) sheet.hideRows(j + 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...