操作单元格对象1——Excel之VBA(5)

单元格对象选取

3中选择方式:

1)[a3]

2) cells(3,1)

3) range("a1")

一、range 范围单元语句

示例:

range("a1:a10").select

range("a1").value = 1

注:单元格的默认属性就是.value,故而range("a1")= 1不报错

1.range语句的属性

1) Offset 偏移属性

2) End 边界属性

3) EntireRow 整行属性

4) resize 重定义区域

5) copy 复制单元格

示例:

range("a1").offset(2,3).select

注:选中A1的下2,右3的偏移单元格,即D3

 range("a1").End(xlUP)

注:选择A1所在数据区域的上边界,作用同双击单元格上边线

range("a1").EntireRow

注:整行

range("a1").resize(1,3)

注:重定义选择区域大小,选中A1单元格所在的1行3列区域

Range.("h7:l7").copy Range("n7")

注:复制区域h7到l7的内容,到n7开始的同等区域

 

 

牛刀小试:

要求:拆分数据到多表

Sub chaifen()

Dim i As Integer
Dim k As Integer
Dim j As Integer

For j = 2 To Sheets.Count

    For i = 2 To Sheets(1).Range("a65536").End(xlUp).Row
    
        If Sheets(1).Range("d" & i).Value = Sheets(j).Name Then
            k = Sheets(j).Range("a65536").End(xlUp).Row
            Sheets(1).Range("d" & i).EntireRow.Copy Sheets(j).Range("a" & k + 1)
        End If
    
    Next
Next


End Sub

算法思想:

逐条扫描数据表取数据,取完一张表再去取下一张表

数据表扫描次数,2到空行上边界。Sheets(1).Range("a65536").End(xlUp).Row,空行区域的上边界的行号

若部门名与表名匹配,则复制整行到,目标表的第一个匹配到的空行。

k = Sheets(j).Range("a65536").End(xlUp).Row,目标表的空行上边界
k+1,即第一个空行
扫描整表次数:2到
Sheets.Count,表数

 

 带清除的拆分:

Sub chaifen()

Dim i As Integer
Dim k As Integer
Dim j As Integer

Call clear


For j = 2 To Sheets.Count

    For i = 2 To Sheets(1).Range("a65536").End(xlUp).Row
    
        If Sheets(1).Range("d" & i).Value = Sheets(j).Name Then
            k = Sheets(j).Range("a65536").End(xlUp).Row
            Sheets(1).Range("d" & i).EntireRow.Copy Sheets(j).Range("a" & k + 1)
        End If
    
    Next
Next


End Sub

Sub clear()

Dim i As Integer

For i = 2 To Sheets.Count
    Sheets(i).Range("a2:f10000").ClearContents
    
Next

End Sub

 

 

 

续:

posted @ 2020-11-17 19:12  云谷の风  阅读(271)  评论(0编辑  收藏  举报