Excel: establezca la fórmula predeterminada para cada celda de la columna

Excel: establezca la fórmula predeterminada para cada celda de la columna

Tengo una columna con la siguiente fórmula en cada celda que calcula la diferencia en kilómetros entre las dos celdas a la izquierda de cada celda:

=IF(AND(INDIRECT(ADDRESS(ROW(),COLUMN()-2))<>"", INDIRECT(ADDRESS(ROW(), COLUMN()-1))<>""), INDIRECT(ADDRESS(ROW(),COLUMN()-1))-INDIRECT(ADDRESS(ROW(),COLUMN()-2)), "")

celda vacía sin fórmula cuando inserto una nueva fila

Mi problema es que cada vez que inserto una nueva fila entre los datos existentes, todas las celdas están vacías en esa fila y necesito colocar este código manualmente en la celda vacía.

¿Puedo configurar cada celda de una columna (excluyendo el encabezado) con una fórmula específica?incluso cuando inserto una nueva fila?

Intenté configurar la columna como una tabla y logré completar automáticamente las celdas cada vez que inserté una nueva fila; sin embargo, tengo otras columnas que también quiero autocompletar y Excel no me permite insertar una nueva fila si Hago más de una columna por tabla.

Respuesta1

Aquí hay una pequeña demostración que puede adaptar a su esquema real. En la demostración:

  1. la columna de interés es la columnaB
  2. si se inserta más de una fila, no pasará nada
  3. si se inserta una fila debajo del área de datos, no pasa nada
  4. si se elimina una fila, no pasa nada
  5. si se inserta una fila en medio de los datos, la celda en la columnaBse completará con la fórmula anterior o la fórmula siguiente
  6. si no hay ninguna fórmula encima o debajo de la nueva celda, no pasa nada

Inserte el siguiente sub en el área de código de la hoja de trabajo:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range, r1 As Range, r2 As Range

    Set r = Target
    If r.Rows.Count > 1 Then Exit Sub
    If r.Columns.Count <> Cells.Columns.Count Then Exit Sub
    If r.Row = 1 Then Exit Sub

    Set r1 = Intersect(r, Columns(2))
    If r1.Value <> "" Then Exit Sub

    If r1.Offset(-1, 0).HasFormula Then
        Application.EnableEvents = False
            r1.Offset(-1, 0).Copy r1
        Application.EnableEvents = True
        Exit Sub
    End If

    If r1.Offset(1, 0).HasFormula Then
        Application.EnableEvents = False
            r1.Offset(1, 0).Copy r1
        Application.EnableEvents = True
        Exit Sub
    End If

End Sub

Respuesta2

Iba a publicar este video, pero evidentemente tengo que escribir al menos 30 caracteres.

¿Qué tal "Aquí hay una manera fácil de hacerlo"? Maldita sea, eso es sólo 29.

Para cualquier persona interesada, el ícono "Insertar imagen" no acepta un .mov, pero hay unsitio web bastante buenoque convertirá archivos de video en GIF animados.

ingrese la descripción de la imagen aquí

información relacionada