Saltar al contenido

Macro borra aleatoriamente segun varios criterios: selección columna, valores y sumatorio de otra co


West Mart

Recommended Posts

publicado

Estimados amigos:

En un archivo Excel tengo una tabla de datos bastanteextensa que importo de otra aplicación y genera un archivo con numerosas hojasy miles de registros.

A modo de ejemplo os adjunto un libro que ya contiene unamacro que me permite eliminar filas de manera aleatoria en función de un rangoseleccionado: desde fila, hasta fila y el número de líneas que se deseanborrar,pero necesitaría concretar más la macro y que haga también lo siguiente:Que para una hoja concreta, seleccionando una columna y un concepto existenteen celdas de esa columna, y un importe sumatorio de valores de otra columna quecumplan ese criterio, me borre aleatoriamente filas hasta obtener el importedeseado más cercano.

Tendría que tener la opción de seleccionar en textbox lacolumna, el contenido de la celda, la columna sobre la que hace el sumatorio yel importe de ese sumatorio.

A modo de ejemplo, de los datos de la hoja adjunta: Que dela fila C con celdas con contenido "Barcelona" borre aleatoriamente estasfilas hasta que el sumatorio total en la columna "R" para esaselección sea 40.000 euros o el importe más cercano.

Les agradecería mucho su colaboración porque mesimplificaría mucho el trabajo.

Muchas gracias.

Saludos.

ejemplo para macro que borre aleatoriamente segun columna y valor seleccionado.zip

publicado

Re: Macro borra aleatoriamente segun varios criterios: selección columna, valores y sumatorio de otra col

Buenas,

Creo que quizás el planteamiento que haces no sea el más adecuado en cuanto a la forma en que debe trabajar el código.

Me explico:

Tú no puedes ir eliminando filas en busca de un sumatorio total, hasta que previamente no sepas cuáles de ellas forman parte de ese sumatorio. Por eso, lo primero que debes buscar es cómo definir qué filas forman parte del mismo y una vez identificadas, eliminar el resto...

Para identificarlas se puede utilizar la herramienta "Solver" a través de una fórmula de SUMAPRODUCTO con los importes y una lista de "1" en la columna de al lado para que los utilice en forma binaria. De esta manera, calcula cuales son los valores que formarían la suma más aproximada al objetivo.

Mira a ver si te ayuda a plantearte la tarea...

Un saludo,

Tese

publicado

Re: Macro borra aleatoriamente segun varios criterios: selección columna, valores y sumatorio de otra col

Gracias por tu respuesta Tese1969.

Voy a probar como me indicas, pero a bote pronto, no sé cómo podré luego borrar filas de manera aleatoria que sumen un importe concreto.

Pero antes de nada voy a intentar hacer lo que me indicas.

Saludos.

publicado

Re: Macro borra aleatoriamente segun varios criterios: selección columna, valores y sumatorio de otra col

La clave, amigo West Mart, es que al localizar qué filas forman parte de ese sumatorio las marques de alguna manera (color, un texto en una columna contigua, etc....lo que se te ocurra)....después simplemente le pegas una pasada a la columna y eliminas las que no tengan esa marca....

Es una opción, pero seguro que hay otras....

Un saludo,

Tese

publicado

Re: Macro borra aleatoriamente segun varios criterios: selección columna, valores y sumatorio de otra col

Entiendo lo que me planteas, pero sólo quiero borrar aleatoriamente una parte de la selección, es decir, de las filas seleccionadas o marcadas que suman una cantidad X, sólo quiero borrar una parte de esas filas que suman la cantidad X-Y, y ese borrado es aleatorio.

Seguiré buscando alternativas.

gracias por tu atención.

saludos.

  • 2 weeks later...
publicado

Re: Macro borra aleatoriamente segun varios criterios: selección columna, valores y sumatorio de otra col

Buenas tardes:

He modificado la macro de manera que primero aplico un filtro y la macro debería ejecutarse sólo en las filas visibles (no ocultas en el filtro). Sin embargo se aplica borrando también las filas ocultas. ¿me podrían indicar qué es lo que está mal?

gracias.

Adjunto la macro

Sub Prueba_Borrado_de_filas_de_manera_aleatoria()

Dim fila_inicial As Double

Dim fila_final As Double

Dim Cantidad_Total_Filas As Double

Dim Cantidad_Filas_Borrar As Double

Dim fila_elegida As Double

Dim Fila_Borrar As String

Dim Filas_Elegidas As String

'Iniciamos randomize para que funcione el Rnd

Randomize

'obtenemos un registro al azar, para lo cual,

'informamos primero de la fila inicial y final

fila_inicial = InputBox("Ingrese la Fila Inicial", "Fila Inicial")

fila_final = InputBox("Ingrese la Fila Final", "Fila Final")

'Calcula la Cantidad Total de Filas

Cantidad_Total_Filas = (fila_final - fila_inicial + 1)

'indicar la columna que se selecciona y el texto que se quiere filtrar

'Columna_Criterio = InputBox("Indique el número de la columna que se filtra")

'Criterio_filtro = InputBox("Indique el texto que se quiere filtrar")

Selection.AutoFilter Field:=3, Criteria1:="BARCELONA"

'Cantidad de Filas a Borrar

Ingresa_Cantidad_Filas:

Cantidad_Filas_Borrar = InputBox("Ingrese la Cantidad de Filas que desea Borrar, la Cantidad debe ser menor o igual a " & Cantidad_Total_Filas, "Cantidad de Filas a Borrar")

If Cantidad_Filas_Borrar > Cantidad_Total_Filas Then

MsgBox "La Cantidad de Filas que desea borrar es mayor que la cantidad Total de Filas del rango, por favor intente Nuevamente", vbExclamation, "Error en Dato"

GoTo Ingresa_Cantidad_Filas

End If

'generamos el número de la fila al azar

Do While Cantidad_Filas_Borrar > 0

fila_elegida = Int((fila_final - fila_inicial + 1) * Rnd + fila_inicial)

'Guardo en una Variable la Fila Elegida

Fila_Borrar = fila_elegida

'Verifico que la Fila a Borrar no se repita

If InStr(1, Filas_Elegidas, Fila_Borrar) = 0 Then

'Guardo la Fila elegida a Borrar en una variable

Filas_Elegidas = Filas_Elegidas & "-" & fila_elegida & ""

'Nos situamos en la fila elegida

Rows(fila_elegida).ClearContents

'Decremento la variable Cantidad_filas_Borrar

Cantidad_Filas_Borrar = Cantidad_Filas_Borrar - 1

End If

Loop

End Sub

publicado

Re: Macro borra aleatoriamente segun varios criterios: selección columna, valores y sumatorio de otra col

Tengo 2 ejemplos para seleccionar celdas que sumen una determinada cantidad, uno muy sencillo que tiene limitacion en el numero de celdas resultantes, no en el numero total, el otro puede decirse que es ilimitado, no se cual prefieras.

Para borrar las filas lo mas practico es aplicar un filtro y eliminar las filas resultantes, es rapidismo.

Los codigos publicados en el foro deben ir envueltos en etiquetas segun las normas del foro.

Para ti debe ser obvio pero nos ayudaria que subas de nuevo el ejemplo con el codigo incluido y el resultado esperado.

publicado

Re: Macro borra aleatoriamente segun varios criterios: selección columna, valores y sumatorio de otra col

Buenas tardes Armando Montes:

En primer lugar quiero disculparme por no haber incluido la etiqueta en el código HTML enviado.

Por otra parte, en esta respuesta adjunto el archivo con la macro que envié ayer, así como el archivo de ejemplo.

En cuanto a los ejemplos que mencionas, ¿dónde puedo localizarlos?

Gracias.

Saludos.

ejemplo para macro que borre aleatoriamente segun columna y valor seleccionado.zip

  • 1 month later...
publicado

Hola Armando:

Saludandote desde Mexico, D.F. en relacion a los ejemplos que mencionas me gustaria en la medida de lo posible si pudieras compartir el ilimitado ya que tengo un caso similar al de West Mart pero requiero de un mayor numero de registros.

Esperando tu valioso apoyo me despido, gracias

Salu2

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.