Macro para insertar fórmula en varias celdas según condicional

Les pido ayuda para generar una macro que haga lo siguiente:

En C3:C hay diferentes números de código que se repiten en más de una ocasión. Ejemplo: En C40:C42 y C80 está el código14-1774-OC19.

Necesito que al colocar la palabra "Alta" en L, en ES la macro ponga una fórmula específica en todas las filas en donde esté el código que hay en C. Ejemplo:

  • En C40:C42, C80 está el código 14-1774-OC19
  • En L40 pongo la palabra "Alta". Entonces la macro hace lo siguiente:
    • En S40 coloca la fórmula =K40-$K$40
    • En S41 coloca la fórmula =K41-$K$40
    • En S42 coloca la fórmula =K42-$K$40
    • En S80 coloca la fórmula =K80-$K$40

Nótese que la fórmula es la resta del número que hay en la columna K de cada fila involucrada, menos el número que hay en la columna K de la fila en donde coloqué la palabra "Alta".

Respuesta
1

Pon el siguiente código en los eventos de tu hoja

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("L:L")) Is Nothing Then
    Dim i As Long
    If Target.CountLarge > 1 Then Exit Sub
    If UCase(Target.Value) = UCase("Alta") Then
      For i = Target.Row To Range("C" & Rows.Count).End(3).Row
        If Range("C" & i).Value = Range("C" & Target.Row).Value Then
          Range("S" & i).Formula = "=K" & i & "-$K$" & Target.Row
        End If
      Next
    End If
  End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro
  5. Regresa a la hoja de excel, y escribe "Alta" en alguna celda de la columna "L"

Dante, en primer lugar gracias, la macro funciona. Sin embargo veo que omití solicitar algo (perdón...). Que si en L borro la palabra "Alta" o la cambio por otra palabra, la macro borre las fórmulas ingresadas en S relacionadas al código en C. En otras palabras: Si pongo "Alta" la macro ingresa las fórmulas (como lo hace ahora), pero si borro "Alta" o la cambio por otra palabra, la macro borra las fórmulas... Gracias

Prueba así:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("L:L")) Is Nothing Then
    Dim i As Long
    If Target.CountLarge > 1 Then Exit Sub
    For i = Target.Row To Range("C" & Rows.Count).End(3).Row
      If Range("C" & i).Value = Range("C" & Target.Row).Value Then
        If UCase(Target.Value) = UCase("Alta") Then
          Range("S" & i).Formula = "=K" & i & "-$K$" & Target.Row
        Else
          Range("S" & i).Value = ""
        End If
      End If
    Next
  End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas