Prueba y compara el rendimiento de tu PC con nuestro banco de pruebas.

Para los expertos en excel



  • Hola a todos,

    tengo un problemilla con el cual quizás alguien pueda ayudarme, el tema es que necesito vincular dos tablas en excel con un campo en comun, por ejemplo:

    Codigo nombre
    1 juan
    2 pepe
    3 luis

    siguiente tabla:

    codigo edad
    1 20
    2 30
    3 50

    Resultado que busco:

    Codigo nombre edad
    1 Juan 20
    2 pepe 30
    3 luis 50

    Las tablas de origen están en dos ficheros diferentes y la cabecera del campo a agrupar es el mismo.

    Un saludo y gracias


  • Veteranos HL

    Si sólo quieres que te una lo de la casilla A1 de la hoja 1 por ejemplo, con su homónimo de la hoja 2, hay una fórmula falicita que es "CONCATENAR" Le dices =CONCATENAR(A1hoja1;A1hoja2)

    Esta fórmula sólo tiene un problema, que te une todo, así que en vez de ponerte JUAN 21 pondría JUAN21 sin espacios. ¿Forma de solucionarlo? le dices que concatener 3 casilla, la primera la de la hoja 1, la segunda una cailla que sea una casilla en la que simplemente le deuna vez a la barra espaciadora, y la tercera la casilla de la hoja 2.

    Con lo del espacio en blanco simplemente te digo que te vayas a una casilla que puede ser si estás en la hoja 1 y la casilla A1 es la de datos, te vas a la B1 y le das un espacio en blanco. Tú no verás nada pero para excel esa casilla tiene un dato que es el espacio en blanco. La formula quedaría así =CONCATENAR(A1hoja1;B1hoja1(siendo esta la que tiene el espacio en blanco);A1hoja2)

    No sé si es esto lo que buscas. Si no te sale me mandas el fichero y te lo hago a amd125@gmail.com

    Si por el contrario lo que buscas es que en la primera casilla estén nombres y en la segunda hoja estén esos nombre y con edades por ejemplo y no están ordenador alfabéticamente o bien hay nombre en una hoja que no hay en otro… se haría con la fórmula =busvarv (buscame en vertical en la hoja 2 el dato que necesito en la hoja 1)... pero creo que no es esto sino lo primero lo que necesitas.



  • Uhm haciendo un apaño con una macro es facil, pero han de estar en el mismo fichero :S

    Sub Concateno()
        Dim Total As Integer
        Total = 10
        Set res1 = Range("H1:H" + CStr(Total))
        Set res2 = Range("I1:I" + CStr(Total))
        Set conc1 = Range("C1:C" + CStr(Total))
        Set conc2 = Range("F1:F" + CStr(Total))
        Set id1 = Range("B1:B" + CStr(Total))
        Set id2 = Range("E1:E" + CStr(Total))
    
        For idLeft = 1 To Total
            For idRight = 1 To Total
                If id1.Cells(idLeft) = id2.Cells(idRight) Then
                    res1.Cells(idLeft) = conc1.Cells(idLeft)
                    res2.Cells(idLeft) = conc2.Cells(idRight)
                End If
            Next
        Next
    
    End Sub
    

    Es bastante a saco 😛 pero la idea es que "total" es el numero de filas a comparar, y luego los rangos te indican que filas son. Puedes poner la columna a la que se refiere en una variable a parte pero bueno, yo lo he hecho a saco a que funcione.
    Simplemente recorres la columna de la izquierda y luego la de la derecha, comparas si los valores son iguales, y si lo son, las concatenas en la columna que indica "res1".


  • Veteranos HL

    No sé si entiendo bien la situación, pero creo que lo más sencillo es usar la función BUSCARV, en la que puedes buscar referencias en otras hojas.

    Por ejemplo, imaginamos que ponemos en una columna (la A) la lista de todos los códigos así
    1
    2
    3

    y en la siguiente celda (es decir, empezando en la B1, ponemos esto: =BUSCARV(A1;[Libro1.xls]Hoja1!$A$2:$B$4;2;FALSO) & " " & BUSCARV(A1;[Libro2.xls]Hoja1!$A$2:$B$4;2;FALSO)

    y copias para abajo a todas las demás. Libro1 sería el fichero de los nombres, Hoja1 la hoja donde están los nombres y A2:B4 el rango de los datos de nombre (he puesto desde la fila 2 porque has dicho que tenían una cabecera). Libro2, Hoja2 es lo mismo pero para la tabla de las edades.

    Esto funciona, pero tiene una limitación. El campo en el que estás buscando tiene que ser el primero en la matriz en la que buscas (con buscarv). Si no lo está, tambíén se puede hacer, aunque el pitote a montar es considerable (pasa por usar la función COINCIDIR dos veces para buscar la posición de fila y columna de lo que buscas y luego usar DESREF para hacer una referencia calculada a la misma).



  • Muchísimas gracias a todos, la verdad es que esta es una duda que no era para mí, y al final me dijo mi colega que ya lo había arreglado, la verdad que no me dijo como.

    Ahora me dice que tiene otro problema, jeje, se ha encontrado con ésto:

    y en el mensaje me dice:

    Como solucionar esto, tengo la tabla dbf sin el codigo de articulos, cojo de la otra tabla con el excel la abro y copio el codigo de los articulos, lo pego en la primera tabla dbf tambien con excel y cuando le doy a guardar me sale ese mensaje, y no se guarda. Como puedo hacer para que se guarden? O ke otro programa puedo utilizar?
    Gracias.

    Pues eso, de nuevo solicito vuestra ayuda. Mil gracias por vuestra ayuda y paciencia


Accede para responder