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

Discute sobre la aplicación de hojas de cálculo

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

Notapor DaviDvD » Lun Dic 05, 2011 4:54 pm

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) 169 veces
Última edición por DaviDvD el Mar Dic 06, 2011 6:01 pm, editado 1 vez en total
LibreOffice 3.6.2 Linux
DaviDvD
 
Mensajes: 24
Registrado: Vie Oct 21, 2011 9:07 pm

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

Notapor DaviDvD » Lun Dic 05, 2011 5:08 pm

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: viewtopic.php?f=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 3.6.2 Linux
DaviDvD
 
Mensajes: 24
Registrado: Vie Oct 21, 2011 9:07 pm

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

Notapor PepeOooSevilla » Mar Dic 06, 2011 9:13 am

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   Expandir vistaContraer vista
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) 61 veces
Apache OpenOffice 4.0.1 en Windows 7 y Windows XP
PepeOooSevilla
 
Mensajes: 188
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

Notapor DaviDvD » Mar Dic 06, 2011 6:00 pm

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 3.6.2 Linux
DaviDvD
 
Mensajes: 24
Registrado: Vie Oct 21, 2011 9:07 pm


Volver a Calc

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados