Problemas con formula "SI" en excel

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

Moderador: Moderadores

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

Mensaje por EPICA » Sab Abr 14, 2007 6:50 pm

Creo k se porque te sale eso
tienes un "-" en vez de un "=" te pondre en "rojo" el error del codigo:

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
..................

lo vez :D, kisas te confundiste al teclearlo de la imagen k puse ya que como es grande se reduce algo y pierde la forma
mira este es el link de la imagen en su tamaño real
http://img246.imageshack.us/img246/2286 ... celmi3.jpg
Imagen

Avatar de Usuario
Invitado

Mensaje por Invitado » Sab Abr 14, 2007 8:00 pm

EPICA escribió:Creo k se porque te sale eso
tienes un "-" en vez de un "=" te pondre en "rojo" el error del codigo:

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
..................

lo vez :D, kisas te confundiste al teclearlo de la imagen k puse ya que como es grande se reduce algo y pierde la forma
mira este es el link de la imagen en su tamaño real
http://img246.imageshack.us/img246/2286 ... celmi3.jpg
Así es como está actualmente y nada, ahora sale la ventana, "Elf sin If", igual que al principio, perdona pero es que no se subir imagenes al foro,

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 B35
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 » Sab Abr 14, 2007 8:20 pm

Ahora te falto separar el then: ai te va como debe de kedar

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 B35
ElseIf Range("F1").Value = "" Or Range("C5").Value = "" Then
Range("A1").Value = "Falta dato"
End If
End Sub

Te dejo el Archivo de Excel -->aki<--
Suerte :wink:
Imagen

Avatar de Usuario
Invitado

Mensaje por Invitado » Lun Abr 16, 2007 4:16 pm

EPICA escribió:Ahora te falto separar el then: ai te va como debe de kedar

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 B35
ElseIf Range("F1").Value = "" Or Range("C5").Value = "" Then
Range("A1").Value = "Falta dato"
End If
End Sub

Te dejo el Archivo de Excel -->aki<--
Suerte :wink:
Al final se ha arreglado, está claro que el torpe era yo, muchas gracias y con tu permiso hasta otra. Gracias

Avatar de Usuario
Invitado

Mensaje por Invitado » Lun Abr 16, 2007 7:13 pm

Tengo unas pregunta, para adquirir mas conocimientos, me puedes explicar a que hace referencia cuando en el codigo pones repetidamente:
("A1").
Cells(5, 2).
racias, es solo por si tengo que copiarlas para otra vez que tenga que utilizar la misma formula.

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

XD

Mensaje por EPICA » Lun Abr 16, 2007 9:34 pm

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Quiere decir que en la Hoja(en este caso la Hoja1 por se donde se encuentra el código) y cuando te muevas de celda se realizará lo que hay dentro (o sea todo el código siguiente)

If Range("F1").Value = "2003" And Range("C5").Value = "4" Then
NOTA:en VB todo tiene propiedades y métodos, por eso cuando nos referimos a una celda tenemos que poner la propiedad o método, en este caso la propiedad "value" para saber el texto (ejemplo cotidiano pepito.nombre, pepito.tamaño, pepito.edad, etc.).
Condición: si la celda F1 es igual a 2003 y la celda C5 es igual a 4 entonces se realizará lo siguiente

Range("A1").Value = Worksheets("Hoja1").Cells(5, 2).Value 'hoja1 B5
Si la condición de arriba es verdadera entonces se realizá esta instrucción, que es poner el texto que existe en la Hoja1 celda B5 en la celda A1 de la hoja presente.

ElseIf Range("F1").Value = "2003" And Range("C5").Value = "5" Then
si la primera condición no se cumple hacemos otra condición dentro de la primera (if anidado con elseif) para ver si se cumple esta nueva

Range("A1").Value = Worksheets("Hoja1").Cells(6, 2).Value 'hoja "b6"
si el elseif de arriba se cumple (es verdadera) entonces se realizará esta instrucción, que es poner el texto que existe en la Hoja1 celda B6 en la celda A1 de la hoja presente.
NOTA: si quisieras que el dato se pusiera en la A2 entonces tienes que cambiar por Range("A2"). Si quisieras que tomara el dato de la hoja2 celda C6 entoces tienes que cambiar por Worksheets("Hoja2").Cells(6, 3).Value

ElseIf Range("F1").Value = "2004" And Range("C5").Value = "4" Then
sino se cumple la primera condicion (if), ni la segunda (elseif), hacemos esta otra condición para ver si se cumple.

Range("A1").Value = Worksheets("Hoja1").Cells(13, 2).Value 'hoja B13
si se cumple el elseif de arriba entonces se realizará ésta instrucción.

'Así sucesivamente....todo se va anidando como lo tenias mediante fórmulas
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 B35
ElseIf Range("F1").Value = "" Or Range("C5").Value = "" Then
Range("A1").Value = "Falta dato"

End If
en VB cuando abres un IF y hay mas de una linea entonces se tiene que cerrar mediante end if.
End Sub


Agregó: en español seria la estructura mas o menos así:
Si valor1 es igual a 2003 y valor2 es igual a 4 entonces
valor3 es igual a valor4
Y sino, si valor1 es igual a 2003 y valor2 es igual a 5 entonces
valor3 es igual a valor5
Y sino, si valor1.....(El numero de Sino es proporcional al numero de datos que vas a comparar, si aumantas años, aumentas Sino).

Si aún no te queda claro puedo darte mas ejemplos :D
Imagen

Avatar de Usuario
Invitado

Re: XD

Mensaje por Invitado » Mar Abr 17, 2007 1:15 pm

EPICA escribió:Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Quiere decir que en la Hoja(en este caso la Hoja1 por se donde se encuentra el código) y cuando te muevas de celda se realizará lo que hay dentro (o sea todo el código siguiente)

If Range("F1").Value = "2003" And Range("C5").Value = "4" Then
NOTA:en VB todo tiene propiedades y métodos, por eso cuando nos referimos a una celda tenemos que poner la propiedad o método, en este caso la propiedad "value" para saber el texto (ejemplo cotidiano pepito.nombre, pepito.tamaño, pepito.edad, etc.).
Condición: si la celda F1 es igual a 2003 y la celda C5 es igual a 4 entonces se realizará lo siguiente

Range("A1").Value = Worksheets("Hoja1").Cells(5, 2).Value 'hoja1 B5
Si la condición de arriba es verdadera entonces se realizá esta instrucción, que es poner el texto que existe en la Hoja1 celda B5 en la celda A1 de la hoja presente.

ElseIf Range("F1").Value = "2003" And Range("C5").Value = "5" Then
si la primera condición no se cumple hacemos otra condición dentro de la primera (if anidado con elseif) para ver si se cumple esta nueva

Range("A1").Value = Worksheets("Hoja1").Cells(6, 2).Value 'hoja "b6"
si el elseif de arriba se cumple (es verdadera) entonces se realizará esta instrucción, que es poner el texto que existe en la Hoja1 celda B6 en la celda A1 de la hoja presente.
NOTA: si quisieras que el dato se pusiera en la A2 entonces tienes que cambiar por Range("A2"). Si quisieras que tomara el dato de la hoja2 celda C6 entoces tienes que cambiar por Worksheets("Hoja2").Cells(6, 3).Value

ElseIf Range("F1").Value = "2004" And Range("C5").Value = "4" Then
sino se cumple la primera condicion (if), ni la segunda (elseif), hacemos esta otra condición para ver si se cumple.

Range("A1").Value = Worksheets("Hoja1").Cells(13, 2).Value 'hoja B13
si se cumple el elseif de arriba entonces se realizará ésta instrucción.

'Así sucesivamente....todo se va anidando como lo tenias mediante fórmulas
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 B35
ElseIf Range("F1").Value = "" Or Range("C5").Value = "" Then
Range("A1").Value = "Falta dato"

End If
en VB cuando abres un IF y hay mas de una linea entonces se tiene que cerrar mediante end if.
End Sub


Agregó: en español seria la estructura mas o menos así:
Si valor1 es igual a 2003 y valor2 es igual a 4 entonces
valor3 es igual a valor4
Y sino, si valor1 es igual a 2003 y valor2 es igual a 5 entonces
valor3 es igual a valor5
Y sino, si valor1.....(El numero de Sino es proporcional al numero de datos que vas a comparar, si aumantas años, aumentas Sino).

Si aún no te queda claro puedo darte mas ejemplos :D
Gracias de nuevo y como ya te dije, amenazo con volver con nuevas preguntas, :D :D :D :D :D :D

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

Mensaje por EPICA » Mar Abr 17, 2007 2:52 pm

jeje de nada, aquí estaré para responderlas xD
Imagen

VHD
Moderador
Mensajes: 313
Registrado: Sab Ago 06, 2005 10:19 pm
Ubicación: España
Contactar:

Mensaje por VHD » Mar Abr 17, 2007 9:08 pm

Al menos, si vuelves con nuevas preguntas, registrate y así sabremos que eres tu, porque con ese nombre de usuario ...
VirtualHostingDigital.com Hosting Vitalicio - VirtualHostingDigital - VHD.es
Equipo de ABCdatos Tutoriales y Ayuda al usuario
Oferta: 10 GB de Espacio Web, Transferencia Ilimitada, Dominio .com o .es de regalo, por solo 30 &euro; / año

Avatar de Usuario
VERONICA

FORMULA SI

Mensaje por VERONICA » Mar Nov 27, 2007 8:18 pm

ME PUEDEN DECIR COMO PONGO MAYOR/MENOR O IGUAL??
ASI?:>O=
O ASI?: >=

Responder