Imprimir página | Cerrar ventana

Tabla de rango variable

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85967
Fecha de impresión: 26/Marzo/2026 a las 20:22


Tema: Tabla de rango variable
Publicado por: Gladiador
Asunto: Tabla de rango variable
Fecha de publicación: 24/Abril/2021 a las 21:39
Hola amigos, deseo una ayuda sobre este punto.

Tengo un hoja donde anoto, día día, los pagos realizados por los propietarios de un edificio de apartamentos
En una tabla, aparte, extraigo las fechas en que han pagado sus cuotas. Este rango donde se extraen los datos tiene 100 filas or 8 columnas. En todas las celdas de ese rango tango una función Si.Error en donde el resultado será "" en caso que no haya datos.

Quisiera construir una tabla, cuyo rango varíe de acuerdo al número de datos que haya para cada apartamento. El número de columnas se mantendría fijo, no así el número de filas
Ejemplo 1 Ejemplo 2
Apartamento 10 Apartamento 12
Fecha Concepto Fecha Concepto
1 1-jul-20 Cuota Junio 1 22-jun-20 Cuota Junio
2 1-jul-20 Cuota Julio 2 1-jul-20 Cuota Julio
3 1-jul-20 Cuota Agosto 3 4-ago-20 Cuota Agosto
4 10-sept-20 Cuota Septiembre 4 4-ago-20 Cuota Septiembre
5 10-sept-20 Cuota Octubre 5 18-ago-20 Cuota Octubre
6 10-sept-20 Cuota Noviembre 6 18-ago-20 Cuota Noviembre
7 10-sept-20 Cuota Diciembre 7 18-ago-20 Cuota Diciembre
8 19-ene-21 Cuota Ene-21 8 19-ene-21 Cuota Emergencia
9 19-ene-21 Cuota Feb-21 9 19-ene-21 Cuota Ene-21
10 19-ene-21 Cuota Mar-21 10 19-ene-21 Cuota Feb-21
11 19-ene-21 Cuota Abr-21 11 19-ene-21 Cuota Mar-21
12 20-mar-21 Cuota Abr-21
13 21-abr-21 Cuota Mayo-21

He probado la función 
=DESREF (A4;0;0;CONTARA($A:$A)-4;3)
La cual acepta, cuando la introduzco, pero no se queda fijo el tamaño del rango
Probé también la función
=INDIRECTO("D"&CONTAR($A$4:$A$100))
Pero tampoco tuve suerte

Intenté la siguiente macro y nada

ActiveSheet.ListObjects("Table1").Resize Range("ResizeTable")

El rango ResizeTable tiene la función DESREF de arriba.

Me gustaría hacer esto sin utilizar macro, pero si no hay otra solución, ni modo

Cualquier ayuda será bien recibida

Gracias




Respuestas:
Publicado por: AnSanVal
Fecha de publicación: 25/Abril/2021 a las 12:43
Parece trabajo para una Tabla dinámica. 

Puedes ver el/los apartamento/s que quieras, del periodo de tiempo que quieras.




-------------
Saludos desde Tenerife.


Publicado por: lbauluz
Fecha de publicación: 26/Abril/2021 a las 10:25
Una opción un poco retorcida

Supongo que los datos están en la columna B para este ejemplo

En una celda que no uses, por ejemplo  D1 pones =MAX(IF(B:B<>"";ROW(B:B)))

(En español creo que sería =MAX(SI(B:B<>"";FILA(B:B))) )

Con esto tienes en esa celda el número de filas que hay.

Reemplaza en tu fórmula para que tome ese valor al hacer los cálculos.



-------------
El Búho es un pajarraco


Publicado por: AnSanVal
Fecha de publicación: 26/Abril/2021 a las 14:18
También se puede hacer con un 'Nombre definido' (más 'limpio' y descriptivo) o con Filtro avanzado, aunque para el ejemplo aportado; yo prefiero la TD.

Siempre dependerá de cuan diferente sea el ejemplo aportado comparado con el informe real que necesita (suele diferir bastante).

De todos modos; parece poco preocupado por su consulta.




-------------
Saludos desde Tenerife.


Publicado por: Gladiador
Fecha de publicación: 06/Mayo/2021 a las 02:55
Hola amigos, estuve intentando vario métodos, sin ningún resultado satisfactorio por lo que debí ingresar un código VBA el cual anexo

If Target.Address = "$AB$6" Then 
  ActiveSheet.ListObjects("Table1").Resize Range("ResizeTable")

En donde el rango ResizeTable es dinámico definido así:

=OFFSET($A$10;0;0;COUNT($A$10:$A$100)+1;3)

Por mi parte se puede cerrar el hilo

Gracias a todos



Imprimir página | Cerrar ventana