Ingresar datos por código segun tabla.

14/04/2010 - 00:42 por Francesca Brasso | Informe spam
Hola,
En la columna B desde B1 adelante se ingresan varias veces al día valores
numéricos enteros aleatorios que varían aprox. entre 30 y 450.
He puesto y copiado hacia abajo en la columna C desde C1 la siguiente
fórmula
=SI(B1="","",SI(B1<`,0,SI(B1<€,3,SI(B1<0,4,SI(B1<0,6,SI(B1<1,8,SI(B1< 0,10,SI(B1<%0,11,SI(B1<00,12,SI(B1>01,14))))))))))
para que en la celda al lado del número ingresado en B me ponga un número de
acuerdo a la siguiente tabla:
<60:0
61-80: 3
81-120: 4
121-160: 6
161-181: 8
182-200: 10
201-250: 11
251-300:12

301:14


El asunto es que a veces, dependiendo de ciertos factores, es necesario
cambiar el valor de la tabla, entonces lo que quiero, pero estoy perdida, es
ingresar el valor de la columna C por código de forma tal que al escribir el
valor en B aparezca un InputBox (o algo parecido) que me "ofrezca" el valor
original pero pueda cambiarlo antes de ingresarlo a la celda
correspondiente.
(Algo así como lo que se usa con el folio de las facturas)
Saludos
Francesca

Preguntas similare

Leer las respuestas

#6 Francesca Brasso
15/04/2010 - 02:02 | Informe spam
Muchas gracias Héctor por la explicación.
Muy generoso de tu parte.
Saludos
Francesca

"Héctor Miguel" escribió en el mensaje de
noticias news:
hola, Francesca !

... no entiendo el código, si pudieras explicarlo linea por linea... asi
voy aprendiendo para la praxima...



sale el mismo codigo comentado por linea de ejecucion...
saludos,
hector.

' primero, definimos una variable constante asemejando un rango de _
dos columnas (coma en vba) y varias filas (punto y coma en vba) para usar
un buscarv(...
Private Const Tabla As String =
"{0,0;61,3;81,4;121,6;161,8;182,10;201,11;251,12;301,14}"

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' si el usuario selecciona un rango que incluya celdas de la columna B
forzamos a una sola celda
If Not Intersect(Target, Range("b:b")) Is Nothing Then ActiveCell.Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
' si el cambio no es en la columna B (2) nos saltamos todo el codigo
If Target.Column <> 2 Then Exit Sub
' si el cambio en la columna B (2) ha sido borrar o eliminar _
limpiamos tambien el dato en la clumna C y nos saltamos el resto del
codigo
If Target = "" Then Target.Offset(, 1).ClearContents: Exit Sub
' declaramos dos variables para ...
Dim Sugerido As Integer, Respuesta As String
' determinar que sugerir al usuario por el ingreso con un
buscarv(<ingreso>,tabla,col2)
Sugerido = Evaluate("vlookup(" & Target.Value & "," & Tabla & ",2)")
' preguntar si confirma o cambia la sugerencia ...
Respuesta = Trim(InputBox( _
"La sugerencia para el valor ingresado (" & Target.Value & ") es: " &
Sugerido & vbCr & _
"Indica si es aplicable o modifica como corresponda..." & vbCr & vbCr &
_
"(puedes cancelar para aceptar la sugerencia)", "Accion REQUERIDA !!!",
Sugerido))
' finalmente depositamos en la columna C la respuesta (modificada o
sugerida)
Target.Offset(, 1) = IIf(Respuesta <> "", Respuesta, Sugerido)
End Sub

Respuesta Responder a este mensaje
#7 Francesca Brasso
16/04/2010 - 17:09 | Informe spam
Hola, ¿cómo podría modificar el estupendo código de Héctor para que
permitiera al usuario cambiar a su voluntad las cifras de la Tabla sin tener
que entrar al código, que evidentemente no entiende?. Es decir, algún lugar
donde el usuario pueda escribir su propia tabla y que el código tome de ahí
los datos.
Es que en diferentes épocas del año la tabla/guía/recordatorio/referencia es
diferente.
Saludos
Francesca


"Héctor Miguel" escribió en el mensaje de
noticias news:
hola , Francesca !

prueba copiando/pegando (o escribiendo) los siguientes procedimientos en
el modulo de codigo de "esa" hoja

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

== inicio del codigo => Private Const Tabla As String =
"{0,0;61,3;81,4;121,6;161,8;182,10;201,11;251,12;301,14}"

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("b:b")) Is Nothing Then ActiveCell.Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
If Target = "" Then Target.Offset(, 1).ClearContents: Exit Sub
Dim Sugerido As Integer, Respuesta As String
Sugerido = Evaluate("vlookup(" & Target.Value & "," & Tabla & ",2)")
Respuesta = Trim(InputBox( _
"La sugerencia para el valor ingresado (" & Target.Value & ") es: " &
Sugerido & vbCr & _
"Indica si es aplicable o modifica como corresponda..." & vbCr & vbCr &
_
"(puedes cancelar para aceptar la sugerencia)", "Accion REQUERIDA !!!",
Sugerido))
Target.Offset(, 1) = IIf(Respuesta <> "", Respuesta, Sugerido)
End Sub
== fin del codigo =>
__ OP __
y cuales serian los cambios que "segun factores" (ingresados en la
columna B) harias a "la tabla" ?


Queda a la discreción de quien ingresa el valor.



y cual es la relacion para la discontinua-continuidad de "la tabla" ?
{0;3;4;6;8;10;11;12;14}


No hay ninguna relación entre los números de la tabla.



- por que no "dejar" que el usuario cambie lo que necesite cambiar sin
necesidad de inputboxes previos ?


Porque se le puede olvidar cambiarlo y ya estará ingresado en la celda.



El tema es que, por ejemplo a veces se deberá cambiar el 3 por un 2 o un
1, o ...
Lo que necesito es que no se ingrese el numero hasta que el usuario lo
acepte (conscientemente)
o lo cambie por el número que el quiera. Si, tal como suena, el que el
quiera.
La tabla es solo una guia, no es algo rigido, es casi un recordatorio
solamente.




Respuesta Responder a este mensaje
#8 Héctor Miguel
17/04/2010 - 01:01 | Informe spam
hola, Francesca !

... modificar el... codigo... para que permitiera al usuario cambiar a su voluntad las cifras de la Tabla
sin tener que entrar al codigo, que evidentemente no entiende?.
Es decir, algun lugar donde el usuario pueda escribir su propia tabla y que el código tome de ahi los datos.
Es que en diferentes épocas del año la tabla/guia/recordatorio/referencia es diferente...



1) elimina del codigo sugerido esta parte:
Private Const Tabla As String = "{0,0;61,3;81,4;121,6;161,8;182,10;201,11;251,12;301,14}"





y la cambias por algun rango (segun el ejemplo) de 9 filas y 2 columnas (A1:B9 ?)
(A1:A9 => 0, 61, 81, 121, etc. y B1:B9 => 0, 3, 4, 6, etc.)
al que le asignaras el nombre de "tabla" (solo por seguir con la misma tonica)

2) modifica esta parte del codigo en el evento '_selectionchange'
Sugerido = Evaluate("vlookup(" & Target.Value & "," & Tabla & ",2)")





y la cambias por esta otra...
Sugerido = Evaluate("vlookup(" & Target.Value & ",tabla,2)")

saludos,
hector.
Respuesta Responder a este mensaje
#9 Francesca Brasso
17/04/2010 - 02:26 | Informe spam
Hola héctor
¿Puedo hacer el rango en otra hoja?
Fran


"Héctor Miguel" escribió en el mensaje de
noticias news:
hola, Francesca !

... modificar el... codigo... para que permitiera al usuario cambiar a su
voluntad las cifras de la Tabla
sin tener que entrar al codigo, que evidentemente no entiende?.
Es decir, algun lugar donde el usuario pueda escribir su propia tabla y
que el código tome de ahi los datos.
Es que en diferentes épocas del año la tabla/guia/recordatorio/referencia
es diferente...



1) elimina del codigo sugerido esta parte:
Private Const Tabla As String =
"{0,0;61,3;81,4;121,6;161,8;182,10;201,11;251,12;301,14}"





y la cambias por algun rango (segun el ejemplo) de 9 filas y 2 columnas
(A1:B9 ?)
(A1:A9 => 0, 61, 81, 121, etc. y B1:B9 => 0, 3, 4, 6, etc.)
al que le asignaras el nombre de "tabla" (solo por seguir con la misma
tonica)

2) modifica esta parte del codigo en el evento '_selectionchange'
Sugerido = Evaluate("vlookup(" & Target.Value & "," & Tabla & ",2)")





y la cambias por esta otra...
Sugerido = Evaluate("vlookup(" & Target.Value & ",tabla,2)")

saludos,
hector.

Respuesta Responder a este mensaje
#10 Héctor Miguel
17/04/2010 - 02:58 | Informe spam
hola, Francesca !

Puedo hacer el rango en otra hoja?



sip !!! siempre y cuando el nombre sea "unico" en el libro
(de lo contrario tendrias que hacer referencia tambien a "su hoja")

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida