Visual Basic para Aplicaciones - VBA EXCEL CODIGO EFICIENTE PARA CAMBIAR DATOS EN CELDAS

Life is soft - evento anual de software empresarial
   
Vista:
Imágen de perfil de GERARDO

VBA EXCEL CODIGO EFICIENTE PARA CAMBIAR DATOS EN CELDAS

Publicado por GERARDO (18 intervenciones) el 12/07/2015 20:42:25
Hola

Tengo una tabla en Excel , en 2 columnas tengo datos numéricos, pero estos se repiten demasiado,Estos datos los recorro con un for y aplico una formula para cada uno de ellos, mi duda es si hay otra forma mas eficiente de hacer este trabajo.

Como ya dije varios se repiten por lo cual aplico la formula a el mismo dato varias veces, es decir tengo el numero 115001 y lo tengo por toda mis 2 columnas varias veces , y aplico la formula para dicho dato por cada celda que lo contiene, ¿Se puede hacer de otra forma que no sea con bucles? ¿Tal vez se pueda extraer cada dato único de las dos columnas, y a cada dato único aplicar la formula y después buscar los datos repetidos y pegar la formula?

De antemano gracias por sus comentarios y sugerencias

Perdonen la mala redacción xD
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

VBA EXCEL CODIGO EFICIENTE PARA CAMBIAR DATOS EN CELDAS

Publicado por Eng. Zeus Alberto Paez Renteria (5 intervenciones) el 21/07/2015 01:37:17
Bueno se me ocurre la siguiente idea....

Si creas un funcion custom y se la aplicas a un rango de celdas y evitas el blucle.

En el siguiente enlace encuentras como crear la funcion y la agregas al personalbook de excel.

https://support.office.com/en-sg/article/Create-Custom-Functions-in-Excel-2007-2f06c10b-3622-40d6-a1b2-b6748ae8231f

1
2
3
4
5
6
7
8
Function Discount(quantity, price)
 If quantity >= 100 Then
 Discount = quantity * price * 0.1
 Else
 Discount = 0
 End If
 Discount = Application.Round(Discount, 2)
End Function

Utilizandola como esta, claro que primero la tendrias que definir en el personal

Aqui mandan a una variable Answer... pero quiza tu la necesitas enviar a una celda... o a un rango.

Asi le aplicas la funcion a un rango y la respuesta la envias a otro rango.

1
2
3
4
5
6
Sub UseFunction()
    Dim myRange As Range
    Set myRange = Worksheets("Sheet1").Range("A1:C10")
    answer = Application.WorksheetFunction.Min(myRange)
    MsgBox answer
End Sub


After you have created the functions you need, click the Microsoft Office Button, and click Save As.

In the Save As dialog box, open the Save As Type drop-down list, and select Excel Add-In. Save the workbook under a recognizable name—such as MyFunctions—in the AddIns folder. (The Save As dialog box will propose that folder, so all you need to do is accept the default location.)

After you have saved the workbook, click the Microsoft Office Button, and click Excel Options.

In the Excel Options dialog box, click the Add-Ins category.

In the Manage drop-down list, select Excel Add-Ins. Then click the Go button.

In the Add-Ins dialog box, select the check box beside the name you used to save your workbook, as shown below.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar