Problemas con formula "SI" en excel

Localización, instalación y configuración de todo tipo de software.

Moderador: Moderadores

Avatar de Usuario
arango

Problemas con formula "SI" en excel

Mensaje por arango » Dom Abr 08, 2007 10:52 pm

Hola a todos, de nuevo recurro a vosotros para que me ayudeis, voy directo:
Supongamos que en la celda A4 hay la siguiente formula
=SI(A1=2003;SI(A2="H";25;SI(A1=2003;SI(A2="J";26)))), y así sucesivamente con todos los años a partir del 2003.
La formula está correcta y no hay ningun problema, pero mi problema es que necesito anidar la función "SI" ,en esa misma celda, varias veces, pero solo me deja anidarla 7 veces .
Me podeis ayudar a insertar una formula que me sirva para solucionar mi problema. otras veces lo habeis hecho y estoy seguro que en esta tambien me ayudareis.
Gracias

EPICA
Moderador
Mensajes: 1576
Registrado: Sab Abr 15, 2006 4:27 pm
Ubicación: Mexico

Mensaje por EPICA » Lun Abr 09, 2007 1:06 am

no se si te acepte un limite de 7 si anidados o mas porque al parecer a mi si me acepto al menos 8 que hice de prueba. En lo que me he fijado en tu formula es que te puedes ahorrar algunos SI anidados mediante un Y (And) de la siguiente manera (ejemplo):
=SI(Y(B4=1,D4=2),"si","no")
En tu caso quedaria mas o menos asi:
=SI(Y(A1=2003,A2="H"),25,SI(Y(A1=2003,A2="J"),26)),
kisas hasta pueda mejorarse la k te he puesto
Imagen

Avatar de Usuario
Invitado

Mensaje por Invitado » Lun Abr 09, 2007 3:59 pm

EPICA escribió:no se si te acepte un limite de 7 si anidados o mas porque al parecer a mi si me acepto al menos 8 que hice de prueba. En lo que me he fijado en tu formula es que te puedes ahorrar algunos SI anidados mediante un Y (And) de la siguiente manera (ejemplo):
=SI(Y(B4=1,D4=2),"si","no")
En tu caso quedaria mas o menos asi:
=SI(Y(A1=2003,A2="H"),25,SI(Y(A1=2003,A2="J"),26)),
kisas hasta pueda mejorarse la k te he puesto
Gracias, lo intento y luego te explico, no estoy en casa y tengo el archivo en ella. Gracias

Avatar de Usuario
Invitado

Mensaje por Invitado » Lun Abr 09, 2007 5:13 pm

La formula del ejemplo en mi mensaje era solo un ejemplo.Voy a intentar explicarlo: Tengo en una hoja la nomina de mi salario y en la misma segun el grupo laboral la de mi mujer, en otra hoja del mismo libro tengo una tabla con los salarios segun año, dese 2003 hasta 2007.
Por lo tanto, lo que yo pretendo es lo siguiente:
Si A1, es el año, A2 es el grupo laboral, y A3 es el salario segun año y segun grupo
Por esos la formula es la siguiente:
(A4)=si(A1=2003;si(A2=2;Hoja1!B5;si A1=2003;si(A2=3;Hoja1!B6, y asi sucesivamente hasta 2007.
A4, es la celda de destino final, así que segun el grupo salarial al salario sera distinto. Creo haberme explicado, si la funcion Si, no es la idonea, podiais explicarme como hacerlo con la funcion BuscarV,
. Gracias

EPICA
Moderador
Mensajes: 1576
Registrado: Sab Abr 15, 2006 4:27 pm
Ubicación: Mexico

sw

Mensaje por EPICA » Lun Abr 09, 2007 9:46 pm

Estoy en lo mismo puedes ahorrarte la mitad de SI mediante la funcion Y.
No se que tantos SI sean anidados pero puedes usar tambien la opcion 'Suma CONDICIONAL' (con asistente) del menu Herramientas y sino esta ahi tienes que agregarlo de la opcion llamada Complementos o Agregados del mismo menu Herramientas.
Si se te complica puedes facilitarnos una captura de imagen de tu Archivo para pillar como esta el asunto.
Imagen

Avatar de Usuario
Invitado

Re: sw

Mensaje por Invitado » Mar Abr 10, 2007 6:28 pm

EPICA escribió:Estoy en lo mismo puedes ahorrarte la mitad de SI mediante la funcion Y.
No se que tantos SI sean anidados pero puedes usar tambien la opcion 'Suma CONDICIONAL' (con asistente) del menu Herramientas y sino esta ahi tienes que agregarlo de la opcion llamada Complementos o Agregados del mismo menu Herramientas.
Si se te complica puedes facilitarnos una captura de imagen de tu Archivo para pillar como esta el asunto.
He seguido tus consejos, pero el problema sigue siendo mas de 7 SI anidados, ten encuenta que con tu ejemplo de formula, son 2 por año, 2003, 2, 2004,2 2005,2 2006,2, 2007,2, un total de 10 SI, de todas formas si puedes orientarme de como hacerlo con la funcion de suma condicional, te lo agradezco, esta es la formula en cuestion:

=SI(Y(F1=2003;C5=4);Hoja1!B5;SI(Y(F1=2003;C5=5);Hoja1!B6;SI(Y(F1=2004;C5=4);Hoja1!B13;SI(Y(F1=2004;C5=4);Hoja1!B14;SI(Y(F1=2005;C5=4)
;Hoja1!B20;SI(Y(F1=2005;C5=5);Hoja1!B21;SI(F1=2006;SI(C5=4;Hoja1!B27;)))))))), a partir de aqui si coloco otro SI, me da error.
Venga, gracias por todo.

EPICA
Moderador
Mensajes: 1576
Registrado: Sab Abr 15, 2006 4:27 pm
Ubicación: Mexico

Mensaje por EPICA » Mar Abr 10, 2007 11:14 pm

'cuando algo no se deja entonces usaremos la fuerza bruta jeje osea VB in Excell
'para eso Presiona Ctrl+F11 o bien menu Herramientas-Macros-Editor de visual Basic
'Selecciona "Worksheet" y "SelectionChange" como en la imagen e introduce el codigo de la imagen, (faltan años que puedes agregar de la misma forma que como va el codigo)
'Una vez mas menciono que el codigo puede ser mejorado
'NOTA: Para que funcione debes habilitar macros (Pregunta al abrir archivo) y sino te sale es cuestion de cambiar la seguridad en Herramientas-Macro-Seguridad-"Medio"
'No pude ver otra solucion mas que esa a tu problema ojala y te sirva
Imagen
Imagen

Avatar de Usuario
Invitado

Mensaje por Invitado » Vie Abr 13, 2007 2:05 pm

EPICA escribió:'cuando algo no se deja entonces usaremos la fuerza bruta jeje osea VB in Excell
'para eso Presiona Ctrl+F11 o bien menu Herramientas-Macros-Editor de visual Basic
'Selecciona "Worksheet" y "SelectionChange" como en la imagen e introduce el codigo de la imagen, (faltan años que puedes agregar de la misma forma que como va el codigo)
'Una vez mas menciono que el codigo puede ser mejorado
'NOTA: Para que funcione debes habilitar macros (Pregunta al abrir archivo) y sino te sale es cuestion de cambiar la seguridad en Herramientas-Macro-Seguridad-"Medio"
'No pude ver otra solucion mas que esa a tu problema ojala y te sirva
Imagen
Hola, he seguido tus consejos y formula y lo he hecho tal cual me indicas y ya está insertado en la hoja de calculo, pero cuando inserto el año en la celda en cuestion, me traslada a VB y me sale una ventana con lo siguiente:
ERROR DE COMPILACION:
ELSE SIN IF. ACEPTAR .CANCELAR

Seguramente, me he he equivocado en algun dato, te mando lo insertado para que compruebes el fallo. Gracias y perdona por la lata que te estoy dando



Private Sub CommandButton1_Click()
DatosAntonio.Activate
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("F1").Value = "2003" And Range("C5").Value = "4" Then Range("A1").Value = Worksheets("Hoja1").Cells(5, 2).Value 'hoja1 B5
ElseIf Range("F1").Value = "2003" And Range("C5").Value = "5" Then Range("A1").Value -Worksheets("Hoja1").Cells(6, 2).Value 'hoja D6
ElseIf Range("F1").Value = "2004" And Range("C5").Value = "4" Then Range("A1").Value -Worksheets("Hoja1").Cells(13, 2).Value 'hoja B13
ElseIf Range("F1").Value = "2004" And Range("C5").Value = "5" Then Range("A1").Value -Worksheets("Hoja1").Cells(14, 2).Value 'hoja B14
ElseIf Range("F1").Value = "2005" And Range("C5").Value = "4" Then Range("A1").Value -Worksheets("Hoja1").Cells(15, 2).Value 'hoja B20
ElseIf Range("F1").Value = "2005" And Range("C5").Value = "5" Then Range("A1").Value -Worksheets("Hoja1").Cells(16, 2).Value 'hoja B21
ElseIf Range("F1").Value = "2006" And Range("C5").Value = "4" Then Range("A1").Value -Worksheets("Hoja1").Cells(17, 2).Value 'hoja B27
ElseIf Range("F1").Value = "2006" And Range("C5").Value = "5" Then Range("A1").Value -Worksheets("Hoja1").Cells(18, 2).Value 'hoja B28
ElseIf Range("F1").Value = "2007" And Range("C5").Value = "4" Then Range("A1").Value -Worksheets("Hoja1").Cells(19, 2).Value 'hoja B34
ElseIf Range("F1").Value = "2007" And Range("C5").Value = "5" Then Range("A1").Value -Worksheets("Hoja1").Cells(20, 2).Value 'hoja B3I
ElseIf Range("F1").Value = "" Or Range("C5").Value = "" Then Range("A1").Value = "Falta dato"
End If
End Sub

EPICA
Moderador
Mensajes: 1576
Registrado: Sab Abr 15, 2006 4:27 pm
Ubicación: Mexico

Mensaje por EPICA » Vie Abr 13, 2007 9:35 pm

a simple vista parece k te saltaste el 'then' osea mas o menos deberia kedar asi:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("F1").Value = "2003" And Range("C5").Value = "4" Then
Range("A1").Value = Worksheets("Hoja1").Cells(5, 2).Value 'hoja1 B5
ElseIf Range("F1").Value = "2003" And Range("C5").Value = "5" Then
Range("A1").Value -Worksheets("Hoja1").Cells(6, 2).Value 'hoja D6
ElseIf Range("F1").Value = "2004" And Range("C5").Value = "4" Then
Range("A1").Value -Worksheets("Hoja1").Cells(13, 2).Value 'hoja B13
ElseIf Range("F1").Value = "2004" And Range("C5").Value = "5" Then
Range("A1").Value -Worksheets("Hoja1").Cells(14, 2).Value 'hoja B14
ElseIf Range("F1").Value = "2005" And Range("C5").Value = "4" Then
Range("A1").Value -Worksheets("Hoja1").Cells(15, 2).Value 'hoja B20
ElseIf Range("F1").Value = "2005" And Range("C5").Value = "5" Then
Range("A1").Value -Worksheets("Hoja1").Cells(16, 2).Value 'hoja B21
ElseIf Range("F1").Value = "2006" And Range("C5").Value = "4" Then
Range("A1").Value -Worksheets("Hoja1").Cells(17, 2).Value 'hoja B27
ElseIf Range("F1").Value = "2006" And Range("C5").Value = "5" Then
Range("A1").Value -Worksheets("Hoja1").Cells(18, 2).Value 'hoja B28
ElseIf Range("F1").Value = "2007" And Range("C5").Value = "4" Then
Range("A1").Value -Worksheets("Hoja1").Cells(19, 2).Value 'hoja B34
ElseIf Range("F1").Value = "2007" And Range("C5").Value = "5" Then
Range("A1").Value -Worksheets("Hoja1").Cells(20, 2).Value 'hoja B3I
ElseIf Range("F1").Value = "" Or Range("C5").Value = "" Then
Range("A1").Value = "Falta dato"
End If
End Sub
Imagen

Avatar de Usuario
Invitado

Mensaje por Invitado » Sab Abr 14, 2007 6:37 pm

Bueno, te molesto de nuevo, te comento que sigo igual, he insertado tu formula y ahora me sale una ventana con lo siguiente:
"error de compilacion el uso de la propiedad no es valido" y en la formula aparece en azul :
.Value
Si ves que no hay solucion, no te molestes y ya cambio la hoja, gracias

Responder