Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

201
Views
Hoja de cálculo de Google: ¿ocultar/mostrar cualquier fila que cumpla con la condición x en un grupo de filas al hacer clic en el botón?

Al hacer clic en "botón 1", me gustaría que el código verifique la primera celda (columna A) de las filas 38-58 y oculte la fila si la celda correspondiente está vacía y muestre si no lo está.

Vacío en este caso significa que la celda todavía tiene una fórmula pero está en blanco. Si eso no es posible, la "Condición Oculta" puede ser Celdas que no son un número.

Me gustaría combinarlo con el siguiente código, que oculta y muestra las filas 10 y 11 cuando las celdas C4 y D4 equivalen a 0 respectivamente.

 function button2(){ var ss = SpreadsheetApp.getActive(); var sheet = ss.getActiveSheet(); var cellRef1 = "C4"; var cellRef2 = "D4"; var cell1 = sheet.getRange(cellRef1); var cell2 = sheet.getRange(cellRef2); var value1 = cell1.getValue(); var value2 = cell2.getValue(); if (value1 == "0"){ sheet.hideRows(10); } if (value2 == "0"){ sheet.hideRows(11); } if (value1 != "0"){ sheet.showRows(10); } if (value2 != "0"){ sheet.showRows(11); }; };
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Puede ocultar/mostrar las filas de esta manera:

 function hide_unhide_rows() { var sheet = SpreadsheetApp.getActiveSheet(); var rows = sheet.getRange('a38:a58').getDisplayValues().flat(); rows.forEach((cell_value,i) => { let index = i+38; if (cell_value == '' && !sheet.isRowHiddenByUser(index)) sheet.hideRows(index); if (cell_value != '' && sheet.isRowHiddenByUser(index)) sheet.unhideRows(index); }); }

En cuanto a cómo se puede combinar con su código, simplemente puede agregar al final de su función esta línea:

 hide_unhide_rows();

O, aquí está el código combinado completo:

 function button2() { var sheet = SpreadsheetApp.getActiveSheet(); var value1 = sheet.getRange('c4').getValue(); var value2 = sheet.getRange('d4').getValue(); if (value1 == 0) { sheet.hideRows(10) } else { sheet.showRows(10) } if (value2 == 0) { sheet.hideRows(11) } else { sheet.showRows(11) } var rows = sheet.getRange('a38:a58').getDisplayValues().flat(); rows.forEach((cell_value, i) => { let index = i+38; if (cell_value == '' && !sheet.isRowHiddenByUser(index)) sheet.hideRows(index); if (cell_value != '' && sheet.isRowHiddenByUser(index)) sheet.unhideRows(index); }); }

Actualizar

Si tiene varios rangos para procesar, debe cambiar varias líneas en el código de esta manera:

 function button(){ var sheet = SpreadsheetApp.getActiveSheet(); var value1 = sheet.getRange('c4').getValue(); var value2 = sheet.getRange('d4').getValue(); if (value1 == 0) { sheet.hideRows(10) } else { sheet.showRows(10) } if (value2 == 0) { sheet.hideRows(11) } else { sheet.showRows(11) } var list = ['a27:a29','a41:a60','a66:a85']; // <----------------- here var rangeList = sheet.getRangeList(list).getRanges(); // <------- here for (var range in rangeList){ var rows = rangeList[range].getDisplayValues().flat(); var shift = +list[range].split(':')[0].slice(1); // <---------- here rows.forEach((cell_value, i) => { let index = (i + shift); // <-------------------------------- here if (cell_value == '' && !sheet.isRowHiddenByUser(index)) sheet.hideRows(index); if (cell_value != '' && sheet.isRowHiddenByUser(index)) sheet.showRows(index); }); } }

Si tiene demasiados rangos, el código puede funcionar lentamente. Hay una manera de mejorarlo un poco. Pero la operación de ocultar/mostrar es lenta por diseño. Entonces, el código será bastante lento de todos modos.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!