zoukankan      html  css  js  c++  java
  • 操作单元格对象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

    续:

  • 相关阅读:
    Euclid's Game (简单博弈)
    “科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛(部分题解)
    牛客小白月赛4 (B 博弈论)
    博弈--尼姆博弈
    C# .net中获取台式电脑中串口设备的名称
    打印出C# 中float ,double 在内存中的存放形式
    VS2010 C++ 创建COM组件
    .net 中两个日期算经过的月份数
    一种计算MD5的实现方法
    将文件从程序集中复原
  • 原文地址:https://www.cnblogs.com/zeon/p/13995869.html
Copyright © 2011-2022 走看看