es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Google Spreadsheets | Cómo obtener la primera y última celda activa en un rango, y luego devolver una celda desplazada desde esa celda.

Quiero intentar automatizar un proceso muy tedioso con el que he estado trabajando durante un tiempo en mis gráficos de Gantt.

Puedo obtener el rango del que quiero extraer, pero lo que realmente necesito son las celdas desplazadas de ese rango correspondientes a la primera y última celda activa en el rango.

Las columnas B y C son lo que necesito automatizar. Representan los valores de la fila 1 en la primera y última celda activa por fila.

Estoy familiarizado con cómo hacer lo contrario, poblar un rango con algo basado en los primeros y últimos valores de la columna B/C. Sin embargo, en mis hojas de cálculo, “x” a menudo tiene valores diferentes que se alimentan en otras fuentes de código y a menudo son cambiados por personas que no soy yo, por lo que no tengo muchas opciones para cambiar mi flujo de trabajo de esta manera.

Estoy dispuesto a proporcionar cualquier información adicional, una solución en fórmulas de celdas o en scripts está perfectamente bien, de hecho, los scripts serían preferibles, pero estaría contento con cualquiera. ¡Gracias por leer!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para automatizar el proceso de recuperar los valores de la primera y última celda activa en las columnas B y C, puedes usar Google Apps Script. Aquí hay un fragmento de código de ejemplo que debería ayudarte:

    function getFirstLastValues() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var range = sheet.getRange("A3:F9"); // reemplaza con el rango deseado
    
      var firstValues = [];
      var lastValues = [];
    
      range.getValues().forEach(function(row) {
        var firstValue = "";
        var lastValue = "";
    
        for (var i = 1; i < row.length; i++) {
          if (row[i] != "") {
            if (firstValue === "") {
              firstValue = row[i];
            }
            lastValue = row[i];
          }
        }
    
        firstValues.push([firstValue]);
        lastValues.push([lastValue]);
      });
    
      sheet.getRange("B3:B9").setValues(firstValues);
      sheet.getRange("C3:C9").setValues(lastValues);
    }
    

    Este código:

    1. Obtiene la hoja de cálculo activa y el rango deseado.
    2. Itera a través de cada fila dentro del rango, verificando el valor de cada celda en las columnas B a F.
    3. Si una celda no está vacía, establece ese valor como el primer valor para esa fila (si aún no se ha establecido), y establece el valor como el último valor para esa fila.
    4. Agrega los valores primero y último para cada fila en dos matrices separadas (firstValues y lastValues).
    5. Establece estas matrices como los valores para las celdas correspondientes en las columnas B y C usando setValues().

    Puedes modificar el rango en la línea 3 para que coincida con tu rango deseado. Una vez que ejecutes este script, los valores de la primera y última celda activa en las columnas B y C se deberían llenar automáticamente.

Comments are closed.