Date: prev next · Thread: first prev next last


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Buenas.


En Calc tengo una serie de hojas que funcionan a modo de tablas de una
BBDD y de cuyos datos se alimentan otras hojas. En estas hojas tengo
varias columnas y multitud de filas (es decir, lo normal), y según
necesito los valores, los "rescato" con fórmulas como ésta:


CELDA("contents";INDIRECTO(CONCATENAR("Tabla1";".b";CELDA("row";INDIRECTO(DERECHA(FÓRMULA($A1);LARGO(FÓRMULA($A1))-1))))))

Por ello, dadas varias hojas (en el ejemplo "Tabla1") y en ese caso, en
la columna "b" pero el número de fila se indica en la celda A1,
necesitaría sustituir esa llamada (que se repite miles de veces en las
hojas que tengo) por algo como

DBRef("A1")


que miraría la fórmula en la celda A1 (por ejemplo "Tabla1.b3" o
"$Tabla1.$b$3" u otra combinación de la misma referencia) y tendría que
devolver el contenido de la referencia de la celda referenciada.


Se me ocurre que tal vez sea mejor la posibilidad de que la llamada sea

DBRef(A1)

o cualquier otra posibilidad de referenciar la celda A1, máxime si la
celda tiene un objetivo de copiarse, ya que lo que interesa es la
fórmula y no el valor de la celda, para extraer la referencia a la hoja
y celda y luego, averiguar la fila y, finalmente, devolver el contenido
de otra columna concreta de la fila y hoja referenciada.


En parte esto lo hago porque si la fórmula actual ocupa alrededor de 120
caracteres, si se repite 10000 veces, entiendo que sólo en la fórmula
estoy superando el MB, y de esta forma, entiendo que, aparte de ocupar
unas 10 veces menos, quizás el espacio en memoria sería menor.


Por último, no he entrado en el detalle del propio código de la función,
siendo la primera opción que me planteé el poder utilizar la misma
fórmula, sustituyendo las referencias a la hoja y la fila, pero aun
siendo posible, la fórmula empleada puede tener algún problema si no se
utiliza un determinado formato de referencia, y por ello, desarrollar el
algoritmo mediante el propio basic desde luego es más flexible y más
potente (no sé si más rápido).


Por ello, si alguien me puede aportar la valoración de viabilidad sobre
lo del ahorro en el tamaño, bienvenido, y si ya me aporta el código,
pues entonces ya mejor. Esto no quiere decir que yo no vaya a hacerlo,
pero tengo el basico oxidado, y simplemente por si alguien ya tiene
hecho algo o le parece buena idea, o le apetece hacerlo.


Saludos.

- -- 
|----------------------------------------------------------------------|
| http://counter.li.org info: Linux user: 92390 - Linux machine: 39301 |
|        Oscar Manuel Gómez Senovilla - omgsATescomposlinux.org        |
|                 GPG Key at http://keyserver.pgp.com                  |
|----------------------------------------------------------------------|
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with SeaMonkey - http://www.enigmail.net/

iEYEARECAAYFAlNUOxkACgkQQpr3kykd/aSotQCffe4jRXPiikyKa6xeFZWX7M7A
jqMAn38dVrhz23YVG6AYqKpcrBeeSEiv
=Pq3s
-----END PGP SIGNATURE-----

-- 
Para instrucciones sobre darse de baja envíe un mensaje a: users+unsubscribe@es.libreoffice.org
¿Problemas? http://es.libreoffice.org/asistencia/listas-de-correo/como-darse-de-baja/
Guías para envío + más: http://wiki.documentfoundation.org/Netiquette/es
Archivo de la lista: http://listarchives.libreoffice.org/es/users/
Todos los mensajes enviados a esta lista serán archivados públicamente y no pueden ser eliminados

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.