美文网首页
Excel VBA--表和单元格操作

Excel VBA--表和单元格操作

作者: 敬子v | 来源:发表于2023-01-13 11:37 被阅读0次

    一、基础操作

    1.添加4月1日到4月30日的所有表

    Sub text()
    Dim i
    For i = 1 To 30
        Sheets.Add after:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = "4月" & i & "日"
    Next
    End Sub
    

    输出

    连续删除

    Sub text()
    Sheets.Application.DisplayAlerts = False
    Dim i
    For i = 1 To 30
        Sheets(Sheets.Count).Delete
    Next
    Sheets.Application.DisplayAlerts = False
    End Sub
    

    2.添加并修改表名

    Sub text()
    Sheets.Add after:=Sheet1
    Sheet2.Name = "叶问"
    
    End Sub
    

    3.将表复制到最后一个,并且重命名

    Sub text()
    Sheets("sheet1").Copy after:=Sheets(Sheets.Count)
    ActiveSheet.Name = "lili"
    End Sub
    

    4.提取表的名称并汇总

    Sub text()
    Sheets("汇总").Range("a1") = "姓名"
    Dim i
    For i = 2 To 4
        Sheets("汇总").Range("A" & i) = Sheets(i).Name
    Next
    End Sub
    

    5.提取工作表的名称及数值

    Sub text()
    Dim i
    For i = 2 To Sheets.Count
        Sheets("汇总表").Range("a" & i) = Sheets(i).Name
        Sheets("汇总表").Range("b" & i) = Sheets(i).Range("a2")
        
    Next
    End Sub
    

    6.移动

    Sub text()
    Sheets("4月1日").Move before:=Sheets("汇总表")
    End Sub
    

    move 与copy 的区别
    move只移动位置,原表不保留
    copy保留原表

    7.利用变量给所有表中的单元格赋值

    Sub text()
    Dim i, j
    For j = 2 To Sheets.Count
        Set i = Sheets(j)
        i.Range("A1") = 500
        
    Next
    End Sub
    

    8.对多个表同时计算

    Sub text()
    Dim i, s1, s, j
    For i = 1 To Sheets.Count
        Set s1 = Sheets(i)
        s = 0
        For j = 2 To 4
            s = s + s1.Range("b" & j)
        Next
        s1.Range("e1") = s
    Next
    End Sub
    

    9.分模块汇总计算

    Option Explicit
    
    Sub 总分()
    Dim i, s1, s, j
    For i = 1 To Sheets.Count
        Set s1 = Sheets(i)
        s = 0
        For j = 2 To 4
            s = s + s1.Range("b" & j)
        Next
        If s1.Name <> "汇总" Then
            s1.Range("e1") = s
        End If
    Next
    End Sub
    
    Sub 汇总()
    Dim i, s1
    For i = 2 To Sheets.Count
        Set s1 = Sheets(i)
        Sheets("汇总").Range("A" & i) = s1.Name
        Sheets("汇总").Range("b" & i) = s1.Range("e1")
    Next
    End Sub
    
    Sub 合并()
    Call 总分
    Call 汇总
    End Sub
    
    

    10.添加控件


    二、函数

    创建并调用函数

    1.

    Function 随机数()
        随机数 = Int(Rnd * 10) + 1
    End Function
    
    Sub 使用函数()
    MsgBox 随机数()
    End Sub
    

    单元格中用 =随机数() 调用

    2.

    Function 称呼(x)
        If x = "女" Then
            称呼 = "女士"
        Else
            称呼 = "男士"
        End If
    End Function
    
    Sub text()
    Dim i, s
    For i = 2 To 7
        Set s = Range("b" & i)
        Range("c" & i) = 称呼(s)
    Next
    End Sub
    
    

    3.截取数据

    Sub text()
    Dim s
    Set s = Range("a2")
    城市 = InStr(s, "市")
    区县 = InStr(s, "区")
    Range("E2") = Left(s, 城市)
    Range("f2") = Mid(s, 城市 + 1, 区县)
    Range("g2") = Right(s, Len(s) - 区县)
    End Sub
    

    更高效更准确的用正则表达式,和其他语言也是通过用的

    4.

    Sub text()
    Dim s, i
    For i = 2 To 5
        Set s = Range("a" & i)
        Range("b" & i) = Split(s, "-")(2) & "年 第" & Split(s, "-")(3) & "周"
    Next
    End Sub
    

    5.从身份证中提取出生日期

    Sub sr()
    Dim x, i
    i = 2
    Do While Range("a" & i) <> ""
        x = Range("a" & i)
        Range("b" & i) = DateSerial(Mid(x, 7, 4), Mid(x, 11, 2), Mid(x, 13, 2))
    i = i + 1
    Loop
    End Sub
    

    6.for each next

    把每个工作表名汇总

    Option Explicit
    
    Sub text()
    Dim i, j
    i = 2
    For Each j In Worksheets
        If j.Name <> "汇总" Then
            Range("a" & i) = j.Name
            i = i + 1
        End If
    
    Next
    End Sub
    
    

    再逐一删除

    Sub 删除()
    Excel.Application.DisplayAlerts = False
    Dim j
    For Each j In Worksheets
        If j.Name <> "汇总" Then
            j.Delete
        End If
    Next
    Excel.Application.DisplayAlerts = True
    End Sub
    

    以下两者相等

    For Each j In Worksheets
    For i = 1 To Sheets.Count
        Set w = Sheets(i)
    

    for each next 在单元格中的应用

    Sub a()
    Dim i, s1
    i = 1
    For Each s1 In Range("A1:A10")
        s1.Value = i
        i = i + 1
    Next
    End Sub
    

    for each 实战

    Sub 汇总()
    Dim i, s1, j, k
    Set s1 = Sheets("汇总")
    For i = 2 To 7
        Name = s1.Range("a" & i)
        For Each j In Worksheets
            If Right(j.Name, 1) = "月" Then
                k = 2
                Do While j.Range("a" & k) <> ""
                If j.Range("a" & k) = Name Then
                    s1.Range("b" & i) = s1.Range("b" & i) + j.Range("b" & k)
                End If
                k = k + 1
                Loop
            End If
        Next
    Next
    End Sub
    

    三、属性

    Sub a()
    Range("b2") = ThisWorkbook.Name
    Range("b3") = ThisWorkbook.Path
    Range("b4") = ThisWorkbook.FullName
    
    End Sub
    

    😊以上是我的笔记整理,希望对需要的朋友有所帮助!

    相关文章

      网友评论

          本文标题:Excel VBA--表和单元格操作

          本文链接:https://www.haomeiwen.com/subject/khfufdtx.html