Macro que resta 2 columnas celda por celda.

Otra vez necesitando de tu gran ayuda y tu valioso tiempo. Tengo una operación dentro de la macro que resta la Columna I - Columna K y pone el resultado en la columna L... Por ejemplo

L2 = I2 - K2

L3= I3 - K3

etc....

Tengo la siguiente macro

Sub resta()
Dim i As Integer
Dim valor_i As Double
Dim valor_k As Double
i = 1
Range("L" + CStr(i)).Select
valor_i = Range("I2" + CStr(i)).Value
valor_k = Range("K2" + CStr(i)).Value
While (valor_f <> 0 And valor_k <> 0)
valor_i = Range("I2" + CStr(i)).Value
valor_k = Range("K2" + CStr(i)).Value
Range("L" + CStr(i)).Value = valor_i - valor_k
i = i + 1
Wend
End Sub

Pero no me muestra nada, tal vez porque mi valor de la Columna I es asi 17,345.00 y el de la K es asi 13000,00 anteriormente ya te había comentado esto, de como pasar estos valores al formato de la columna l, la respuesta fue algo asi:

Si lo quieres en una celda
range("A5") = format(tuvalor, "#,##0.00")
Si lo quieres en el mismo valor
tuvalor = format(tuvalor, "#,##0.00")

Sinceramente no se como implementar esta formula, o si mi macro este mal y por eso no me hace nada.

1 respuesta

Respuesta
1

Primero prueba la macro con 2 números que tengan el mismo formato

Ahora, el número que tienes en la columna K tiene, ¿cómo separador de decimales?

Vas a tener que pasar esos números para que tengan el formato con un punto como separador de decimales, de lo contrario te va a tomar ese dato como un texto y si es un texto no lo puedes restar.

Para quitar la coma y poner un punto, simplemente dale reemplazar, por .

Haz una grabación de una macro de la función buscar y reemplazar, toma el código y ponlo en tu macro, o bien, haz el cambio en excel antes de ejecutar la macro.

Saludos. Dam

Hola Dam, te comento realice la prueba con 2 números con el mismo formato

10,000.00 - 5,000.00 como resultado solo me arroja un 5

Asi es la columna K es con decimales y por lo pronto los decimales están separados con , es decir 10000,00 hice la función buscar y remplazar en efecto me remplaza la , por el . pero me falta la coma de los miles, un poco complicado no?

Tenia un error en mi macro en cuanto a las variables ya lo corregí, solo me hace la resta de algunas columnas y me hace mal la operación. Sigo pensando en que es el maldito formato, pero ahora si no se como convertirlo ya que ni el copiar formato de la columna I a la Columna K me funciona.

Gracias

No sabía que tenías . (punto) como separador de millares, entonces primero tienes que decirle que reemplace el punto por nada, es decir:

Buscar: .

Reemplazar: (no pongas nada)

Si lo haces en la macro en replace pon "" doble comillas seguidas

Con lo anterior eliminamos el . (punto) del número

Ahora cambia la, (coma) por . (punto), realiza la resta y ya no deberías tener problemas.

Saludos. Dam

Hola:

Ya hice la prueba, grabando la macro y siguiente los pasos que me indicas pero me manda este error. No se puede encontrar datos para reemplazar. Compruebe si ha definido correctamente el formato y los criterios de búsqueda. Si esta seguro que hay datos coincidentes en este libro, puede tratarse de un ahora protegida. No se puede reemplazar datos en una hoja de calculo protegida.

Te anexo el archivo donde tengo los datos, con la explicación para ver si me puedes seguir ayudando, que esto me tiene vuelta loca:

<a>https://www.dropbox.com/s/6st8a1p4thcksyb/NUMEROS.xlsm</a>

Muchas gracias por seguir ayudándome.

:)

Dam, realize un código para mi macro , creo que es algo lo que estoy buscando, el realidad si me hace la resta pero la sigue haciendo mal no se a que se deba... me podrías ayudar por favor.

Sub resta()
Dim rng, cel As Range
ul = Range("J" & Rows.Count).End(xlUp).Row
Set rng = Range("J2:J" & ul)
For Each cel In rng
cel.Replace ".", ""
x = cel - cel.Offset(, 1)
cel.Offset(, 2) = x
Next
End Sub

Saludos Jazz

Así como me enviaste tu archivo, pon la siguiente macro y te hará la resta de I - K y te pondrá el resultado en la columna L

Sub restadam()
For i = 2 To Range("I" & Rows.Count).End(xlUp).Row
Cells(i, "L") = Cells(i, "I") - Cells(i, "K")
Next
End Sub

Prueba y me comentas.

Saludos. Dam

Hola Dam!
Respecto al otro post en efecto era la misma pregunta... probe la macro pero me hace la operacion de una manera extraña.
Por ejemplo me arroja este resultado:
COLUMNA I COLUMNA K COLUMNA L
35,359.00 18058,32 -18022,961
12,286.00 6416,61 -6404,324
11,227.00 6187,5 -6176,273
12,517.00 5750,07 -5737,553
21,965.00 3023,19 -3001,225
No se a que se deba este error. La probe en otro libro con los mismo numeros que tengo en mi archivo original y me da los mismos resultados.

Eh detectado el error, por ejemplo en la primer resta

COLUMNA I COLUMNA K COLUMNA L
35,359.00 18058,32 -18022,961

El valor 35,359.00 me lo esta tomando como si fuera 35.36 (me lo redondea automáticamente) por eso a la hora de restar la cantidad 18058,32 me da como resultado 18022,961 existe alguna forma de corregir esto??

Por eso te comenté, así como me enviaste el archivo, yo tengo esto en el archivo que me enviaste:

Costo Capital Anterior Venta Nueva
35,359.00 18058.32 17300.68

Es decir el costo y el capital tienen el mismo formato

Y ahora me dices esto

35,359.00 18058,32

Las 2 cantidades no tienen el mismo formato. Primero convierte 18058,32 a 18058.32 Reemplaza manualmente la coma por el punto y después ejecuta la macro.

Saludos. Dam

Hola!

El archivo que te envíe tenia el dato de la coma en capital anterior jojo, trate de convertir toda la columna, pero no me hace nada.

Sub reemplazo()
Range(Selection, Selection.End(xlDown)).Select
Range("K2:K1048576").Select
Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub

Esto con el propósito de hacer funcionar tu macro, al momento de grabar la macro si me lo permite y me muestra los cambios que se realizoaroin cuando pongo el código en mi macro no me funciona, estaré cometiendo u omitiendo algún paso?

Saludos y perdón por mi insistencia!! Una gran disculpa.

No tienes que disculparte, es trabajo y entiendo tu preocupación, mejor vamos a ocuparnos de resolverlo.

Y si en lugar de ejecutar el reemplazo con una macro lo haces con la funcionalidad de excel, es decir, selecciona la columna K, presiona Ctrl + L

Buscar:,

Reemplazar por: .

Reemplazar todos y revisa que reemplace la coma por el punto

Y después ejecutas la macro de la resta

Revísalo y me cuentas.

Saludos. Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas