VBA 如何批量将单元格复制到另一个工作表中

VBA 如何批量将单元格复制到另一个工作表中,第1张

把你要保留的工作表的名字放到数组里,再把数组放到字典里,然后遍历工作表,判断工作表名是否在字典里存在,如果存在,把工作表移动到新工作簿里然后另存为

不想用字典和数组的话,也可以把工作表名列一列,用VBA调用countif函数判断

工作表移动到新工作簿里然后另存为的代码录制宏可以得到

给你个最实用的代码吧 用单元格已使用区域Copy到新的表中用下面代码要指明第左上解单元格要复制表的区域Copy Destination:=接收复制表的左上角单元格如把SHEET1中的已使用区域复制到SHEET2中 以SHEET2的A1单元格为起来粘贴进

不用VBA就可以实现复制。

1、同时打开两个工作簿。

2、鼠标右键点击要移动的工作表,选择移动或复制。

3、在移动或复制工作表汇总,选择另一个工作簿。

4、选择移动到最后,然后勾选建立副本,点击确定。

5、点击确定后,就可以复制过去了。

参考vlookup公式的用法,图例是要对D2输入对应的数字,解释=VLOOKUP(A:A,H:K,2,0)的含义:

vlookup()接收4个参数,图中分别是A:A,H:K,2,0。A:A代表以第一列为要查找的值,H:K代表搜索的范围是H列到K列,2代表取出H:K列中的第二列(左起),因为D2这个单元格是要找采购总量,那么H:K列的第二列就是我们要的,所以是2,0是一个参数表示匹配的方法,完全匹配就用0。

那么E2,F2的公式就分别是=VLOOKUP(A:A,H:K,3,0)和=VLOOKUP(A:A,H:K,4,0),我们只要修改第三个参数就好了(可以看到找不到的品类是#N/A因为没有对应的结果)。

对于你的情况,不同页或者不同工作表,引用不如在同一页这么简单,前2个参数你可以手动选择,会自动填上,填好一个按逗号(英文半角)。

如果上面2个图,不在一个工作簿(也就是不是同一个excel文件),那么在公式计算完后,选择全部公式区域,复制,右键选择“值”粘帖以去除公式,但如此一来这些值就是静态的数值不会再改变。

代码为:

sub 复制()

sheets("sheet2")range("a:d")copy sheets("sheet1")range("a1")

end sub

代码在文件模块里,或把以下代码粘到模块里

Sub 写入数据()

wbpath = ThisWorkbookPath & "\"

模板文件地址 = wbpath & "模板文件" & "\"

到文件夹 = wbpath & "生成表格复制到该文件夹" & "\"

my_file = Dir(模板文件地址)

Do While my_file <> ""

WorkbooksOpen Filename:=模板文件地址 & my_file

With ThisWorkbook

  data_row = ActiveSheetRange("A" & RowsCount)End(xlUp)Row

  For i = 2 To data_row

    If Val(ActiveSheetCells(i, 4)) = Val(Split(ActiveWorkbookName, "")(0)) Then

      ActiveWorkbookActiveSheetRange("F2") = ActiveSheetCells(i, 3)Value

      ActiveWorkbookSaveAs Filename:=到文件夹 & ActiveSheetRange("B" & i) & "xlsx"

      ActiveWorkbookClose False

    End If

  Next i

End With

my_file = Dir

Loop

End Sub

这是一个相当复杂的问题,需要使用C#和Excel的相关类库来实现。为了完成这个任务,你需要了解C#和Excel之间的交互方式。

首先,你需要使用MicrosoftOfficeInteropExcel类库来 *** 作Excel文件。这个类库可以让你在C#中 *** 作Excel文件。

其次,你需要使用C#中的循环语句来遍历Excel文件中的所有数据,并且使用if语句来判断符不符合条件。

第三,当符合条件时,你需要使用Excel的Range类来复制符合条件的数据,并使用Workbook和Worksheet类来粘贴到另一个工作表中。

这是一个具体的示例代码,它实现了上述功能,你可以根据你的需求来修改:

using MicrosoftOfficeInteropExcel;

private void CopyData()

{

// 创建Excel应用程序

Application excelApp = new Application();

// 打开Excel文件

Workbook workbook = excelAppWorkbooksOpen("C:\\yourfilexlsx");

// 遍历所有工作表

foreach (Worksheet sheet in workbookSheets)

{

// 设置遍历范围

Range range = sheetRange["A1", "GV1048576"];

// 遍历所有单元格

for (int i = 1; i <= rangeRowsCount; i++)

{

// 判断H列

if (rangeCells[i, 8]Value >= 5 && rangeCells[i + 1, 8]Value >= 5)

{

// 复制FGH列

Range copiedRange = sheetRange["F" + i, "H" + i];

copiedRangeCopy();

// 粘贴到C工作表

Worksheet targetSheet = workbookSheets["C"];

targetSheetRange["A" + (targetSheetUsedRangeRowsCount + 1)]PasteSpecial();

}

// 判断P列

if (rangeCells[i, 16]Value < 4 && rangeCells[i + 1, 16]Value >= 5 && rangeCells[i + 2, 16]Value >= 5)

{

// 复制NOP列

Range copiedRange = sheetRange["N" + i, "P" + i];

copiedRangeCopy();

// 粘贴到D工作表

Worksheet targetSheet = workbookSheets["D"];

targetSheetRange["A" + (targetSheetUsedRangeRowsCount + 1)]PasteSpecial();

}

// 判断X列

if (rangeCells[i, 24]Value >= 5 && rangeCells[i + 1, 24]Value >= 5 && rangeCells[i + 2, 24]Value >= 5)

{

// 复制VWX列

Range copiedRange = sheetRange["V" + i, "X" + i];

copiedRangeCopy();

// 粘贴到E工作表

Worksheet targetSheet = workbookSheets["E"];

targetSheetRange["A" + (targetSheetUsedRangeRowsCount + 1)]PasteSpecial();

}

// 判断AB列

if (rangeCells[i, 28]Value >= 5 && rangeCells[i + 1, 28]Value >= 5 && rangeCells[i + 2, 28]Value >= 5)

{

// 复制ZAAAB列

Range copiedRange = sheetRange["Z" + i, "AB" + i];

copiedRangeCopy();

// 粘贴到F工作表

Worksheet targetSheet = workbookSheets["F"];

targetSheetRange["A" + (targetSheetUsedRangeRowsCount + 1)]PasteSpecial();

}

}

}

// 保存文件

workbookSave();

// 关闭工作簿和Excel应用程序

workbookClose();

excelAppQuit();

}

这只是一个示例代码,还需要根据你的具体需求进行修改。在实际使用中,你可能需要进行错误处理、异常处理等 *** 作。

另外,在使用MicrosoftOfficeInteropExcel类库 *** 作Excel文件时,请注意内存管理问题,确保在 *** 作完成后及时释放资源,避免内存泄露。

你的意思应该是将每个表中特定的一列取出来汇总到新表中吧?

Sub

QuLieHuiZong()

Const

colNo

As

Integer

=

1

'我现在写的1,表示取A列,取哪一列就把列号改一下,B列是2,以此类推

Dim

i

As

Integer

Dim

bk

As

Workbook

Dim

sht

As

Worksheet

Set

bk

=

ActiveWorkbook

Set

sht

=

bkWorksheetsAdd

'新建一个工作表存放汇总的数据

shtName

=

"汇总"

For

i

=

2

To

bkWorksheetsCount

bkWorksheets(i)Columns(colNo)Copy

'拷贝每个表中特定的那一列

shtColumns(i

-

1)Select

shtPaste

'粘贴到汇总表中

Next

i

shtCells(1,

1)Select

'汇总表的光标归位

End

Sub

dim rng1,rng2,rng3

set rng1=sheet1usedrange

set rng2=sheet2usedrangeoffset(1,0)resize(sheet2usedrangerowscount-1,sheet2usedrangecolumns)

set rng3

这里rng3和rng2一样

sheet4[a1]=rng1

sheet4[a500]end(3)offset(1,0)=rng2

sheet4[a500]end(3)offset(1,0)=rng3

以上就是关于VBA 如何批量将单元格复制到另一个工作表中全部的内容,包括:VBA 如何批量将单元格复制到另一个工作表中、VBA同一个表格将SHEET2ABCD列复制到SHEET1中 如何实现、求助,用vba实现自动批量复制并修改保存文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9814783.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存