把你要保留的工作表的名字放到数组里,再把数组放到字典里,然后遍历工作表,判断工作表名是否在字典里存在,如果存在,把工作表移动到新工作簿里然后另存为
不想用字典和数组的话,也可以把工作表名列一列,用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实现自动批量复制并修改保存文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)