Validar en una columna un valor

22/09/2008 - 23:13 por Pregunton | Informe spam
Buenas tardes a los participantes de esta ayuda!

Hoy y como siempre ,molestando con preguntas que suelen suceder cuando uno
quiere aprender algo más cada día... agradezco de antemano su colaboración y
atención.

Quisiera saber como puedo validar en una columna de excel por ejemplo la
"A", si tiene por ejemplo 10 celdas llenas y cada una tiene un valor, a1=1,
a2=1, a3=4, a4=1, a5 = 2, que mediante un codigo me diga que existe en esa
columna tres codigos difrentes para el ejemplo seria 1,2 y 4, y que si todos
estan iguales arroje un mensaje de que el codigo unico es 1 y que esta bien.

Espero haberme hecho entender no soy bueno redactando.

Atentamente;

OSWALDO GAITAN ARAQUE
Bendiciones!

Preguntas similare

Leer las respuestas

#6 Pregunton
01/10/2008 - 16:52 | Informe spam
Buenos Días Hector Miguel:

Ya lei los voculos que me dejo, espero que lo siguiente si sea claro.

Quiero que siempre en la columna "A", al correr una macro que identifique
que valores hay dentro de un rango que preseleccionado (a1:a50) ó (a30:a200),
pero que solo sea la columna "A", antes de ejecutar la macro que se llame
"valores", la macro debe realizar un barrido con un for desde la primera
celda hasta la última,comparando con un if dos celdas ejemplo a1 vesus a2,
que si (a1 = a2) para el ejemplo a1 = 1 y a2 =5, me guarde en una variable
(que puede ser array) tanto el numero 1 como el 5, y me los mueste en un
mensaje que diga que existen varios Numeros en la selección y que por lo
tanto no hay que revisar y dejar un único valor, ya sea o bien el 1 o el 5,
en el caso si (a1= a2), donde a1 = 1 y a2 =1, que todo los valores que se
encuentren dentro del rango seleccionado, a1= 1, a2= 1, a3=1, diga que esta
correcto existe un solo valor y es 1, aclaro que este valor puede ser
variable como 5, 10 2, cualquier número lo que quiero es que sea único en la
columna.

Gracias por su paciencia, Hector espero ahora si estar más claro en mi
problema.

Atentamente;

OSWALDO GAITAN ARAQUE
Respuesta Responder a este mensaje
#7 Héctor Miguel
01/10/2008 - 23:20 | Informe spam
hola, Oswaldo !

Ya lei los voculos que me dejo, espero que lo siguiente si sea claro.



voy a tratar de exponer "como veo" (yo) algunas interrogantes a este nuevo planteamiento...

... al correr una macro que identifique que valores hay dentro de un rango que preseleccionado (a1:a50) o (a30:a200)



de que depende "el rango", porque segun su dimension, podria ser rapido o lento un procedimiento versus "otro"
(p.e.) como ha de saber la macro de cual rango "preseleccionado" estamos hablando ???

... la macro debe realizar un barrido con un for desde la primera celda hasta la ultima
comparando con un if dos celdas ejemplo a1 vesus a2, que si (a1 = a2) para el ejemplo a1 = 1 y a2 = 5
me guarde en una variable (que puede ser array) tanto el numero 1 como el 5
y me los mueste en un mensaje que diga que existen varios Numeros en la seleccion
y que por lo tanto no hay que revisar y dejar un unico valor, ya sea o bien el 1 o el 5



(de plano...) esto me parece una incongruencia p.e. estas contradicciones:
-> "... existen varios numeros... no hay que revisar... dejar solo uno... "

a) si existen "varios numeros"... por que es que "NO hay que revisar" ???
y porque "dejar solo uno" ???
cual de todos (suponiendo que fueran mas de dos) ???
quien/como se ha de decidir "cual se queda" ???

b) si existiera solo uno... tampoco habria que revisar ???

c) y ademas... preparar un mensaje con todas las similitudes/diferencias encontradas en el rango ?
si lo "correcto" es que solo exista un unico numero... para que perder tiempo "buscando" cuantos y cuales ???

en el caso si (a1= a2), donde a1 = 1 y a2 =1, que todo los valores que se encuentren dentro del rango seleccionado
a1= 1, a2= 1, a3=1, diga que esta correcto existe un solo valor y es 1
aclaro que este valor puede ser variable como 5, 10 2, cualquier numero lo que quiero es que sea unico en la columna.



preguntas:
- cual es el "objetivo" que persigues ?
- que esta bien o que esta mal ? (varios numeros distintos... un solo numero... ???)

saludos,
hector.
Respuesta Responder a este mensaje
#8 Pregunton
02/10/2008 - 00:11 | Informe spam
Hola Héctor Miguel

La verdad como ya lo dije es que yo seleccione una rango de celdas pero que
sea en la columna a, no se si sea posible que si escojo otra columna me diga
que solo tengo que escoger la columan "A", al correr la macro no me importa
la velocidad.

Quiero es como lo comente que el valor dentro de ese rango escogido dentro
de cada una de las celdas sea igual no me importa el valor eso es lo correcto.

Lo incorrecto es que existan diferentes valores dentro de ese rango p.e. 1,
2, 10 , 50.

Lo correcto es que si p.e. es 5 el valor que ese este en todas las celdas
del rango escogido, y que no me admita celdas sin valor o vacias. Por eso
digo que usar un for lo que pasa es que no se como anidar el If que evalue
dos valores entre p.e. a1 = a2, y que sino es asi me guarde tanto el valor de
a1 y a2, en una variable para que me diga que hay más de un valor en ese
rango, asi sucesivamente. lo voy a intentar en codigo

sub revisar ()
'aqui va primero que valide si el rango seleccionado se encuentra dentro
de la columna "A"

dim ult as string
ult = ' aqui quiero que me cuente el numero de filas que estan selecionadas
para tomarlas en el for
ult = ult - 1 ' para que no me haga mas de las filas seleciconadas ejemplo
sin son 10 solo lo haga 9 veces por lo siguiente

dim res as string

res = array (ult) ' aqui para que guarde los valores sino son iguales
dim ValUni as string

for a = 1 to ult
if range("A" & a) = range("A" & a+1) then

ValUni = range ("A" & a).value ' aqui como es único que lo guarde para
mostrarlo después, no se si esta bien el codigo pero es la idea

else
' aqui que se guarden los valores distintos con el fin de mostralos al final
res (a)= range ("A" & a).value
res (a+1)= range ("A" & a+1).value
end if

nex a

' aqui surge no se si un for o un if que evalue los datos guardados y me
muestre dependiendo si el valor encontrado es unico indistinto de su valor
p.e. 1o 10 o 50 pero que sea único que es lo correcto.

' y sino un menaseje que diga que dentro de lo selecionado se encuentran
varios valores y que esta mal que hay que dejar un único valor.

end sub

El objetivo que persigo es que ese valor único que quiero es una llave que
me sirve para distinguir el producto, por eso no me importa cual sea el valor
que yo despúes lo pongo a evaluar contra una relacion de productos si existe
o no, pero eso lo dejo para otro procedimiento en donde evaluo esto.

Ahora si creo que me va a entender, gracias por su tiempo y tanta molestia,
muchas gracias.

Atentamente;

OSWALDO GAITAN
Respuesta Responder a este mensaje
#9 Héctor Miguel
02/10/2008 - 00:40 | Informe spam
hola, Oswaldo !

como te comentaba en el menseje anterior...
si lo "correcto" es que solo exista un unico numero... para que perder tiempo "buscando" cuantos y cuales ???



no se que mas pudiera hacer la macro que pretendes construir, pero creo que podrias iniciar con este "acercamiento"...
(asumiendo que los datos inician desde la fila 1 de la columna A y que NO HAY celdas vacias intermedias) -???-

Sub Prueba()
Dim Rango As String, Unicos As Integer
Rango = Range([a1], [a65536].End(xlUp)).Address
Unicos = Evaluate("sumproduct(1/countif(" & Rango & "," & Rango & "))")
If Unicos > 1 Then
MsgBox "Existe mas de un numero de referencia en la columna" & vbCr & _
"NO se puede continuar... (lo siento) !!!", , "ERROR !!!"
Exit Sub
End If
MsgBox "Ok... continuamos con las acciones."
End Sub

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

__ OP __
La verdad como ya lo dije es que yo seleccione una rango de celdas pero que sea en la columna a
no se si sea posible que si escojo otra columna me diga que solo tengo que escoger la columan "A"
al correr la macro no me importa la velocidad.
Quiero es como lo comente que el valor dentro de ese rango escogido dentro de cada una de las celdas sea igual
no me importa el valor eso es lo correcto.
Lo incorrecto es que existan diferentes valores dentro de ese rango p.e. 1, 2, 10 , 50.
Lo correcto es que si p.e. es 5 el valor que ese este en todas las celdas del rango escogido
y que no me admita celdas sin valor o vacias.
Por eso digo que usar un for lo que pasa es que no se como anidar el If que evalue dos valores entre p.e. a1 = a2
y que sino es asi me guarde tanto el valor de a1 y a2, en una variable para que me diga que hay mas de un valor en ese rango
asi sucesivamente. lo voy a intentar en codigo ..
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida