Tengo dos archivos, digamos F1 y F2.

Si los datos de la columna 1 de F1 coinciden con la columna 1 de F2, pegue la columna 2 de F1 a F2.

Eg.

 file F1 has
    column1  column2
    X        value1
    Y        value2
    Z        value3



file F2 has
    column1    column2
    Y          key1
    Z          key2
    X          key3

Estoy tratando de insertar una nueva columna en F2 para que se vea así:

column1   column2  column3
X         value1   key3
Y         value2   key1
Z         value3   key2

Esto es alcanzable dentro del mismo archivo. ¿Cómo se puede lograr esto en varios archivos en excel / libreoffice?

1
ramailo sathi 25 ene. 2016 a las 19:28

2 respuestas

La mejor respuesta

Como se indica en los comentarios, VLOOKUP puede usar otros archivos. Así es como se ve en LibreOffice:

enter image description here

La fórmula de la imagen es:

=VLOOKUP(A1,'file:///C:/Users/JimStandard/Desktop/F1.ods'#$Sheet1.A$1:B$3,2)

Los signos $ facilitan el llenado de la fórmula haciendo clic y arrastrando el cuadrado en la esquina inferior derecha de la celda C1.

2
Jim K 25 ene. 2016 a las 19:11

Suponiendo que F1 y F2 son hojas de Excel en un libro de trabajo, puede crear una macro con este código en VBA y adaptarla a sus necesidades

Public Sub CopyColumns()

    Dim init As Range
    Dim nameColumn As String
    Dim i As Integer
    Dim n As Integer
    Dim array1(3) As String
    Dim array2(2, 3) As String     'We declare two dimensional array

    Sheets("NameOfF1Sheet").Activate

    i = 0

    Range("A1").Select    'Suppose the start cell of the row that contains the text "column1" in F1 file

    nameColumn = "column1"   'Search column name to copy

    Do
        If ActiveCell.Value = nameColumn Then
            ActiveCell.offset(1, 0).Select
            Do
                array2(1, i) = ActiveCell.Value                 'Copy data in array2 from column1
                array2(2, i) = ActiveCell.offset(0, 1).Value    'Copy data in array2 from column2
                i = i + 1
            Loop Until IsEmpty(ActiveCell) = True
        Else
            ActiveCell.offset(0, 1).Select
        End If
    While IsEmpty(ActiveCell) = True    'Copy while there is data in column1

    Sheets("NameOfF2Sheet").Activate    'Sheet change

    i = 0
    n = 0

    Range("A1").Select     'Suppose the start cell of the row that contains the text "column1" in F2 file

    nameColumn = "column1"   'Search column name to paste

    Do
        If ActiveCell.Value = nameColumn Then

            init = ActiveCell.Address

            ActiveCell.offset(0, 1).Select      'Copy all column2
            Do
                array1(n) = ActiveCell.Value
                n = n + 1
                ActiveCell.offset(1, 0).Select
            While IsEmpty(ActiveCell) = True

            Range(init).Select

            ActiveCell.offset(0, 2).Value = "column3"   'Rename old "column2" as "column3"
            ActiveCell.offset(1, 2).Select

            n = 0

            Do                                  'Paste all rows of "column2" in "column3"
                ActiveCell.Value = array1(n)
                n = n + 1
                ActiveCell.offset(1, 0).Select
            Loop Until n < 3

            Range(init).Select

            ActiveCell.offset(1, 1).Select
            Do
                If ActiveCell.Value = array2(1, i) Then
                    ActiveCell.offset(0, 2).Value = array2(2, i)    'Paste data in column2 from array2
                End If
                i = i + 1
            Loop Until i < 3
        Else
            ActiveCell.offset(0, 1).Select
        End If
    While IsEmpty(ActiveCell) = True

End Sub

Espero que sirva, soy nueva y mi primera respuesta! Espero que sirva, soy nuevo y mi primera respuesta!

1
David Lozano 26 ene. 2016 a las 11:47