Comparar Celdas!!

17/03/2005 - 04:51 por DANILO ARANGO | Informe spam
Hola De Nuevo!!
Necesito Comparar una celda, que si tiene una valor determinado me ponga en
una celda otro valor, en el archivo que trabajo lo tengo que hacer asi:
Las Columnas de la I a la R deben o no de tener una X dependiendo de lo que
hay en otra celas por ejemplo:

I J K L M N O P Q R T
X RET
X ING
X VAC
Los valores que hay en la columna T son las condiciones de cada una columnas
de las de la I a la R.
Tengo una macro que me compara una fila:

Select Case Range("T1").Select
Case Range("T1").Value = "ing"
Range("I1").Select
ActiveCell.FormulaR1C1 = "X"
Case Range("T1").Value = "ret"
Range("J1").Select
ActiveCell.FormulaR1C1 = "X"
Case Range("T1").Value = "vac"
Range("R1").Select
ActiveCell.FormulaR1C1 = "X"
Case Else
Range("I1").Select
ActiveCell.FormulaR1C1 = ""
Range("J1").Select
ActiveCell.FormulaR1C1 = ""
Range("K1").Select
ActiveCell.FormulaR1C1 = ""
Range("L1").Select
ActiveCell.FormulaR1C1 = ""
Range("M1").Select
ActiveCell.FormulaR1C1 = ""
Range("N1").Select
ActiveCell.FormulaR1C1 = ""
Range("O1").Select
ActiveCell.FormulaR1C1 = ""
Range("P1").Select
ActiveCell.FormulaR1C1 = ""
Range("Q1").Select
ActiveCell.FormulaR1C1 = ""
Range("R1").Select
ActiveCell.FormulaR1C1 = ""
End Select

Y asi todas las celdas, pero esto lo tengo que hacer fila por fila y me
queda un codigo muy grande por que llevo 500 filas y quiero hacerlo para
muchas mas filas.

Alguna manera de hacerlo en un ciclo, o de alguna manera mas automatico..

GRACIAS A TODOS

Preguntas similare

Leer las respuestas

#11 DANILO ARANGO
29/03/2005 - 19:33 | Informe spam
HOLA HECTOR!!!

Disculpa por la moloestia,,pero me urge saber como puedo ingresarle mas
claves a la ultima macro que me dijiste

GRACIAS POR TU AYUDA.

DANILO ARANGO
Respuesta Responder a este mensaje
#12 Héctor Miguel
30/03/2005 - 00:18 | Informe spam
hola, Danilo !

... urge saber como... ingresarle mas claves a la ultima macro que me dijiste...



si solamente necesitas aumentar el 'alcance' de las abreviaciones...
-> agrega las que sean necesarias 'respetando' la 'posicion' segun la columna del 'listado'...
Clave = Array("ing", "ret", "tda", "taa", "vsp", "vst", "sln", "ige", "lma", "vac")
Desplaza = Array(-11, -10, -9, -8, -7, -6, -5, -4, -3, -2)

si es el caso que tienes mas abreviaciones 'confundibles'...
observa que en los msgboxes utilizo:
-> 2 posibilidades para las que inician en 'I' [Ing/Ige], 'T' [Tda/Taa]
-> y una tercera como 'opcional' para las que inician con 'V' [Vsp, Vst, Vac]

si comentas datos adicionales... ;)
saludos,
hector.
Respuesta Responder a este mensaje
#13 DANILO ARANGO
30/03/2005 - 07:55 | Informe spam
HOLA HECTOR!!!

Lo que pasa es que en el ultimo codigo que me enviaste que es el que puede
reconocer cuando las claves bienen por ejemplo: ing-ret, no pude agregarle
mas claves, por que haciendo una extraccion de los listados, encontramos
nuevas claves que los usuarios mandan por ejemplo:
ing: ingreso
ret: retiro
vst: vts
Los usuarios aveces lo mandan como ellos quieren y luchar contra eso es muy
dificil.
dime que podemos hacer, si me puedes decir como lo hago o te pongo las
diferentes claves que nos pueden llegar, aunque me gustaria saber como
hacerlo, en el codigo que es:
Clave = Array("ing", "ret", "tda", "taa", "vsp", "vst", "sln", "ige",
"lma", "vac")
Desplaza = Array(-11, -10, -9, -8, -7, -6, -5, -4, -3, -2)
en este si pude hacerlo, pero la verdad el ultimo codigo que me enviaste me
parecio muy interesante pero complejo para mi, El ultimo codigo es:

Sub PonerClaved(): Application.ScreenUpdating = False
Dim Claves, Celda As Range, Clave As Integer, Preguntar As Boolean, _
Filas As Long, Fila As Long, Varios As Byte, Desde As Byte, Hasta
As Byte
Claves = Array("vac", "lma", "ige", "sln", "vst", "vsp", "taa", "tda",
"ret", "ing")
For Each Celda In Selection: Celda.Offset(, -11).Resize(, 10).ClearContents
Preguntar = True: Clave = EstaClave(LCase(Celda), Claves)
If Clave <> -1 Then Celda.Offset(, -Clave - 2) = "X": Preguntar = False
If Preguntar Then
With ActiveWindow
Fila = Celda.Row: Filas = .VisibleRange.Rows.Count +
.VisibleRange.Row - 2
If Fila > Filas Then .ScrollRow = .VisibleRange.Row + (Fila -
Filas): Application.ScreenUpdating = True
End With: Application.ScreenUpdating = True
Varios = Len(Celda) - Len(Application.Substitute(Celda, "-", "")) + 1
If Varios > 1 Then
Desde = 1
For Sig = 1 To Varios
If Sig < Varios Then Hasta = InStr(Desde, Celda, "-") - 1
Clave = EstaClave(LCase(Trim(Mid(Celda, Desde, 3))), Claves)
If Clave <> -1 Then Celda.Offset(, -Clave - 2) = "X"
Desde = Hasta + 2
Next
Else
Select Case LCase(Celda)
Case ""
Case "i": Corrige Celda, "ING", "IGE", "SIN Marca", 11, 4
Case "t": Corrige Celda, "TDA", "TAA", "SIN Marca", 9, 8
Case "v": Corrige Celda, "VSP", "VST", "Siguiente...", 7, 6
Case Else: MsgBox "Clave NO 'reconocida' !!!", vbCritical,
Celda.Address
End Select
End If
End If
Next
End Sub
Private Function EstaClave(ByVal Clave As String, Claves) As Integer: Dim
Sig As Byte: EstaClave = -1
For Sig = LBound(Claves) To UBound(Claves)
If Clave = Claves(Sig) Then EstaClave = Sig: Exit For
Next
End Function
Private Sub Corrige(ByVal Celda As Range, _
ByVal Op1 As String, ByVal Op2 As String, ByVal Op3 As String, _
ByVal Col1 As Byte, ByVal Col2 As Byte)
Select Case MsgBox("Selecciona la opción apropiada..." & vbCr & _
"SI = " & Op1 & vbCr & "NO = " & Op2 & vbCr &
"Cancelar = " & Op3, _
vbYesNoCancel + vbDefaultButton3 + vbQuestion,
"Corregir " & Celda.Address)
Case vbYes: Celda.Offset(, -Col1) = "X": Case vbNo: Celda.Offset(,
-Col2) = "X"
Case vbCancel
If Op3 = "Siguiente..." Then
If MsgBox("¿Deseas marcarla como ""VAC""?", _
vbYesNo + vbDefaultButton2 + vbQuestion, "Corregir " &
Celda.Address) = vbYes _
Then Celda.Offset(, -2) = "X"
End If: End Select
End Sub

Este es un ejemplo de las posibles claves que nos pueden llegar aunque uno
sabe cuando puedan cambiar
Clave = Array("Ing", "Ingreso", "Inicio", "Inicia", "Ret", "R", "retiro",
"retirado", "retirada", "Tda", "Taa", "Vsp", "Vps", "Vst", "Vts", "Sln",
"Ige", "Lma", "Vac")
fuera de las que ya sabesmos (i,t,v)

INMESAMENTE AGRADECIDO CON TU AYUDA DE VERDA QUE ME HAZ AYUDADO MUCHISIMO
GRACIAS
DANILO
Respuesta Responder a este mensaje
#14 Héctor Miguel
30/03/2005 - 09:26 | Informe spam
hola, Danilo !

... encontramos... claves que los usuarios mandan... como ellos quieren y luchar contra eso es muy dificil.
... que podemos hacer... me gustaria saber como hacerlo [...]
... un ejemplo de las posibles claves que nos pueden llegar aunque uno no sabe cuando puedan cambiar...
..."Ing", "Ingreso", "Inicio", "Inicia", "Ret", "R", "retiro", "retirado", "retirada", _


"Tda", "Taa", "Vsp", "Vps", "Vst", "Vts", "Sln", "Ige", "Lma", "Vac")
fuera de las que ya sabemos (i,t,v)



[recuerda que] una de las primeras 'observaciones' que puse en la propuesta anterior era...
'... siempre y cuando las claves 'vengan completas' [3 literales en cada 'separacion'] ...'


[ademas de que] 'originalmente' se trataba de 10 'claves/codigos' ->distintos<- que...
-> NO 'compartian' posiciones en la matriz [o 'Array']... con lo cual...
-> 'era posible'... determinar cuantas columnas debia el codigo 'retroceder' para poner la 'X'
=> ahora... => tienes 'detectadas' [hasta el momento] DIECINUEVE claves NO-'diferentes'...
[ademas de que ya no tienen 3 caracteres] 'comparten' alguna posicion las siguientes:
-> Ing, Ingreso, Inicio, Inicia
-> Ret, R, Retiro, Retirado, Retirada
-> Vsp, Vps
-> Vst, Vts
-> MAS... las que 'vayan apareciendo... a capricho de los usuarios' :\
primero: las posiciones 'compartidas' IMPIDEN que la matriz 'sirva' para determinar las columnas 'en retroceso' :(
segundo: [creo que] es tiempo de 'poner un limite' a 'caprichos y arbitrariedades' por parte de los usuarios -?-
[quizas] seria conveniente que utilicen algun 'formato pre-establecido' y/o que 'forces' unas 'reglas de validacion' ;)
otra [posible] 'alternativa' pudiera ser que...
-> 'mantengas' el codigo como esta [hasta la version 'reciente'] y...
-> hagas reemplazos/sustituciones de las claves 'caprichosamente adicionadas' para 'ajustarlas al estandar'
esto podrias hacerlo 'directamente' por [menu] edicion / reemplazar... o por codigo [pero... que mas 'aparecera' ?]
[me parece que] 'diseñar' algun codigo que 'prevenga/corrija' TODA 'eventualidad'... es mejor 'poner limites' -?-

lamento si no es la respuesta que esperabas :(
podemos esperar comentarios adicionales [con seguridad alguien este 'mas fresco' que yo -a estas horas-] :)
saludos,
hector.
Respuesta Responder a este mensaje
#15 DANILO ARANGO
30/03/2005 - 09:49 | Informe spam
HOLA HECTOR

TIENES TODA LA RAZON,,,Lo que voy hacer es crear una macro por que lo que me
encuentre con esas claves que no tenemos en el codigo anterior me las cambie,
y esta la pongo antes de comenzar el codigo que tu me diste

Hector no se si con esto si me puedas ayudar...en el codigo necesito que
cuando haya una celda vacia no me la muestre por que lo que estoy haciendo es
por medio de codigo selecciono hasta la celda t1000 pero por ejemplo si
apartir de la 200 en adelante estan vacias el codigo me las va mostranto una
por una...y esto es muy demorado...

AAA Y UNA PREGUNTA DE DONDE ERES????

GRACIAS HECTOR
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida