** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Tabla de rango variable
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoTabla de rango variable

 Responder Responder
Autor
Mensaje
Gladiador Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 22/Junio/2006
Localización: Venezuela
Estado: Sin conexión
Puntos: 220
Enlace directo a este mensaje Tema: Tabla de rango variable
    Enviado: 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

Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5970
Enlace directo a este mensaje Enviado: 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.
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: La Gloria
Estado: Sin conexión
Puntos: 3849
Enlace directo a este mensaje Enviado: 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
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5970
Enlace directo a este mensaje Enviado: 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.
Arriba
Gladiador Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 22/Junio/2006
Localización: Venezuela
Estado: Sin conexión
Puntos: 220
Enlace directo a este mensaje Enviado: 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
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable