Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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
Vba 将Excel文件1中的数据放入Excel文件2_Vba_Excel - Fatal编程技术网

Vba 将Excel文件1中的数据放入Excel文件2

Vba 将Excel文件1中的数据放入Excel文件2,vba,excel,Vba,Excel,我有两个Excel文件,其中有人名(同一单元格中的姓氏和名字),在第二个文件中,我想将Excel文件1的数据放在写有某人相同姓名的地方,并复制写在同一行中的他的工作名。我会给你们一个例子,让你们能理解。为了让你们知道,我只是在Excel文件2中有一些员工。在Excel文件1中,大约有1200名员工,而在Excel文件2中,只有大约150名员工。我需要一个VBA技巧。:>希望你喜欢有趣的内容 您可以不用VBA,只需使用索引和匹配excel功能。在您的情况下,您需要将以下公式放入Excel File

我有两个Excel文件,其中有人名(同一单元格中的姓氏和名字),在第二个文件中,我想将Excel文件1的数据放在写有某人相同姓名的地方,并复制写在同一行中的他的工作名。我会给你们一个例子,让你们能理解。为了让你们知道,我只是在Excel文件2中有一些员工。在Excel文件1中,大约有1200名员工,而在Excel文件2中,只有大约150名员工。我需要一个VBA技巧。:>希望你喜欢有趣的内容


您可以不用VBA,只需使用索引和匹配excel功能。在您的情况下,您需要将以下公式放入Excel File2 B3单元格,并复制到下面的单元格中

=INDEX([Excel File1.xlsx]Sheet1!$A$3:$B$8,MATCH($A3,[Excel File1.xlsx]Sheet1!$A$3:$A$8,0),2)

上述公式基于文件名为“Excel File1.xlsx”,数据位于“Sheet1”中,数据从第3行到第8行。因此,请相应调整。索引匹配组合非常有用,因此我建议您阅读更多有关它的内容,并做一些练习。

我得到了一个古老的模板,可以将原始工作表中的数据复制回原始文件。 如果您正在寻找一种方法来循环浏览2个打开的文件,这就可以了。在“File1”上托管代码并在那里运行,将最后一部分修改为所需的范围

Dim BookCounter As Integer
Dim wb, FirstWB, SecondWB As Workbook

Set FirstWB = ActiveWorkbook                'set the initial variables
BookCounter = 0



'*********** Looping to check if more than 2 files (FIRST + SECOND) are open ********
For Each wb In Workbooks
    BookCounter = BookCounter + 1
Next
If BookCounter > 2 Then
    MsgBox "Please Close all unnecessary files!" & vbNewLine & vbNewLine & "Make sure you keep only 2 files open while running this Macro.", vbOKOnly + vbInformation, "Too Many Files Open"
    Exit Sub
Else
    'nothing
End If


'*********** Looping to set the RAW workbook into your SecondWB variable **************
For Each wb In Workbooks
    If wb.FullName <> FirstWB.FullName Then
        wb.Activate
        Set SecondWB = ActiveWorkbook
    End If
Next



'------------- now that you've captured both files, you can move from
'--------------------- one to another with <variable>.activate cmnd, selecting the sheet + range, and copying whatever you need.

Dim FirstSht, SecondSht As Worksheet

FirstWB.Activate
    Sheets(1).Select
    Set FirstSht = ActiveSheet

SecondWB.Activate
    Sheets(1).Select
    Set SecondSht = ActiveSheet

'--------------------------- cycling through the "files" (now captured as your var.workbooks) needs to be done with <>.activate cmnd

FirstWB.Activate
FirstSht.Select
    FirstSht.Range("A1").Copy

SecondWB.Activate
SecondSht.Select
    SecondSht.Range("A100").PasteSpecial Paste:=xlPasteAll
Dim BookCounter为整数
将wb、第一个wb、第二个wb作为工作簿
Set FirstWB=ActiveWorkbook'设置初始变量
BookCounter=0
'**********循环以检查打开的文件是否超过2个(第一个+第二个)********
对于工作簿中的每个wb
BookCounter=BookCounter+1
下一个
如果BookCounter>2,则
MsgBox“请关闭所有不必要的文件!”&vbNewLine&vbNewLine&“确保运行此宏时仅打开2个文件。”,vbOKOnly+vbInformation,“打开的文件太多”
出口接头
其他的
”“没有
如果结束
'**********循环以将原始工作簿设置为第二个WB变量**************
对于工作簿中的每个wb
如果wb.FullName FirstWB.FullName,则
wb.激活
设置SecondWB=ActiveWorkbook
如果结束
下一个
'-----------现在您已经捕获了这两个文件,可以从
'--------------使用。激活cmnd,选择工作表+范围,然后复制所需内容。
第一次调暗,第二次调暗为工作表
第一个WB。激活
第(1)页。选择
Set FirstSht=ActiveSheet
第二,激活
第(1)页。选择
设置SecondSht=ActiveSheet
“-----------------------------需要使用.activate cmnd完成“文件”(现在捕获为var.workbook)的循环
第一个WB。激活
第一步。选择
第一层范围(“A1”)。副本
第二,激活
第二步。选择
第二层范围(“A100”)。粘贴特殊粘贴:=xlPasteAll

难道你不能简单地把它们放在一起,然后使用像
=AND(COUNTIF(a:a,A1)>1,LEN(B1))
这样的公式,过滤只看到
真值并删除它吗?