[RESUELTO]Apuntar a una celda a partir de otra formula

Discute sobre la aplicación de hojas de cálculo
Responder
DaviDvD
Mensajes: 37
Registrado: Vie Oct 21, 2011 9:07 pm

[RESUELTO]Apuntar a una celda a partir de otra formula

Mensaje por DaviDvD »

Hola,

Quisiera llamar a una función o una celda, donde la celda pueda venir dada a partir de una función. Por ejemplo:


Con esta función, busco el primer valor entre una tabla ordenada(valor nutrients), cada tipo de alimento tiene unas características, como las posiciones son fijas, en este caso quiero el 34. Lo que hago es, busco el tipo de alimento con coincidir, y me da el número de columna de la primera coincidencia, si sumo 34 me llevará al detalle de dicho nutriente. Pero, en la función principal(Desref), no puedo mencionar una letra con el número que viene dado de la formula coincidir. Además, no se si desref me daría el valor correctamente, pero es una de las muchas maneras que lo he intentado.

=DESREF($'valor nutrients'.$a$coincidir(B18;$'Valor Nutrients'.$A$1:$A$24431;0);34;2)


Otra manera que he intentado es simplemente apuntando a la celda, pero me ocurre lo mismo que antes:

=$'valor nutrients'.$c$'suma(34;coincidir(b12;$'valor nutrients'.$a$1:$a$24431;0))'


Lo intente con indice, pero resulta que funciona distinto del manual que leí acerca de dicha función:

=indice($'Valor Nutrients'.$A$1:$C$24431; SUMA(34;COINCIDIR(B12;$'Valor Nutrients'.$A$1:$A$24431;0)); 3)



Para dar una referencia la estructura de las hojas en questión es tal que así:


En la hoja "valor nutrients" hay tres columnas tal que así:

iIDAliment IDNutrient ValorNutrient
1 1 26,3000
1 2 0,500000
1 3 -1,00000
1 4 -1,00000
1 5 -1,00000
1 6 -1,00000
1 7 0,200000
1 34 ...
2 1 ...



Y en otra tengo(no es exactamente así, pero diciendo esto creo es suficiente):

id alimento nombre
10 leche
15 queso


Mi idea es que en la tabla principal del nombre de alimento, vaya recogiendo por id cada tipo de valor en la otra hoja,poniéndolos en horizontal, por eso quería poner dichas formulas.


Luego me gustaría forzar a que se perdieran las formulas, y perdurasen solo los valores encontrados, alguna vez me ha ocurrido por error al desagrupar celdas, supongo que se podrá forzar esto.




Adjunto el fichero por si acaso, las formulas en cuestión estan en la hoja "Alimentos", y es en esta hoja donde quiero que en dicha hoja se recopilen los datos, ya que, en cada hoja hay datos sueltos sin enlazar. Estaba empezando con las calorías. Una vez estén completos, pasaría estos valores a la plantilla de dietas.
He tenido que eliminar muchos alimentos y detalles, ya que, con tanto registro no me dejaba subir el fichero por exceder de 128Ks.



Gracias,
David.
Adjuntos
ces.ods
(122.58 KiB) Descargado 489 veces
Última edición por DaviDvD el Mar Dic 06, 2011 6:01 pm, editado 1 vez en total.
LibreOffice 4.0.6 | Linux Mint | Mate
DaviDvD
Mensajes: 37
Registrado: Vie Oct 21, 2011 9:07 pm

Re: Apuntar a una celda a partir de otra formula:ej=A(Suma(1

Mensaje por DaviDvD »

Apunto que ya he encontrado como llegar a la información, justo había una hilo con una pregunta similar que me ha servido.
(Mostrar datos de otras hojas: http://user.services.openoffice.org/es/ ... =21&t=6072)

Gracias a ifanlo, pepeooosevilla, y sou, por el otro hilo.


Lo he hecho de la siguiente manera que apuntaba el otro hilo:

=INDIRECTO("$'valor nutrients'.$c$" & SUMA(34;COINCIDIR(B15;$'Valor Nutrients'.$A$1:$A$24431;0)))

Este era el ejemplo sencillo del otro hilo:
=INDIRECTO("Hoja1.B"&G3) (siendo G3 la celda que contiene el número generado al azar)


Ahora me quedaría si alguien sabría como en un determinado punto hacer que las celdas se queden con el valor que han recogido de otras hojas. De manera que pueda borrar las hojas, y que los datos que casaron perduren en la hoja recopilatorio.



Gracias!
David.
LibreOffice 4.0.6 | Linux Mint | Mate
Avatar de Usuario
PepeOooSevilla
Mensajes: 1480
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: Apuntar a una celda a partir de otra formula:ej=A(Suma(1

Mensaje por PepeOooSevilla »

Hola.
Creo que tienes tres posibilidades:
1ª.- Copiar la celda y Pegar → Texto sin formato
2ª.- Usar una macro parecida a “CambiarFormulaValor”
3ª.- Desactivar “Herramientas → Contenido de las celdas → Cálculo automático”. ¡Cuidado! porque si recalculas la hoja, y tienes datos de hojas eliminadas, pierdes los datos ...
Personalmente usaría la 1ª o la 2ª. La 3ª creo que podría traer problemas.
Por favor, mira el archivo adjunto.

Código: Seleccionar todo

Option Explicit

Sub CambiarFormulaValor()
' Ver página 193 del libro de Mauricio Baeza
' Aprendiendo OOo Basic "cómo comprobar la celda activa"
' Sustituye la fórmula de la celda activa por su valor

	Dim oSel As Object
	Dim oCelda As Object
	Dim vValor as Variant

	oSel = ThisComponent.getCurrentSelection()
	If oSel.getImplementationName() = "ScCellObj" Then
		oCelda = oSel
		vValor = oCelda.Value
		oCelda.Value = vValor
	Else
		MsgBox "Para sustituir la fórmula de la celda activa por su valor," & Chr(13) & _
				"sólo se puede seleccionar UNA celda.", 16, "¡Atención!"
	End If
End Sub
Saludos cordiales.
Adjuntos
FORO_CALC_Cambiar_Formula_por_Valor.ods
(26.46 KiB) Descargado 238 veces
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
DaviDvD
Mensajes: 37
Registrado: Vie Oct 21, 2011 9:07 pm

Re: Apuntar a una celda a partir de otra formula:ej=A(Suma(1

Mensaje por DaviDvD »

Perfecto Pepe. Muchas gracias por tu respuesta.

La primera opción ya me sirve, la segunda riza el rizo! Probaré las dos!.
Gracias, ya doy por resuelta la incidencia.


Un saludo,
David.
LibreOffice 4.0.6 | Linux Mint | Mate
Responder