Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel按行粘贴数据_Excel_Paste - Fatal编程技术网

Excel按行粘贴数据

Excel按行粘贴数据,excel,paste,Excel,Paste,我有2个excel文件,我需要将数据组合在一起 我用一些样本数据简化如下 Excel文件1 带有项目代码的第1列,例如1、2、3 第2列是物品成本,比如说$1、$2、$3 Excel文件2 带有项目代码的第1列,例如1、3和4 我想复制Excel文件1的所有第2列,粘贴到Excel文件2中,将匹配的内容粘贴到Excel文件2的第1列。如果列1不匹配,它将跳过数据 这可能吗 使用Excel函数(遗憾的是,它只在两个工作簿都打开时才起作用)。假设“数据源”工作簿位于“C:\Users\User\so

我有2个excel文件,我需要将数据组合在一起

我用一些样本数据简化如下

Excel文件1

带有项目代码的第1列,例如1、2、3

第2列是物品成本,比如说$1、$2、$3

Excel文件2

带有项目代码的第1列,例如1、3和4

我想复制Excel文件1的所有第2列,粘贴到Excel文件2中,将匹配的内容粘贴到Excel文件2的第1列。如果列1不匹配,它将跳过数据

这可能吗

  • 使用Excel函数(遗憾的是,它只在两个工作簿都打开时才起作用)。假设“数据源”工作簿位于“C:\Users\User\source.xls”,其数据分别位于A列和B列中名为“Sheet1”的工作表中。我们还假设目标工作簿的“键”数据在A列中。然后应该使用以下函数填充所需的列,从第1行开始:
    =INDIRECT(连接(“'C:\Users\User\[source.xls]Sheet1'!”,地址(匹配($A1,'C:\Users\User\[source.xls]Sheet1'!A:A),2,1,1)),1)

  • 当填充的工作表处于活动状态时,使用“目标”工作簿中的以下VBA宏:

    Sub Main()
        Dim a As Application, b As workbook, s As Worksheet, i As Integer, iMax As Integer, v As Variant
        Set a = GetInvisibleApplication
        Set b = GetWorkbook(a, "C:\Users\Zerth\1.xls")
        Set s = b.Worksheets(1)
        iMax = GetLastRow(ActiveSheet)
        For i = 1 To iMax Step 1
            v = GetValue(s, Cells(i, 1).Value)
            If Not IsNull(v) Then
                Cells(i, 2).Value = v
            End If
        Next i
        a.Quit
    End Sub
    Function GetInvisibleApplication() As Application
        Set GetInvisibleApplication = New Application
        GetInvisibleApplication.Visible = False
        GetInvisibleApplication.DisplayAlerts = False
    End Function
    Function GetWorkbook(ByRef Application As Application, ByVal Path As String) As workbook
        Application.Workbooks.Open Path
        Set GetWorkbook = Application.Workbooks(Application.Workbooks.Count)
    End Function
    Function GetLastRow(ByRef Sheet As Worksheet)
        GetLastRow = Sheet.Range("A:A").End(xlDown).Row
    End Function
    Function GetValue(ByRef Sheet As Worksheet, ByVal Key As Variant)
        Dim i, iMax As Integer, Result As Variant
        i = 0
        iMax = GetLastRow(Sheet)
        Result = Null
        Do While IsNull(Result) And (i < iMax)
            i = i + 1
            If Sheet.Cells(i, 1).Value = Key Then
                Result = Sheet.Cells(i, 2).Value
            End If
        Loop
        GetValue = Result
    End Function
    
    Sub-Main()
    将a作为应用程序,b作为工作簿,s作为工作表,i作为整数,iMax作为整数,v作为变量
    设置a=GetInvisibleApplication
    Set b=get工作簿(a,“C:\Users\Zerth\1.xls”)
    设置s=b。工作表(1)
    iMax=GetLastRow(ActiveSheet)
    对于i=1到iMax步骤1
    v=GetValue(s,单元格(i,1).Value)
    如果不为空(v),则
    单元(i,2)。值=v
    如果结束
    接下来我
    a、 退出
    端接头
    函数GetInvisibleApplication()作为应用程序
    设置GetInvisibleApplication=新应用程序
    GetInvisibleApplication.Visible=False
    GetInvisibleApplication.DisplayAlerts=False
    端函数
    函数GetWorkbook(ByRef应用程序作为应用程序,ByVal路径作为字符串)作为工作簿
    Application.Workbooks.Open路径
    设置GetWorkbook=Application.Workbooks(Application.Workbooks.Count)
    端函数
    函数GetLastRow(ByRef工作表作为工作表)
    GetLastRow=Sheet.Range(“A:A”).End(xlDown).Row
    端函数
    函数GetValue(ByRef表作为工作表,ByVal键作为变量)
    Dim i,iMax为整数,结果为变量
    i=0
    iMax=GetLastRow(图纸)
    结果=空
    Do While IsNull(结果)和(i
  • 与任何已知的编程语言一起使用,其中查找值与进行任何其他SQL查询一样容易(即,您需要的查询是
    从[Sheet1$]中选择F2,其中F1=@参数
    处于关闭状态)