如果通过 vba 实现 多工作表且带函数计算的工作薄另存仅有结果数值的新工作薄
时间: 2024-09-19 10:04:30 浏览: 32
在VBA(Visual Basic for Applications)中,如果你想实现一个功能,即在一个包含多个工作表并且包含函数计算的Excel工作簿中,只保留每个工作表的结果数值,并将这些结果保存到一个新的工作簿中,你可以按照以下步骤操作:
1. **遍历工作簿**:
使用`Sheets`对象的`Collection`来访问每个工作表。例如:
```vba
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
' 这里处理每个工作表
Next ws
```
2. **提取数据**:
对于每个工作表,可以使用公式、`Range`对象或特定的单元格区域来获取需要的计算结果。比如,如果你想要取A1:C10区域内的值:
```vba
Dim result As Variant
result = ws.Range("A1:C10").Value ' 或者使用ws.Cells(1, 1).CurrentRegion.Value等
```
3. **清理内容**:
删除原始工作表中的公式或复杂的计算部分,仅保留结果数值。这通常需要设置单元格的`FormulaHidden`属性为`True`,以便隐藏公式:
```vba
ws.Cells.FormulaHidden = True
```
4. **添加结果到新工作簿**:
创建一个新的工作簿并复制提取的结果到新工作簿的一个新的工作表上:
```vba
Dim newBook As Workbook
Set newBook = Workbooks.Add()
Dim newRowSheet As Worksheet
Set newRowSheet = newBook.Worksheets.Add()
newRowSheet.Range("A1").Resize(UBound(result, 1), UBound(result, 2)) = result
```
5. **另存新工作簿**:
最后,保存这个新工作簿,只包含计算后的数值:
```vba
newBook.SaveAs "ResultValues.xlsx" ' 替换为你想保存的文件名和路径
newBook.Close SaveChanges:=False ' 关闭新工作簿,不保存更改
```
阅读全文