Enfrentar Celdas Iguales

13/09/2003 - 04:03 por Compumakro | Informe spam
Amigos
Aquí tengo otra situación imposible para resolverla solo y sin ayuda.
Tengo 2 columnas con números: una consecutiva "testigo" y otra el
consecutivo "saqueado"
Lo que necesito es que los consecutivos se enfrenten para ver cual me hace
falta.
Hacer "a mano" 4500 filas es muy dispendioso.
Ejemplo

A B C D
0001 0004
0002 0007
0003 0008
0004 0011
0005 0015
0006 0016
0007 0018
0008 0021
Etc, etc
Como observarán en éste ejemplo, los números 0001 0002, 0003, fueron
"saqueados" entonces sus celdas en la columna "D" o sea del frente deben
quedar vacías y los números que existen deben colocarse en el frente o sea
en columna "D" así como sigue:


A B C D
0001
0002
0003
0004 0004
0005
0006
0007 0007
0008

El resto de números deben estar más abajo frente a las celdas que les
corresponden.
Qué fórmula o código hay que aplicar para esto?.
Lo ideal para mi sería que yo tuviera una sola celda de entrada y allí al
digitar el número correspondiente a la Columna "D", con el sólo Enter el
número saliera a buscar su "pareja" y se posara al frente.
Les recuerdo que la columna "C" es simplemente "Testigo".
Muchas gracias por anticipado

Oscar
Barranquilla

Preguntas similare

Leer las respuestas

#1 ramon
13/09/2003 - 13:39 | Informe spam
suponiendo que los datos estan en el rango a1:a8 (utilizo el numero de fila
como numero de orden)

For Each Celda In Range("A1:A8")
Celda.Select
Fila1 = Celda.Row
Fila2 = Trim(Str(Fila1))
Fila3 = Trim(Str(Celda))
If Celda = Fila1 Then
Range("B" & Fila2).Value = Celda.Value
Else
Range("B" & Fila3).Value = Celda.Value
End If
Next


"Compumakro" escribió en el mensaje
news:
Amigos
Aquí tengo otra situación imposible para resolverla solo y sin ayuda.
Tengo 2 columnas con números: una consecutiva "testigo" y otra el
consecutivo "saqueado"
Lo que necesito es que los consecutivos se enfrenten para ver cual me hace
falta.
Hacer "a mano" 4500 filas es muy dispendioso.
Ejemplo

A B C D
0001 0004
0002 0007
0003 0008
0004 0011
0005 0015
0006 0016
0007 0018
0008 0021
Etc, etc
Como observarán en éste ejemplo, los números 0001 0002, 0003, fueron
"saqueados" entonces sus celdas en la columna "D" o sea del frente deben
quedar vacías y los números que existen deben colocarse en el frente o sea
en columna "D" así como sigue:


A B C D
0001
0002
0003
0004 0004
0005
0006
0007 0007
0008

El resto de números deben estar más abajo frente a las celdas que les
corresponden.
Qué fórmula o código hay que aplicar para esto?.
Lo ideal para mi sería que yo tuviera una sola celda de entrada y allí al
digitar el número correspondiente a la Columna "D", con el sólo Enter el
número saliera a buscar su "pareja" y se posara al frente.
Les recuerdo que la columna "C" es simplemente "Testigo".
Muchas gracias por anticipado

Oscar
Barranquilla


Respuesta Responder a este mensaje
#2 ramon
14/09/2003 - 08:36 | Informe spam
Sí que funciona. Prueba poniendo en el rango A1:a8 numeros, escribe la macro
y ejecútala, verás como en la columna B aparecen los números que tienes en
el rango a1:a8, colocados en la fila correspondiente al numero.



"Compumakro" escribió en el mensaje
news:e$
Hola Ramón
Esto no me funcionó. Lo que sale deberías ensayarlo tu mismo, pues me


queda
dificil explicar.
Se selecciona la celda A1 luego la A2, Luego la A3, A4, A5, A6, A7, A8 y
regresa a la A1 a muy alta velocidad una y otra vez. Tengo que pulsar ESC
para poder pararlo, pues el Mouse no responde.
Ojalá yo pueda tomar solo la celda "E2" como unica celda de entrada.
Gracias y Saludos

Oscar
Barranquilla
"ramon" escribió en el mensaje
news:%
> suponiendo que los datos estan en el rango a1:a8 (utilizo el numero de
fila
> como numero de orden)
>
> For Each Celda In Range("A1:A8")
> Celda.Select
> Fila1 = Celda.Row
> Fila2 = Trim(Str(Fila1))
> Fila3 = Trim(Str(Celda))
> If Celda = Fila1 Then
> Range("B" & Fila2).Value = Celda.Value
> Else
> Range("B" & Fila3).Value = Celda.Value
> End If
> Next
>
>
> "Compumakro" escribió en el mensaje
> news:
> > Amigos
> > Aquí tengo otra situación imposible para resolverla solo y sin ayuda.
> > Tengo 2 columnas con números: una consecutiva "testigo" y otra el
> > consecutivo "saqueado"
> > Lo que necesito es que los consecutivos se enfrenten para ver cual me
hace
> > falta.
> > Hacer "a mano" 4500 filas es muy dispendioso.
> > Ejemplo
> >
> > A B C D
> > 0001 0004
> > 0002 0007
> > 0003 0008
> > 0004 0011
> > 0005 0015
> > 0006 0016
> > 0007 0018
> > 0008 0021
> > Etc, etc
> > Como observarán en éste ejemplo, los números 0001 0002, 0003, fueron
> > "saqueados" entonces sus celdas en la columna "D" o sea del frente


deben
> > quedar vacías y los números que existen deben colocarse en el frente o
sea
> > en columna "D" así como sigue:
> >
> >
> > A B C D
> > 0001
> > 0002
> > 0003
> > 0004 0004
> > 0005
> > 0006
> > 0007 0007
> > 0008
> >
> > El resto de números deben estar más abajo frente a las celdas que les
> > corresponden.
> > Qué fórmula o código hay que aplicar para esto?.
> > Lo ideal para mi sería que yo tuviera una sola celda de entrada y allí
al
> > digitar el número correspondiente a la Columna "D", con el sólo Enter


el
> > número saliera a buscar su "pareja" y se posara al frente.
> > Les recuerdo que la columna "C" es simplemente "Testigo".
> > Muchas gracias por anticipado
> >
> > Oscar
> > Barranquilla
> >
> >
>
>


Respuesta Responder a este mensaje
#3 Héctor Miguel
14/09/2003 - 09:30 | Informe spam
Hola, Oscar !

... 2 columnas con numeros: una consecutiva "testigo" y otra el consecutivo "saqueado"
... necesito ... que los consecutivos se enfrenten para ver cual me hace falta.
... "a mano" 4500 filas es muy dispendioso.



==> prueba el siguiente codigo
1) 'ajusta' al rango 'real' de filas de la columna 'testigo'
2) el 'screenupdating' es para que se ejecute mas 'rapidin' ;)
3) el 'save' es para 'recuperar' la ultima fila 'ocupada' [despues de insertar las filas 'faltantes']

Sub Empatar_Testigo()
Dim Celda As Range
Application.ScreenUpdating = False
For Each Celda In Range("c1:c21")
If Celda.Offset(, 1) > Celda Then Celda.Offset(, 1).Insert xlDown
Next
ActiveWorkbook.Save
End Sub
_______
Saludos,
Héctor.
MS-MVP
Respuesta Responder a este mensaje
#4 Compumakro
21/09/2003 - 20:29 | Informe spam
Gracias Hector.
El error se debió a la falta de comprensión mia.
Cordial Saludo
Oscar
Barranquilla

"Héctor Miguel" escribió en el mensaje
news:
Hola, Oscar !

> ... he hecho lo posible y ... no me funciona ... mira el codigo a ver


[...]

==> las hojas que enviaste en el adjunto, son 'diferentes' a la consulta


'planteada' [en el 'arreglo' de los datos] :(
el cogido propuesto esta 'basado' en la consulta original y


'asume' que...
a) la columna con los numeros 'testigo' es la columna 'c' e 'inicia'


en la fila 1 <=> b) la columna con los numeros 'saqueados' [columna 'd'] INICIA [al
menos, asi se 'aprecia'] EN 'la misma fila' [1] <=> c) lo que 'hace' el codigo [basado en lo anterior] es:
1) 'revisa' cada celda del rango [que especifiques] en la columna


'testigo' [c] 'vs' MISMA fila de columna 'saqueada' [d]
2) si el 'saqueado' =>Celda.Offset(, 1)<= es mayor que el


'testigo', lo 'va bajando' hasta 'emparejarlo' con 'su testigo'
d) para que 'funcione'
1) la primer fila de 'saqueados' DEBE SER IGUAL a la primer fila


de 'testigos' =>y AMBOS ordenados en 'ascendente'<> 2) el rango en la macro debe ser [al menos] 'hasta el testigo'
IGUAL al numero 'mayor' que exista en 'saqueados'

>> 1) 'ajusta' al rango 'real' de filas de la columna 'testigo'
>> 2) el 'screenupdating' es para que se ejecute mas 'rapidin' ;)
>> 3) el 'save' es para 'recuperar' la ultima fila 'ocupada' [despues


de insertar las celdas 'faltantes']
>> Sub Empatar_Testigo()
>> Dim Celda As Range
>> Application.ScreenUpdating = False
>> For Each Celda In Range("c1:c21")
>> If Celda.Offset(, 1) > Celda Then Celda.Offset(, 1).Insert xlDown
>> Next
>> ActiveWorkbook.Save
>> End Sub

¿comentas con estos 'supuestos'?
_______
Saludos,
Héctor.
MS-MVP


Respuesta Responder a este mensaje
#5 Héctor Miguel
21/09/2003 - 23:46 | Informe spam
Hola, Oscar !

... error ... falta de comprension mia.



==> o... 'exceso de apreciaciones' de mi parte ??? ... ;)

Saludos,
Héctor.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida