Ordenar columnas en base a otra columna

Tengo 4 columnas, una columna con código y la otra con un valor. Me gustaría saber alguna forma para ordenar los códigos de la 3era columna en la misma posición que los de la primera. Ya que tengo que hacer una resta para aquellos que difieran y eliminarlos para los que sean igual, y tengo más de 1000 registros. Un ejemplo:
A B C D
B001 2 B003 4
B002 2 B005 4
B003 2 B001 4
B004 2 B006 4
Solución:
A B C D
B001 2 B001 4
B002           2                      _ _ _ _
B003           2                      B003                           4
B004           2                      _ _  _ _
 _  _ _  _                             B005                           4
_ _ _ _ _                             B006                           4

1 Respuesta

Respuesta
1
Prueba con esta fórmula, te va a ordenar los registro. Lo que tome como refderencia es que la columna A esta ordenada, aunque no esta especificado
si(eserror(coincidir($a3;$d$1:$d$5000;0));"----";$a3)
Culaauiqer duda me avisas
Hola! Pues no entiendo muy bien la función. Coinciden mis Columnas A, B, C, ¿DE con la columna a i de de la función?
Lo que hago es añadir una nueva columna con esa fórmula, tomando de referencia tus a i de, como mis columnas A y D. Así me da error, me pide un valor if error.
Y si lo modifico por:
=if(iferror(match(f2;c2:c23000;0)"err");"---";$f2)
sólo me marca con "---" los campos que aparecen en mi lista.
Perdona por la ignorancia :S
Espero que puedas ayudarme. Gracias!
Lo que pasa es que tienes excel en ingles. Te hago una consulta me podrás mandar la planilla para que la resuelva y te la envío a [email protected]
Así la veo y te la reenvío, sino avisame y vemos como lo solucionamos
Ya lo entendí! Estuve metidanolo y me quedo claro! Gracias por la ayuda! :-)
El único problema que veo es que los campos que no están dentro del listado de la columna A, no me aparecen :¿ES Alguna solución para ello?
Ok ya entendí lo que estas buscando, entonces usaremos unas macros, lo que tengo que saber es si en la columna A aparecen los datos ordenados ej
B001
B002
B003
-----
B005
O aparecen todos seguidos
B001
B002
B003
B005
Y la ultima consulta es hasta que numero llega tu registro, osea el ultimo es B999, ¿o hay uno más grabde como no se B1000?
Aclarame esto y te preparo als macros así ya queda acomodado
Pues te comento, los códigos de A siempre los tengo ordenados de mayor a menor y suelen ser números: 5400023, 5400123. Pero nunca son los mismos, y no van seguidos. Puede haber el 520002, pero que no aparezca el 520003.
No sé si con eso contesto a tus preguntas. Aunque de todas formas arreglé mucho el problema con tu ayuda! Ahora he aumentado mi velocidad de procesar los datos substancialmente! :-)
Aunque me gustaría ir mejorando la hoja excel, poco a poco. No sé si también sabrías como puedo hacer una macro, que si por ejemplo en una columna me deteca la palabra "ok", ¿me borra toda la fila donde esta contenida esa celda?
Perdona si te estoy haciendo muchas preguntas, pero ahora ya me he animado con con el programa! :P
Saludos!
OK mira a lo de la macro si se puede solucionar, pero primero vamos por partes, veamos los registros que tienes son números o pueden tener una letra, entonces lo que debería hacer la macro seria primero ordenar la columna A y después ordenar la otra, por eso es que existe la diferencia.
Ahora vamos aclarando, ¿la planilla no me la puedes enviar cierto?
Vere de corregir la macro que había hecho y te la pasare, después vemos como hacer lo de la palabra OK
Normalmente contienen números, pero también pueden llegar a contener letras.
No hay un estándar. :S
He encontrado la solución perfecta para tu planilla, en ella pones en K1, la cantidad de números que tienes en A, un ejemplo B001, pones 3, si tienes B0001, tendrás que poner 4, espero haber sido claro en esto ya que es muy importante.
Luego en L1 pones esta formula CONTAR.SI(I2:I5000;"=1")
En L2 pones esta otra formula CONTAR.SI(G2:G5000;"=1")
Solo recuerda agregarlo en esas columnas nada más, ahora vas a grabar macros, pones a grabar una macro y la detienes, luego vas a la macro y entras a paso a paso y todo lo que tienes lo reemplazas por esto otro
Sub ColumnaC()
'
' Ordenar la columna C
'
'
    Application.ScreenUpdating = False
    Range("D1:E5000").Select
    Application.CutCopyMode = False
    Selection.Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("G2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISERROR(VALUE(RIGHT(RC[-3], R1C11))-VALUE(RIGHT(R[-1]C[-3], R1C11))), 1, VALUE(RIGHT(RC[-3], R1C11))-VALUE(RIGHT(R[-1]C[-3], R1C11)))"
    Selection.Copy
    Range("G2:G5000").Select
    ActiveSheet.Paste
    For i = 1 To 5000
    If Cells(i, 7).Value > 1 Then
    Range("D" & i & ":D" & i + Range("G" & i) - 2).Select
    Selection.Insert Shift:=xlDown
    Range("E" & i & ":E" & i + Range("G" & i) - 2).Select
    Selection.Insert Shift:=xlDown
    Range("G2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISERROR(VALUE(RIGHT(RC[-3], R1C11))-VALUE(RIGHT(R[-1]C[-3], R1C11))), 1, VALUE(RIGHT(RC[-3], R1C11))-VALUE(RIGHT(R[-1]C[-3], R1C11)))"
    Selection.Copy
    Range("G2:G5000").Select
    ActiveSheet.Paste
    If Range("L2").Value = 4999 Then
    MsgBox "No hay mas registros en D", vbExclamation
    Range("G2:G5000").Select
    Selection.ClearContents
    Exit Sub
    End If
    End If
    Next
End Sub
Sub ColumnaA()
'
' Ordenar la columna A
'
'
    Application.ScreenUpdating = False
    Range("i2").Select
        ActiveCell.FormulaR1C1 = _
        "=+IF(ISERROR(VALUE(RIGHT(RC[-8], R1C11))-VALUE(RIGHT(R[-1]C[-8], R1C11))), 1, VALUE(RIGHT(RC[-8], R1C11))-VALUE(RIGHT(R[-1]C[-8], R1C11)))"
    Selection.Copy
    Range("I2:I5000").Select
    ActiveSheet.Paste
    For i = 1 To 5000
    If Cells(i, 9).Value > 1 Then
    Range("A" & i & ":A" & i + Range("I" & i) - 2).Select
    Selection.Insert Shift:=xlDown
    Range("B" & i & ":B" & i + Range("I" & i) - 2).Select
    Selection.Insert Shift:=xlDown
    Range("i2").Select
    Selection.Copy
    Range("I2:I5000").Select
    ActiveSheet.Paste
    If Range("l1").Value = 4999 Then
    MsgBox "No hay mas registros en A", vbExclamation
    Range("I2:I5000").Select
    Selection.ClearContents
    Exit Sub
    End If
    End If
    Next
End Sub
Solo recuerda de tener ordenada la columna A y listo ejecutas primero una macro y luego la otra y ya estaría
Avisame cualquier cosa
¿Quería saber si te sirvió la respuesta que te he dado?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas