Página 1 de 3
Problemas con formula "SI" en excel
Publicado: Dom Abr 08, 2007 10:52 pm
por arango
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
Publicado: Lun Abr 09, 2007 1:06 am
por EPICA
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
Publicado: Lun Abr 09, 2007 3:59 pm
por Invitado
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
Publicado: Lun Abr 09, 2007 5:13 pm
por Invitado
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
sw
Publicado: Lun Abr 09, 2007 9:46 pm
por EPICA
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.
Re: sw
Publicado: Mar Abr 10, 2007 6:28 pm
por Invitado
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.
Publicado: Mar Abr 10, 2007 11:14 pm
por EPICA
'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

Publicado: Vie Abr 13, 2007 2:05 pm
por Invitado
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

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
Publicado: Vie Abr 13, 2007 9:35 pm
por EPICA
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
Publicado: Sab Abr 14, 2007 6:37 pm
por Invitado
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