用VBA程式设计如何遍历EXCEL每一个工作表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用VBA程式设计如何遍历EXCEL每一个工作表相关的知识,希望对你有一定的参考价值。

参考技术A 用VBA程式设计如何遍历EXCEL每一个工作表 这段小程式就把一个EXCEL档案中每个工作表的A1单元格填上了a
Sub tt()
For i = 1 To ActiveWorkbook.Worksheets.Count
ActiveWorkbook.Worksheets(i).Cells(1, 1).Value = "a"
Next
End Sub
用VBA程式设计如何连线EXCEL每一个工作表
Private Sub CommandButton1_Click()
Dim ws As Worksheet
For Each ws In Worksheets
MsgBox (ws.Name)
Next
End Sub
EXCEL VBA 如何遍历工作表
Sub test()
For Each c In ActiveSheet.Comments
c.Parent.Interior.ColorIndex = 3
Next
End Sub
vba程式设计如何遍历每一个选择的单元格?
Sub sdk()
i = 1
For Each sc In Selection
sc.Value = i
i = i + 1
Next
End Sub
vb用ado如何遍历excel中所有工作表
1、用VB 开启EXCEL 档案 
2、遍历sheets和cells
Dim xlApp As Excel.Application
Dim xlbook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Private Sub Command1_Click()
Set xlApp = New Excel.Application
xlApp.Visible = True
Set xlbook = xlApp.Workbooks.Open("d:\hao\1.xls")
For i = 1 To xlbook.Worksheets.Count
Set xlsheet = xlbook.Worksheets(i)
aa=xlsheet.Cells(1, 1)
Next
End Sub

EXCEL表格里有三个工作表,如何提取每一个表第一行到另一个工作表里
一次完成行吗?
在最末的工作表的A1输入
=INDIRECT("Sheet"&ROW()&"!"&CHAR(64+COLUMN())&1)
回车并向下填充至An(看你的工作表有多少);
再选A1~An,一起向右填充。
excel表里怎样可以查到每一个工作表
首先按CTRL+F弹出“查询和替换”视窗,然后点窗口里的“选项”,将“范围”一项选为“工作簿”,这样就能在全部工作表中进行查找了。
VBA:如何遍历资料夹下面所有工作簿,然后每个工作簿新增一个新工作表
使用dir可以编列资料夹,一般结构是:
path="d:\xls\"filename=dir(path & "*.xls*")while filename<>"" set wb=workbooks.open(path & filename) wb.sheets.add wb.save wb.close filename=dirwend
如何把一个excel工作表分成两个工作表

Excel VBA脚本优化——遍历算法——解决这个难题?

【中文标题】Excel VBA脚本优化——遍历算法——解决这个难题?【英文标题】:Excel VBA script optimization - traversal algorithm - solve this puzzle? 【发布时间】:2015-01-27 22:57:57 【问题描述】:

我有一个有点大的 Excel 工作簿,里面有几张纸。工作簿记录员工费用。

我有一个 vba 宏,可以将数据从主工作表加载到所有其他工作表,并且需要很长时间才能运行。我希望获得一些关于如何提高性能的提示。

一些快速的背景信息: 每个员工都有一张单独的表格。此表包含该员工一年中每个月的所有费用 - 1 月至 12 月(列)。可以有多种类型的费用(行)。

主数据表包含该年度所有员工的所有费用。每条记录都包含员工ID(用作员工的工作表名称)、费用类型、费用金额和日期。主表按员工 ID、日期和费用类型排序。同一日期可以有重复的费用类型。

虽然主数据表上可以有重复的费用类型,但员工表上没有重复项。每个月对每种类型的费用进行汇总。

示例 - 主表:

> EmpID1 ExpenseType1 01/02/2015 $5
> EmpID1 ExpenseType2 01/02/2015 $3
> EmpID1 ExpenseType2 01/03/2015 $6
> EmpID1 ExpenseType2 01/03/2015 $10
> EmpID1 ExpenseType2 01/04/2015 $11
> ...

示例 - 员工表:

> Months up top: Jan Feb Mar Apr May ...   
> ExpenseType1 $5 $2 $10 $3 $2
> ExpenseType2 $30 $5 $1 $32 $12 
> ExpenseType3 $11 $22 $3 $1 $2
> ...

问题: 填充员工表的最佳方法是什么?

我当前的算法通过读取每条记录来遍历主数据表一次。但它随后会多次遍历员工表。它在员工的工作表上查找该费用类型并将金额添加到上一个。

这是最优化的解决方案吗?请对我如何改进这一点有任何想法?

【问题讨论】:

您能否详细说明为什么需要多次遍历单个员工表? 展示你现有的代码会有很大帮助。详细信息比文字解释更容易理解。 【参考方案1】:

请注意,无论您的数据收集和操作算法如何,您都可以通过首先准备多维数组中的数据,然后使用 .Range VBA 方法用您的大批。

关键是您一次将数组写入一个范围,而不是逐个单元格。我假设现在您正在执行许多单独的单元格操作,例如从一个单元格中获取一条数据,将其放入另一个单元格等。excel 单元格操作和 VBA 之间的实际交互实际上很慢(不确定为什么,但可能是由于级联单元格函数和视觉更新,但有关 Excel+VBA 速度和效率规则和示例的更多信息,请参阅https://www.soa.org/News-and-Publications/Newsletters/Compact/2012/january/com-2012-iss42-roper.aspx。

有关如何使用数组和范围的更多信息:http://www.cpearson.com/excel/ArraysAndRanges.aspx 顺便说一句,C Pearson 有很多关于 Excel+VBA 的重要信息,所以我强烈推荐他的网站作为一般参考。

我以前使用过它,并将宏的速度从几分钟提高到几秒钟。希望它可以为您做同样的事情。


编辑:我不知道你目前的数据操作算法是什么,所以我还不能直接评论,但如果是为了费用的总和,你能不能试着在你去的时候总结数据, 这样您就不需要在到达工作表时进行任何额外的计算,您只需在正确的月份列中输入数据?

【讨论】:

这个方法我没见过。那么,您是否将整个数据放入内存(数组)中,然后首先处理其中的所有内容?然后把结果写到工作表上? 基本上,是的。我将很快更新我的答案,以提供更多关于范围和数组的参考/信息 感谢您的链接!我不知道这件事。我正在浏览该站点,但是将数组转储到列而不是遍历数组的每个元素并写入列的每个单元格是否更快?无论如何,第一种方法不是写入每个单元格吗? 老实说,我不是 100% 确定原因。我的猜测是 Excel 还将其数据存储在多维数组中,因此从其结构中拼接数据比通过基于 GUI 的系统更容易(因为操作单元格会触发函数和其他视觉更新)。有关更多信息,请查看有关 Excel+VBA 效率的链接:soa.org/News-and-Publications/Newsletters/Compact/2012/january/… 最后,有趣的事实:使用 3D 数组可以在多张纸上复制和粘贴数据

以上是关于用VBA程式设计如何遍历EXCEL每一个工作表的主要内容,如果未能解决你的问题,请参考以下文章

vba中的数学方程

excel中的vba是啥意思,如何用

excel如何用vba批量提取指定工作表?

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

vba excel怎么获取指定工作表的行数、列数

VBA中,方法的函数式调用和过程式调用的差别