Hola amigo estoy realizando sumas excel con esta sentencia If Target.Address = "$A$1" Then Range("C1") = Range("A1") + Range("C1"), el detalle es que quiero hacer este proceso para toda las columna A y C me podrias ayudar ya que son 670 datos ingresados y cada uno de ellos debe realizar esto que se digite en A1 y se almacene la suma en C1 ayudame porfavor gracias
Respuesta de calvuch
1
1
calvuch, las fallas constantes de esta web me cansaron!! me voy a...
Prueba esto en el evento change de la hoja en donde deseas que se aplique Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long Dim c As String c = Target.Address c = Mid(c, 2, 1) If Target.Address = "$A:$A" Then Exit Sub If c = "A" Then i = Selection.Row - 1 If Target.Address = "$A$" & i Then Range("C" & i) = Range("A" & i) + Range("C" & i) DoEvents End If End Sub
Gracias amigazo por el aporte me sirve de mucho y quisiera que me expliques como esta trabajando la sentencia me que diste, no le entiendo muy bien es que soy nuevo en esto y quisiera que me ayudes a entender gracias por el aporte... 10 puntos
Veamos Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long ' declaracion de variable Dim c As String ' declaracion de variable que almacenara la referencia de posición de celda en donde ingresas el dato c = Target.Address ' le pasamos le referencia de la celda en donde digitaste el dato c = Mid(c, 2, 1) ' extraemos el primer caracter de la referencia desde la posicion 2 de la cadena "$A: seria = A If Target.Address = "$A:$A" Then Exit Sub ' indicamos que si selecionas la columna A completa no corra el macro pues daria error al no tener un solo valor que evaluar If c = "A" Then ' le indicamos que si la variable c contiene A ( estariamos seguros que el dato se intorujo en esa columna, entonces continue el proceso i = Selection.Row - 1 ,le pasamos el número de la fila a la variable i forzamos a tomar la fila en que se introujo el dato, ya que al dar enter el puntero se pasa a la fila siguiente a la que modificamos, pues al decrile -1 indicamos que desde la fila actual tome la anterioir If Target.Address = "$A$" & i Then Range("C" & i) = Range("A" & i) + Range("C" & i) Decimos que si la celda A & i en donde i puede ser cualquier fila de 1 a 65536 entonces: Tome la celda (c & i) y le asigne el valor de (a & i) + el valor contenido en si misma (c & i) DoEvents ' linea que evita que se cuelgue Excel si es que son muchas filas, ya que esta instrucción le pasa el control momentáneamente al sistema operativo de Windows End If ' termina la instrucción End Sub Eso seria