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,包括空白单元格_Excel_Vba_Macos - Fatal编程技术网

根据列名称将数据从一个excel复制粘贴到另一个excel,包括空白单元格

根据列名称将数据从一个excel复制粘贴到另一个excel,包括空白单元格,excel,vba,macos,Excel,Vba,Macos,我只是想根据列名将数据从一个excel拉到另一个excel。源excel名称为“iTerm Export.xls”。图纸名称为“导出(1)”。列标题为“资产”。因此,在运行时,必须将以下宏资产列数据复制并粘贴到其他excel中,即(“iTerm metrics Report.xlsx”) 但我的问题是,如果资产列中的任何地方都有一个空白单元格,例如:资产列中有50个数据行。但25号和30号是空白单元格。当我运行宏一次时,将24行复制并粘贴到另一个excel中。但我需要所有的50行必须是复制和粘贴

我只是想根据列名将数据从一个excel拉到另一个excel。源excel名称为“iTerm Export.xls”。图纸名称为“导出(1)”。列标题为“资产”。因此,在运行时,必须将以下宏资产列数据复制并粘贴到其他excel中,即(“iTerm metrics Report.xlsx”)

但我的问题是,如果资产列中的任何地方都有一个空白单元格,例如:资产列中有50个数据行。但25号和30号是空白单元格。当我运行宏一次时,将24行复制并粘贴到另一个excel中。但我需要所有的50行必须是复制和粘贴,包括在其他excel空白行

Windows("iTerm Export.xls").Activate
Sheets("export(1)").Select
Cells.Find(What:="Asset", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("iTerm metrics Report.xlsx").Activate
Sheets("Raw Data from iTerm").Select
Range("A2").Select
ActiveSheet.Paste
请帮我做这个


谢谢

它会在空白处停止,因为xlDown选项就是这样做的。 我的建议是选择整个专栏

Columns(4).Select

或者,获取包含活动单元格的列

Columns(ActiveCell.Column).Select

它在空白处停止,因为xlDown选择就是这样做的。 我的建议是选择整个专栏

Columns(4).Select

或者,获取包含活动单元格的列

Columns(ActiveCell.Column).Select

要获取列的最后一行,可以执行以下操作:

   lastRow = Selection.EntireColumn.Find(What:="*", after:=Range("A1"), _
        LookIn:=xlFormulas, SearchOrder:=xlByRows, _
        SearchDirection:=xlPrevious).EntireRow.Row 'Use EntireRow to take hidden rows too
然后你可以:

Range(Selection, Cells(lastRow, Selection.Column)).Select

要获取列的最后一行,可以执行以下操作:

   lastRow = Selection.EntireColumn.Find(What:="*", after:=Range("A1"), _
        LookIn:=xlFormulas, SearchOrder:=xlByRows, _
        SearchDirection:=xlPrevious).EntireRow.Row 'Use EntireRow to take hidden rows too
然后你可以:

Range(Selection, Cells(lastRow, Selection.Column)).Select
海芋

我不建议您使用
。请选择
,因为这是导致错误的主要原因。例如,查看此线程

话虽如此,我还是建议直接执行您想要的操作,而不是执行
。首先选择
。另外,您如何打开工作簿“iTerm Export.xls”和“iTerm metrics Report.xlsx”?如果在运行宏时它们已经打开,则可以使用
。激活
,否则设置工作簿变量,然后打开工作簿。这样你就可以避免使用
。同时激活
。如果是这样,请告诉我,我会提供一个样本

.Select
.Activate
的另一个缺点是它会大大降低代码的速度

您的上述代码也可以按如下方式编写。这是使用
的正确方法。查找
而不是直接使用
。激活
。原因是,如果没有找到匹配项,代码将在下面的一行崩溃

Cells.Find(What:=“Asset”,After:=ActiveCell,LookIn:=xlFormulas,LookAt_
:=xlPart,SearchOrder:=xlByRows,SearchDirection:=xlNext,MatchCase:=False,SearchFormat:=False)。激活

因此,建议检查是否找到该值,然后继续

试试这个代码,看看这是不是你想要的?(未经测试

希德

阿鲁尔

我不建议您使用
。请选择
,因为这是导致错误的主要原因。例如,查看此线程

话虽如此,我还是建议直接执行您想要的操作,而不是执行
。首先选择
。另外,您如何打开工作簿“iTerm Export.xls”和“iTerm metrics Report.xlsx”?如果在运行宏时它们已经打开,则可以使用
。激活
,否则设置工作簿变量,然后打开工作簿。这样你就可以避免使用
。同时激活
。如果是这样,请告诉我,我会提供一个样本

.Select
.Activate
的另一个缺点是它会大大降低代码的速度

您的上述代码也可以按如下方式编写。这是使用
的正确方法。查找
而不是直接使用
。激活
。原因是,如果没有找到匹配项,代码将在下面的一行崩溃

Cells.Find(What:=“Asset”,After:=ActiveCell,LookIn:=xlFormulas,LookAt_
:=xlPart,SearchOrder:=xlByRows,SearchDirection:=xlNext,MatchCase:=False,SearchFormat:=False)。激活

因此,建议检查是否找到该值,然后继续

试试这个代码,看看这是不是你想要的?(未经测试

Sid

从列表()子创建

将行设置为整数 Row=ActiveCell.Row

Dim objList As Worksheet
Set objList = ActiveSheet

Dim wb As Workbook
workingPath = ActiveWorkbook.Path
'插入要将其传送到的文档(并将其保存在与源excel相同的文件夹中)

'输入从源复制的单元格,然后输入目标单元格的工作表名称以及要在目标单元格中放置信息的单元格

CheckAndCopyData objList.Cells(- , -), wb.Sheets("---").Range("--") 
CheckAndCopyData objList.Cells(- , -), wb.Sheets("---").Range("--")
CheckAndCopyData objList.Cells(- , -), wb.Sheets("---").Range("--")
CheckAndCopyData objList.Cells(- , -), wb.Sheets("---").Range("--")
CheckAndCopyData objList.Cells(- , -), wb.Sheets("---").Range("--")
CheckAndCopyData objList.Cells(- , -), wb.Sheets("---").Range("--")


Application.DisplayAlerts = False
'您可以使用传输的信息作为单据名称(使用源单据的单元格)

从_列表()子创建_

将行设置为整数 Row=ActiveCell.Row

Dim objList As Worksheet
Set objList = ActiveSheet

Dim wb As Workbook
workingPath = ActiveWorkbook.Path
'插入要将其传送到的文档(并将其保存在与源excel相同的文件夹中)

'输入从源复制的单元格,然后输入目标单元格的工作表名称以及要在目标单元格中放置信息的单元格

CheckAndCopyData objList.Cells(- , -), wb.Sheets("---").Range("--") 
CheckAndCopyData objList.Cells(- , -), wb.Sheets("---").Range("--")
CheckAndCopyData objList.Cells(- , -), wb.Sheets("---").Range("--")
CheckAndCopyData objList.Cells(- , -), wb.Sheets("---").Range("--")
CheckAndCopyData objList.Cells(- , -), wb.Sheets("---").Range("--")
CheckAndCopyData objList.Cells(- , -), wb.Sheets("---").Range("--")


Application.DisplayAlerts = False
'您可以使用传输的信息作为单据名称(使用源单据的单元格)


对不起,我试过三个以上的scnario…但与我的问题不符…对不起,我试过三个以上的scnario…但与我的问题不符。。。