【VB6|第20期】遍历Excel单元格的四种方法

3 篇文章 1 订阅

日期:2023年7月19日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006


在这里插入图片描述



一、前言

最近有用到 VB6,VBA 操作 Excel,常用的方法就是遍历单元格,接着就是进行各种操作。这里总结了四种遍历单元格的方法,选择合适的拿去使用,效率会更高些哦 ^ - ^

在这里插入图片描述

二、按单元格坐标遍历单元格

按单元格索引遍历单元格是指通过指定行号和列号来访问 Excel 中的特定单元格。在电子表格中,每个单元格都有唯一的行号和列号,通过这些索引可以精确定位并获取该单元格中的数据。

  • 单元格坐标表示法:“第2行第1列” 是一种坐标表示法,在编程中较为常见。
  • 单元格地址表示法:“A2” 是一种电子表格软件中的单元格地址表示法,用于标识特定单元格的位置

在这里插入图片描述

封装代码:

Private Sub xlTrvseByCellIdx()
On Error Resume Next
'函数说明:按单元格坐标遍历单元格
'创建作者:Commas
'创建时间:2023-07-19
'修改时间:
'------传参说明------
'------传参说明------

    '(1)创建
    Dim xlApp As Excel.Application      'Excel COM 组件,Excel 应用程序的实例
    Dim xlBook As Excel.Workbook        'Excel COM 组件,Excel 应用程序中的一个工作簿(Workbook)
    Dim xlSheets As Excel.Sheets        'Excel COM 组件,Excel 工作簿中所有的工作表(Worksheet)
    Dim xlSheet As Excel.Worksheet      'Excel COM 组件,Excel 工作簿(Workbook)中的一个工作表
    'Set xlApp = New Excel.Application              'NO1:实例化对象
    Set xlApp = CreateObject("Excel.Application")   'NO2:实例化对象
    Set xlBook = xlApp.Workbooks.Open(App.Path & "\example.xlsx")
    Set xlSheets = xlBook.Worksheets

    '(2)操作
    xlApp.Visible = False         'Excel 应用程序窗口的可见性控制
    '当 ScreenUpdating = True 时 ,Excel 将显示对工作表的更改;
    '当 ScreenUpdating = False 时,Excel 将在后台执行操作,不显示对工作表的更改,从而提高执行速度。
    xlApp.ScreenUpdating = False  'Excel 应用程序的屏幕更新控制
    
    
    ' 遍历Sheet1中每个单元格
    Dim i As Long, j As Long
    Set xlSheet = xlSheets(1) ' xlSheets("Sheet1")
    For i = 1 To xlSheet.UsedRange.Rows.Count
        For j = 1 To xlSheet.UsedRange.Columns.Count
            Debug.Print i, j, xlSheet.Cells(i, j).Value
        Next j
    Next i

    
    xlApp.ScreenUpdating = True

    '(3)销毁
    ' 保存并关闭工作簿
    xlBook.Save     ' 保存Excel文件
    xlBook.Close    ' 关闭Excel文件
    xlApp.Quit      ' 关闭Excel Application对象
    
    ' 释放资源
    Set xlSheet = Nothing
    Set xlSheets = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub

调用代码:

call xlTrvseByCellIdx

输出结果:

 1             1            姓名
 1             2            部门
 1             3            年龄
 2             1            张三
 2             2            技术部
 2             3             18 
 3             1            李小龙
 3             2            技术部
 3             3             19 
 4             1            王五
 4             2            市场部
 4             3             20 
 5             1            赵六
 5             2            销售部
 5             3             21 
 6             1            钱七
 6             2            销售部
 6             3             22 

三、按矩形区域遍历单元格

矩形区域:通过指定起始单元格结束单元格的地址来遍历一个矩形区域,例如从 A1C6 这个矩形区域内的所有单元格。在这里插入图片描述

封装代码:

Private Sub xlTrvseByUsedRange()
On Error Resume Next
'函数说明:按使矩形区域单元格
'创建作者:Commas
'创建时间:2023-07-19
'修改时间:
'------传参说明------
'------传参说明------

    '(1)创建
    Dim xlApp As Excel.Application      'Excel COM 组件,Excel 应用程序的实例
    Dim xlBook As Excel.Workbook        'Excel COM 组件,Excel 应用程序中的一个工作簿(Workbook)
    Dim xlSheets As Excel.Sheets        'Excel COM 组件,Excel 工作簿中所有的工作表(Worksheet)
    Dim xlSheet As Excel.Worksheet      'Excel COM 组件,Excel 工作簿(Workbook)中的一个工作表
    'Set xlApp = New Excel.Application              'NO1:实例化对象
    Set xlApp = CreateObject("Excel.Application")   'NO2:实例化对象
    Set xlBook = xlApp.Workbooks.Open(App.Path & "\example.xlsx")
    Set xlSheets = xlBook.Worksheets

    '(2)操作
    xlApp.Visible = False         'Excel 应用程序窗口的可见性控制
    '当 ScreenUpdating = True 时 ,Excel 将显示对工作表的更改;
    '当 ScreenUpdating = False 时,Excel 将在后台执行操作,不显示对工作表的更改,从而提高执行速度。
    xlApp.ScreenUpdating = False  'Excel 应用程序的屏幕更新控制
    
    
    ' 遍历Sheet1中每个单元格
    Set xlSheet = xlSheets(1) ' xlSheets("Sheet1")
    Dim cell As Excel.Range
    
    'NO1;工作表中实际包含数据的范围 xlSheet.UsedRange
    Debug.Print "NO1;工作表中实际包含数据的范围 xlSheet.UsedRange"
    For Each cell In xlSheet.UsedRange.Cells
    'For Each cell In xlSheet.UsedRange '缩写,省略掉了.Cells,也是可以的
        ' 在这里进行单元格操作
        Debug.Print cell.Row, cell.Column, cell.Value
    Next cell
    
    'NO2;显式指定范围来引用工作表中的特定区域 xlSheet.Range
    Debug.Print ""
    Debug.Print "NO2;显式指定范围来引用工作表中的特定区域 xlSheet.Range"
    For Each cell In xlSheet.Range("A1:C6").Cells
    'For Each cell In xlSheet.UsedRange '缩写,省略掉了.Cells,也是可以的
        ' 在这里进行单元格操作
        Debug.Print cell.Row, cell.Column, cell.Value
    Next cell
    
    
    xlApp.ScreenUpdating = True

    '(3)销毁
    ' 保存并关闭工作簿
    xlBook.Save     ' 保存Excel文件
    xlBook.Close    ' 关闭Excel文件
    xlApp.Quit      ' 关闭Excel Application对象
    
    ' 释放资源
    Set xlSheet = Nothing
    Set xlSheets = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub

调用代码:

call xlTrvseByUsedRange

输出结果:

NO1;工作表中实际包含数据的范围 xlSheet.UsedRange
 1             1            姓名
 1             2            部门
 1             3            年龄
 2             1            张三
 2             2            技术部
 2             3             18 
 3             1            李小龙
 3             2            技术部
 3             3             19 
 4             1            王五
 4             2            市场部
 4             3             20 
 5             1            赵六
 5             2            销售部
 5             3             21 
 6             1            钱七
 6             2            销售部
 6             3             22 

NO2;显式指定范围来引用工作表中的特定区域 xlSheet.Range
 1             1            姓名
 1             2            部门
 1             3            年龄
 2             1            张三
 2             2            技术部
 2             3             18 
 3             1            李小龙
 3             2            技术部
 3             3             19 
 4             1            王五
 4             2            市场部
 4             3             20 
 5             1            赵六
 5             2            销售部
 5             3             21 
 6             1            钱七
 6             2            销售部
 6             3             22 

四、按行范围遍历单元格

行范围:可以通过指定起始行结束行来遍历特定的行,例如从第2行到第2行。
在这里插入图片描述
封装代码:

Private Sub xlTrvseByRangeRow(ByVal lngRowIdx As Long)
On Error Resume Next
'函数说明:指定行范围遍历单元格
'创建作者:Commas
'创建时间:2023-07-19
'修改时间:
'------传参说明------
'lngRowIdx:需要指定的行号
'------传参说明------

    If lngRowIdx < 1 Then Exit Sub

    '(1)创建
    Dim xlApp As Excel.Application      'Excel COM 组件,Excel 应用程序的实例
    Dim xlBook As Excel.Workbook        'Excel COM 组件,Excel 应用程序中的一个工作簿(Workbook)
    Dim xlSheets As Excel.Sheets        'Excel COM 组件,Excel 工作簿中所有的工作表(Worksheet)
    Dim xlSheet As Excel.Worksheet      'Excel COM 组件,Excel 工作簿(Workbook)中的一个工作表
    'Set xlApp = New Excel.Application              'NO1:实例化对象
    Set xlApp = CreateObject("Excel.Application")   'NO2:实例化对象
    Set xlBook = xlApp.Workbooks.Open(App.Path & "\example.xlsx")
    Set xlSheets = xlBook.Worksheets

    '(2)操作
    xlApp.Visible = False         'Excel 应用程序窗口的可见性控制
    '当 ScreenUpdating = True 时 ,Excel 将显示对工作表的更改;
    '当 ScreenUpdating = False 时,Excel 将在后台执行操作,不显示对工作表的更改,从而提高执行速度。
    xlApp.ScreenUpdating = False  'Excel 应用程序的屏幕更新控制
    
    
    ' 遍历Sheet1中每个单元格
    Set xlSheet = xlSheets(1) ' xlSheets("Sheet1")
    Dim cell As Excel.Range
    For Each cell In xlSheet.UsedRange.Rows(lngRowIdx).Cells
        ' 在这里进行单元格操作
        Debug.Print cell.Row, cell.Column, cell.Value
    Next cell

    
    xlApp.ScreenUpdating = True

    '(3)销毁
    ' 保存并关闭工作簿
    xlBook.Save     ' 保存Excel文件
    xlBook.Close    ' 关闭Excel文件
    xlApp.Quit      ' 关闭Excel Application对象
    
    ' 释放资源
    Set xlSheet = Nothing
    Set xlSheets = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub

调用代码:

Call xlTrvseByRangeCol(1)

输出结果:

 1             1            姓名
 2             1            张三
 3             1            李小龙
 4             1            王五
 5             1            赵六
 6             1            钱七

五、按列范围遍历单元格

列范围:您可以通过指定起始列结束列来遍历特定的列,例如从第 A 列到第 A 列 。
在这里插入图片描述

封装代码:

Private Sub xlTrvseByRangeCol(ByVal lngColIdx As Long)
On Error Resume Next
'函数说明:指定列范围遍历单元格
'创建作者:Commas
'创建时间:2023-07-19
'修改时间:
'------传参说明------
’lngColIdx :需要指定的列号
'------传参说明------

    If lngColIdx < 1 Then Exit Sub
    
    '(1)创建
    Dim xlApp As Excel.Application      'Excel COM 组件,Excel 应用程序的实例
    Dim xlBook As Excel.Workbook        'Excel COM 组件,Excel 应用程序中的一个工作簿(Workbook)
    Dim xlSheets As Excel.Sheets        'Excel COM 组件,Excel 工作簿中所有的工作表(Worksheet)
    Dim xlSheet As Excel.Worksheet      'Excel COM 组件,Excel 工作簿(Workbook)中的一个工作表
    'Set xlApp = New Excel.Application              'NO1:实例化对象
    Set xlApp = CreateObject("Excel.Application")   'NO2:实例化对象
    Set xlBook = xlApp.Workbooks.Open(App.Path & "\example.xlsx")
    Set xlSheets = xlBook.Worksheets

    '(2)操作
    xlApp.Visible = False         'Excel 应用程序窗口的可见性控制
    '当 ScreenUpdating = True 时 ,Excel 将显示对工作表的更改;
    '当 ScreenUpdating = False 时,Excel 将在后台执行操作,不显示对工作表的更改,从而提高执行速度。
    xlApp.ScreenUpdating = False  'Excel 应用程序的屏幕更新控制
    
    
    ' 遍历Sheet1中每个单元格
    Set xlSheet = xlSheets(1) ' xlSheets("Sheet1")
    Dim cell As Excel.Range
    For Each cell In xlSheet.UsedRange.Columns(lngColIdx).Cells
        ' 在这里进行单元格操作
        Debug.Print cell.Row, cell.Column, cell.Value
    Next cell

    
    xlApp.ScreenUpdating = True

    '(3)销毁
    ' 保存并关闭工作簿
    xlBook.Save     ' 保存Excel文件
    xlBook.Close    ' 关闭Excel文件
    xlApp.Quit      ' 关闭Excel Application对象
    
    ' 释放资源
    Set xlSheet = Nothing
    Set xlSheets = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub

调用代码:

Call xlTrvseByRangeRow(2)

输出结果:

 2             1            张三
 2             2            技术部
 2             3             18 

版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/131827870

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VB是一种编程语言,可以利用它来批量提取多个Excel单元格的数据。以下是一个简单的示例: ``` Sub 批量提取数据() Dim 文件路径 As String Dim 表格 As Workbook Dim 工作表 As Worksheet Dim 单元格 As Range Dim 行数 As Integer Dim 列数 As Integer ' 设置文件路径,这里假设多个Excel文件在同一文件夹下 文件路径 = "C:\文件夹路径\" ' 循环遍历所有文件 文件名 = Dir(文件路径 & "*.xlsx") Do While 文件名 <> "" ' 打开文件 Set 表格 = Workbooks.Open(文件路径 & 文件名) ' 遍历工作表 For Each 工作表 In 表格.Sheets 行数 = 工作表.Cells(Rows.Count, 1).End(xlUp).Row 列数 = 工作表.Cells(1, Columns.Count).End(xlToLeft).Column ' 提取数据 For Each 单元格 In 工作表.Range(工作表.Cells(1, 1), 工作表.Cells(行数, 列数)) ' 在这里处理单元格数据,可以根据需要做任何操作,比如复制到另一个工作表或保存到数组等 ' 示例中只打印数据到Immediate窗口 Debug.Print 单元格.Value Next 单元格 Next 工作表 ' 关闭文件 表格.Close ' 继续下一个文件 文件名 = Dir Loop End Sub ``` 以上示例使用VB编写了一个名为"批量提取数据"的子过程。程序首先设置了一个文件路径变量,指向存放多个Excel文件的文件夹。然后,通过使用`Dir`函数遍历该文件夹下的所有.xlsx文件。对于每个文件,程序打开并遍历其中的工作表。然后,使用`Rows.Count`和`Columns.Count`函数确定每个工作表的行数和列数。接下来,程序使用嵌套的`For Each`循环遍历每个单元格,可以在循环中对单元格进行任何需要的操作。 请注意,以上示例只是展示VB如何批量提取多个Excel单元格数据的一种方式,根据实际需求,您可能需要根据具体情况进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值