VBA llenar fórmula en celda si se cumple cierta condición.
Hola Aprendemos,
Finalicé la pregunta y me dio un error que tenía el servidor y la dio por finalizada sin puntuarte, lo cual es sumamente injusto. Por tal motivo vuelvo a generarla, no encontré otra forma.
Mi pregunta era:
Estaría necesitando una macro que me llene una celda con la fórmula Sum, si una celda en la misma fila tiene una X. Deseo hacer una planilla, supongamos con 6 columnas, y que si en la primer columna tiene una la celda tiene una “x”, que en esa misma fila se llenen las columnas 4, 5 y 6 con la fórmula Suma. Y quisiera que esa fórmula de Suma vaya a los valores hacia arriba de la celda que contiene la suma, hasta la fila anterior que tenga la “x”. Algo así:
A B C D E F
1 5
2 x 5
3
4 2 3 1
5
6
7 x 2 3 1
En este caso al marcar la celda A7 con una "x", quisiera que me llene la celda D7, E7 y F7 con la fórmula suma. Siendo la D7 "=suma(d6:d5)" hasta la fila 5, dado que en la fila 4 hay otra x y otra fila con sumatorias.
Estuve tratando de configurar algo en VBA pero realmente esto me ha superado. La idea es que la macro sea automática.
Muchas Gracias!!!!
Tu Respuesta final:
Private Sub Worksheet_Change(ByVal Target As Range)
'Por.DAM
If Not Intersect(Target, Range("A:A")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Select Case UCase(Target)
Case ""
Range(Cells(Target.Row, "D"), Cells(Target.Row, "F")).ClearContents
For i = Target.Row + 1 To Range("A" & Rows.Count).End(xlUp).Row
If UCase(Cells(i, "A")) = "X" Then
Cells(i, "A") = "X"
End If
Next
Case "X"
If Target.Row > 1 Then
fin = Target.Row - 1
ini = 1
For i = Target.Row - 1 To 1 Step -1
If UCase(Cells(i, "A")) = "X" Then
ini = i + 1
Exit For
End If
Next
Cells(Target.Row, "D") = "=sum(R" & ini & "C4:R" & fin & "C4)"
Cells(Target.Row, "E") = "=sum(R" & ini & "C5:R" & fin & "C5)"
Cells(Target.Row, "F") = "=sum(R" & ini & "C6:R" & fin & "C6)"
End If
End Select
End If
End Sub
Te pido me digas si sabés de alguna otra forma en caso que me vuelva a suceder.
Gracias nuevamente!