Hola a todos, me gustaría saber como ordenar campos de una columna en relación a otra. Me explico en la columna A, tengo 30 filas con nombres distintos, en B unas 10 filas con nombres iguales que A pero desordenados y en C tengo otras 10 filas con los importes de B, Lo que quiero es que me identifique los valores de B igual que A, y me coloque B y C en el mismo orden que A, y que las celdas que no me encuentre los deje en blanco.
Muchas Gracias
Si quieres mantener todos los datos necesitamos cortar las columnas B y C y llevarla a otra posición por ejemplo DE y E ahora hacer la operación de comparación y según vaya encontrando los valores los vuelva a cortar y los lleve a B y C y si no los encuentra dejara las columnas B y C en blanco. Mira si esto te sirve, sería con una macro. >Un saludo >Julio
Hola Julio, Gracias por la aclaración, pero no me entero. Lo que tengo es A B C Amarillo Caki 3 Berenjena Rojo 5 Caki - - Fucsia - - Rojo - - Quiero que me quede A B C Amarillo - - Berenjena - - Caki Caki 3 Fucsia - - Rojo Rojo 5 No encuentro la función que me corte o copie B y C y lo ordene automáticamente Gracias
Claro te dije que sería una macro de comparar y ordenadar según quieres, exactamente eso es lo que te dije que podíamos hacer, pero para poder hacer bien y con menos problemas te dije que empezamos cortando todos los valores de las columnas B y C y nos lo llevamos a DE y E por ejemplo si esas columnas las tenemos libres. Ahora la macro hará esto, la primera celda de A1 la ponemos en una variable, en tu caso Amarillo, ahora le décimo, busca amarillo en la columna DE, si lo encuentras corta esa celda y la contigua y la pegas en la columna adyacente de Amarillo, y sino lo encuentras pasa a la siguiente celda en tu ekemplo berenjena y vuelves ha hacer lo mismo. Te pongo la macro y la pruebas, si las columnas DE y E no están vacías que las tienes ocupadas pues tu cambia las letras por columnas vacías en la macro, total al final van a quedar vacía nuevamente, porque las habremos cortado y llevado a B y C nuevamente, siempre que estas coincidan con valores de A que si no se quedarán en las columnas que llamaremos de paso. Bueno aquí te dejo la macro: Private Sub Busca_Copia() Dim cel As String Dim color As String Range("B1:C65536").Select Selection.Cut Range("D1").Select ActiveSheet.Paste Range("D1").Select cel = ActiveCell.Address color = ActiveCell.Value Range(ActiveCell, ActiveCell.Offset(0, 1)).Copy Range("A1").Select ActiveCell.End(xlDown).Select Range(ActiveCell, ActiveCell.End(xlUp)).Select On Error Resume Next Set dat = Selection.Find(What:=color, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Select ActiveCell.Offset(0, 1).PasteSpecial Do While color <> "" Range(cel).Select ActiveCell.Offset(1, 0).Select cel = ActiveCell.Address color = ActiveCell.Value Range(ActiveCell, ActiveCell.Offset(0, 1)).Copy Range("A1").Select ActiveCell.End(xlDown).Select Range(ActiveCell, ActiveCell.End(xlUp)).Select On Error Resume Next Set dat = Selection.Find(What:=color, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Select ActiveCell.Offset(0, 1).PasteSpecial Loop Range("D1:E65536").Select Selection.Clear End Sub Pruebalá y me cuentas >Un saludo >Julio
Muchas Gracias Julio, Me has servido de gran ayuda, solo que ahora intento hacer lo mismo con una celda más, osea B C DE, y no lo consigo. Pero Muchas Gracias por todo
Julio, Me podrías corregir la macro para 3 celdas o cuatro, ¿en vez de doS? Muchas Gracias
Entiendo que ahora no solo quieres llevarte los datos de las columnas (antes A y B ) ahora A, B, C, y DE pues tampoco es tan difícil vamos a ver te pongo la nueva macro la analizas linea a linea (te la imprimes) y ves donde esta la diferencia y aprenderás ( que un poco de eso hemos echo todos), esta es la macro: Private Sub Busca_Copia() Dim cel As String Dim color As String Range("B1:D65536").Select Selection.Cut Range("E1").Select ActiveSheet.Paste Range("E1").Select cel = ActiveCell.Address color = ActiveCell.Value Range(ActiveCell, ActiveCell.Offset(0, 2)).Copy Range("A1").Select ActiveCell.End(xlDown).Select Range(ActiveCell, ActiveCell.End(xlUp)).Select On Error Resume Next Set dat = Selection.Find(What:=color, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Select ActiveCell.Offset(0, 1).PasteSpecial Do While color <> "" Range(cel).Select ActiveCell.Offset(1, 0).Select cel = ActiveCell.Address color = ActiveCell.Value Range(ActiveCell, ActiveCell.Offset(0, 2)).Copy Range("A1").Select ActiveCell.End(xlDown).Select Range(ActiveCell, ActiveCell.End(xlUp)).Select On Error Resume Next Set dat = Selection.Find(What:=color, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Select ActiveCell.Offset(0, 1).PasteSpecial Loop Range("E1:G65536").Select Selection.Clear End Sub Cuatro cosas había que cambiar. >Un saludo >Julio