¿Cómo escribir una función una vez y hacer que se actualice en muchas celdas?


1

A menudo ocurre que escribo una función en una celda y luego la copio en muchas celdas. Las copias se refieren a sus propias filas correctas. Pero si cambio la función en la primera celda, las copias no se verán afectadas. Tengo que reemplazar todas las copias por otras nuevas. Es programación de copiar y pegar cuando lo que realmente quiero es escribir una función en un lugar y llamar a esa función como si fuera una copia de un montón de celdas subordinadas.

¿Existe una técnica para lograr esto, o espero demasiado del modelo de programación de hoja de cálculo?


¿Las funciones cambian, como en, se refieren a diferentes celdas, o la mayoría de las fórmulas son iguales? Si la mayor parte es igual, es posible que pueda escribir esa parte en una celda diferente, por lo que las celdas que debe actualizar contienen una referencia a esa celda + la celda con la fórmula. De lo contrario, tendrá que usar macros para actualizar las celdas, lo cual es mucho más difícil.
LPChip

Las funciones son las siguientes: = IF (MOD (A2,30) = 19, Strings. $ A $ 1, ""), seguido de copias que se refieren a A5, A8, etc. Pero si quisiera cambiarlos todos para decir (objetivo% 27 == 14) tendría que hacer el cambio una vez y copiarlo en todas las otras celdas similares. La respuesta a continuación está en el camino correcto, pero tiene sus propios problemas (tiene que aprender LibreOffice BASIC, y las funciones no están asociadas a la hoja de cálculo.)
polymath69

Respuestas:


3

Puede escribir su propia función con StarBasic / LibreOffice Basic o Python. Esto es muy fácil y permite actualizar una función que afecta a todas las celdas donde se usa la fórmula.

Como se describe aquí (cortesía del weblog de Louic) , solo haga lo siguiente:

  1. Vaya a Herramientas -> Macros -> Organizar macros -> Libreoffice Basic;
  2. Seleccione Module1;
  3. Haga clic en editar;
  4. Ingrese el código de función, por ejemplo:
Function Area(width, height)
    Area = width * height
End Function

Ahora, puede usar =AREA(arg; arg2)en su hoja de cálculo. Si cambia la forma en que se calcula el resultado, esto afecta a todas las ocurrencias de =AREA().

EDITAR

Si no desea colocar la macro en el repositorio de macros central de su instalación de LO, puede guardarla en su archivo ods. Por lo tanto, también es accesible en una PC diferente. Para hacerlo, simplemente seleccione su archivo actual como lugar para guardar la macro al crearla (paso 1 anterior):

ingrese la descripción de la imagen aquí


1
Hay un problema con esta respuesta; a saber, la función así definida no parece estar asociada a mi hoja de cálculo. Es decir, guardo la hoja de cálculo y la abro en otra computadora y las funciones no están allí. ¿Qué necesito hacer de manera diferente?
polymath69

He editado mi respuesta para cubrir esto.
tohuwawohu

¿Hay alguna forma de definir funciones personalizadas para mi computadora, pero también tenerlas guardadas automáticamente en cualquier hoja de cálculo en la que se usen?
Endolito

@endolith: esto sería digno de una pregunta separada (pero no el registro si esto no se hizo antes en otro sitio) ...
tohuwawohu

1

Una solución simple sin macros: simplemente coloque los argumentos variables en celdas separadas. Entonces en lugar de

=IF(MOD(A2,30)=19,Strings.$A$1,"")

(con los valores 30y 19fijo), simplemente reemplace esto por

=IF(MOD(A2,$E$1)=$E$2,Strings.$A$1,"")

y poner los valores 30y 19en las celdas E1 y E2, respectivamente. Ahora, si cambia E1 y / o E2, cada fórmula usará esos valores.

Si hay ciertas combinaciones de esos dos valores que necesita aplicar a menudo, puede definir escenarios en consecuencia


0

Puede crear una celda de función de comparación y consultarla desde sus otras funciones.

Digamos que crea esta función en A10, entonces A10 se vería así:

= si (MOD (A2,30) = 19,1,0)

Ahora, si realiza su otra función en digamos A11, normalmente su función se ve así: = IF (MOD (A2,30) = 19, Strings. $ A $ 1, "")

Ahora se verá así: = if (A10 = 1, Strings. $ A $ 1, "")

Si necesita cambiar la parte de comparación, cambia A10 y se actualiza para todas las celdas que se refieren a ella.


No entiendo esta respuesta. Se refiere a A2 en demasiados lugares ... como el operando de la función y como la ubicación de la expresión. Podría desambiguar, por ejemplo, A1 tiene un elemento de datos, A2 tiene la función genérica y A3 usa la función genérica para referirse a A1 y $ A $ 2. Entonces B3 podría usar el genérico para referirse a B1 (datos) y $ A $ 2. Gracias.
polymath69

@ polymath69 ah, tienes razón. Editaré la respuesta para reflejar esto. Acabo de copiar la función del OP y olvidé por completo que se convertiría en un bucle anidado.
LPChip
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.