Jump to content

Eliminar fila en matriz (array)


Recommended Posts

Hola, un saludo a tod@s.

Mi consulta es muy sencilla (o no) pero no he visto nada relacionado con esto por Google, quizás desconozco las palabras exactas.

Me explico, quiero eliminar una fila entera de una array de varias columnas de forma similar a como lo hace nativamente Excel, que seleccionas unas celdas, botón derecho, Eliminar, y el te desplaza todas las de debajo arriba.

He probado con un bucle y subir todo lo de debajo arriba una fila copiando datos, pero lo veo demasiado, y puede que haya algún comando o algún método que lo haga y yo lo desconozca.

Espero haberme explicado con claridad.

No subo ejemplo porque mi pregunta es más bien teórica, con que alguien me apunte algo ya me buscaría la vida.

Muchas gracias.

Edited by xboxfile
Link to post
Share on other sites

Hasta donde yo se, no existe nada parecido a Remove MiArray (i).

Existen varios trucos en función de cada situación, por ejemplo:

  • Pasar el array a una hoja, eliminar la fila y volver a cargar el array
  • Marcar el elemento de alguna manera, cero, blanco, ..., para poder identificar el elemento y actuar en consecuencia
  • ....
Edited by Antoni
Link to post
Share on other sites

Muchas gracias Antoni, como siempre, un placer saludarte. 

Es lo que me temía, lo marcaré y al pasarlo a la hoja omito esa fila y ya está. 

La idea es que aprovechando que se puede pasar a la hoja co un simple

MiRango= miarray te lo pasa sin bucles ni nada. 

Se ha intentado, gracias y hasta otra. 

Tema solucionado

Link to post
Share on other sites

Hola. Todavía estoy a tiempo de publicar.

Por si alguien llega a este post buscando eliminar filas.

Voy a poner el código que me he hecho para eliminar filas de una array, ya que no se puede directamente tal y como lo hace Excel.

En mi caso la Array se llama "IdLibres". Evidentemente, está dentro de un proyecto más grande, pero por si solo le puede valer a cualquiera cambiando a sus nombres de array.

Muchas gracias.

Private Sub BorraFilas ()

Dim i, j, n, uFila, uCol, Fila, Col, Id As Integer
Dim IdLibres, IdLibresTmp() As Variant

'Para generar nuevo Id antes buscamos en array "IdLibres" Id's libres borrados anteriormente
Do While IdLibres(i, ListActivoP0 - 1) <> Empty '<- 4 columnas de más a la derecha
    Id = IdLibres(i, ListActivoP0 - 1)

    If Id > 0 Then '<- Si había un Id disponible
        IdLibres(i, ListActivoP0 - 1) = "XXBorrarXX" '<- Lo marcamos para borrarlo luego
        Exit Do
    End If
    i = i + 1
Loop

'Subimos todas las filas borradas en array "IdLibres" usando una memoria temporal igual
IdLibresTmp = IdLibres'<- Copiamos la array
uFila = UBound(IdLibres): uCol = UBound(IdLibres, 2) '<- Guardamos número de filas y columnas para antes de redimensionar
ReDim IdLibres(uFila, uCol) '<- Borramos la array master

'Volcamos desde la array temporal a la buena todo menos lo que tiene marca "XXBorrarXX"
For j = 0 To NumListBoxP0 - 1
    i = 0: Fila = 0
    Do While IdLibresTmp(i, j) <> Empty
        If IdLibresTmp(i, j) <> "XXBorrarXX" Then
            IdLibres(Fila, j) = IdLibresTmp(i, j)
            Fila = Fila + 1
        End If
        i = i + 1
    Loop
Next j

End Sub

 

TEMA SOLUCIONADO

Link to post
Share on other sites
En 28/11/2020 at 14:57 , xboxfile dijo:

Me explico, quiero eliminar una fila entera de una array de varias columnas de forma similar a como lo hace nativamente Excel, que seleccionas unas celdas, botón derecho, Eliminar, y el te desplaza todas las de debajo arriba.

He probado con un bucle y subir todo lo de debajo arriba una fila copiando datos, pero lo veo demasiado, y puede que haya algún comando o algún método que lo haga y yo lo desconozca.

Hola

Te lo dejo mas facil... no cargues en la matriz esa(s) fila(s)

 

Saludos 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Crear macros Excel

  • Posts

    • Hola @Haploxcomo estás. Jóse estuve viendo tu propuesta y la probé primero en el archivo que me envías y funciona. Pero cuando la copio al archivo original no funciona. Estuve observando detalladamente y creo que encontré el motivo. En el original las celdas K4 y M1 de cada hoja son fórmulas. que se actualizan de otras celdas dentro de la misma hoja. Ese detalle está afectando que no se ejecute la macro y no lo puse en el primer archivo. Disculpas! Que se puede hacer? Hice todo lo que indicas, copiar la macro en cada hoja, etc... Gracias Lo que quería decir es que la macro original que hiciste y la adaptación que hice para con las columnas E y F de Listado General funcionan perfectamente y es la que copié en el post, son dos macros. Por supuesto al copiar la segunda en la primera me da error de ambiguedad por que el evento ya existe. Entonces era unir ambas en un solo evento.  Copia de BUSCAR DATO EN OTRA HOJA 2021 (1).xlsm
    • las columnas que mencionas fueron solo para tener una "visión" de las consideraciones necesarias para distinguir días y horas entre laborables o fin de semana y festivos y la separación de fecha-hora es solo trabajar en dos columnas: una la parte entera (días) y la otra la parte fraccionada (horas), funciones (obviamente) entero(... y residuo(... 1) y finalmente se convierte a valores y se elimina "la fuente" pero una vez que ha quedado visto (y comprendido), podemos regresar a tu modelo de base (menos columnas auxiliares para su comprensión) y resulta el nuevo adjunto horas x turno v2 (ayudaExcel).xlsx
    • Hola Hector Miguel, mil gracias por ese gran trabajo. Tengo las siguientes consultas relacionadas con la nueva versión del file. Lo descrito es lo que puedo interpretar de la revisión:  Columna J: Días. Indica la cantidad de días, más el primero y último día de la semana de la actividad. Columna K: Turno. Columna L: s/d/F. Cantidad de Sábados, Domingos y Feriados involucrados en la actividad. Columna M: Período. N° total de días en los que se desarrolló la actividad. Columna N: 6-s, 7-d, 8-f. Finalmente, quisiera preguntarte que método utilizaste para separar la celda que contiene la fecha y la hora, en 2 celdas separadas. Muchas gracias por la atención prestada a mi caso!!! Jeani    
    • No se si ya pudiste resolver el problema pero ¿Será que el formato de celda te ayude? En celda cuando quieres ver mas de 24:00 lo que se hace es darle el formato a la celda [hh]:mm:ss si fuera hh:mm:ss no verias en  la celda un dato mayor a a 24:00. Quiizas con eso presente puedas tener los resultados que esperas con tu codigo.   Saludos Valentino
    • Expertos buenas tardes, tengo un archivo de excel que funciona bastante bien lo unico es que en la hoja REPORTE hay grafico dinamicos se pierden los datos por la cantidad de informacion que existe no se hay una forma para poder arreglarlo, estare agradecido eternamente por favor. Adjunto el archvio. https://drive.google.com/file/d/1olczNQkvlp9gWiGGev2S3GtcItJtab3F/view?usp=sharing
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy