MSCBSC 移动通信论坛
搜索
登录注册
网络优化工程师招聘专栏 4G/LTE通信工程师最新职位列表 通信实习生/应届生招聘职位

  • 阅读:4305
  • 回复:4
常用表格宏代码总结
随风而飘
初级会员
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

积分 291
帖子 58
威望 31238 个
礼品券 5 个
专家指数 1
注册 2011-5-20
专业方向  网络维护
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2019-02-20 22:57:46  只看楼主 

1、按照单元格内容生成文件夹

Sub test()

d = ActiveSheet.Range("b2:b977")

For Each c In d

MkDir "e:MR报告输出文件夹" & c

Next

End Sub

2、从多个表中汇总数据

Sub smergeworkbook()

Dim sPath As String

Dim sName As String

Dim sMsg As String

Dim sMode As String

Dim sFirstFile As String

Dim lFileCount As Long

Dim lRow As Long

Dim iCol As Integer

Dim objWorkbook As Workbook

Dim objSumWk As Workbook

Dim objSumSht As Worksheet

Dim objRng As Range    '2- 13行 申明变量

With Application.FileDialog(msoFileDialogFolderPicker)

     .Show

     If .SelectedItems.Count = 0 Then

         MsgBox "请选择文件目录!", vbInformation, "Excel Home"

          Exit Sub

     End If

     sPath = .SelectedItems(1) & ""

End With     '14-21行浏览文件目录

Application.DisplayAlerts = False

If Len(Dir(sPath & "Summary.xlsx")) > 0 Then   '判断是否存在

    Kill sPath & "Summary.xlsx"

End If

Application.DisplayAlerts = True

sName = Dir(sPath & "*.xlsx")       '查找指定目录中的xlsx文件

If Len(sName) > 0 Then

       sMsg = "请选择合并方式:" & vbNewLine & vbNewLine & "1 - 合并至工作簿" & vbTab & "2 - 合并至工作表" & vbNewLine & vbNewLine

       sMode = Application.InputBox(sMsg, "Excel Home", "1")

       If Not (sMode = "1" Or sMode = "2") Then

          MsgBox "合并方式错误!", vbInformation, "Excel Home"

          Exit Sub

       End If

       Application.ScreenUpdating = False

       sFirstFile = sName

       Do

          lFileCount = lFileCount + 1   '记录被合并的工作簿个数

          Set objWorkbook = Workbooks.Open(sPath & sName)  '打开被合并的文件

          If objSumWk Is Nothing Then   '判断汇总工作簿是否存在

                 objWorkbook.Worksheets("清单").Activate

                 objWorkbook.ActiveSheet.Copy

                  Set objSumWk = ActiveWorkbook

                 If sMode = "2" Then

                   Set objSumSht = objSumWk.ActiveSheet

                    objSumSht.Name = "汇总数据"

                 End If

           Else

         If sMode = "1" Then

    objWorkbook.ActiveSheet.Copy before:=objSumWk.Sheets(1)

         Else

            objWorkbook.Worksheets("清单").Activate

             With objWorkbook.ActiveSheet

             lRow = .Cells(1048576, 1).End(xlUp).Row

             iCol = .Cells(4, 16384).End(xlToLeft).Column

             If lRow > 3 Then

             .Cells(4, 1).Resize(1, iCol).Copy objSumSht.Cells(1048576, 1).End(xlUp).Offset(1, 0)

                  Application.CutCopyMode = False

             End If

           End With

           End If

           End If

           objWorkbook.Close False

           sName = Dir

    Loop While Len(sName) > 0 And sName <> sFirstFile

    If Not objSumWk Is Nothing Then

       With objSumWk

           If sMode = "2" Then

              With objSumSht

                lRow = .Cells(1048576, 1).End(xlUp).Row

                Set objRng = .Cells(2, 1).Resize(lRow - 1, 1)

               End With

               'objRng.Formula = "=ROW()-1"

               'objRng.Formula = objRng.Value

            End If

            .SaveAs sPath & "summary.xlsx"

            .Close

        End With

    End If

    Application.ScreenUpdating = True

    If lFileCount > 0 Then

    MsgBox "成功合并" & lFileCount & "个数据文件!", vbInformation, "Excel Home"

    End If

    Else

       MsgBox "没有Excel文件!", vbInformation, "Excel Home"

    End If

    Set objRng = Nothing

    Set objSumSht = Nothing

    Set objWorkbook = Nothing

    Set objSumWk = Nothing             

End Sub

3、隔行插入

Sub 隔行插入()

Dim r%

    Do

        r = r + 2

        Rows(r).Insert

    Loop Until Cells(r + 1, 1) = ""

End Sub

4、隔行删除

Sub 隔行删除()

Dim r, s

m = Application.CountA(Columns(1))

    For r = 1 To m / 2

        Rows(r).Delete

    Next

End Sub

5、根据查找功能拾取的颜色求平均

Sub 根据查找功能拾取的颜色求平均()

    On Error GoTo 100

  Dim erng As Range, rng As Range, i As Long

  i = Application.FindFormat.Interior.Color

  Set erng = Cells(Rows.Count, "e").End(xlUp)

  For Each rng In Range([b2], erng)

    If rng.Interior.Color = i Then k = k + rng.Value: n = n + 1

  Next

  MsgBox "最后平均分为:" & k / n & "分"

  End

100:

  MsgBox "查找功能没有拾取到颜色!"

End Sub

6、合并单元格时连接每个单元格内容

Sub mergecells()

   Dim mergestr As String

   Dim mergerng As Range

   Dim rng As Range

   Set mergerng = Range("A1:B2")

   For Each rng In mergerng

        mergestr = mergestr & rng & ""

   Next

   Application.DisplayAlerts = False

   mergerng.Merge

   mergerng.Value = mergestr

   Application.DisplayAlerts = True

   Set mergerng = Nothing

   Set rng = Nothing

End Sub

7、合并内容相同的单元格

Sub 合并内容相同的单元格()

   Dim r As Integer

   Dim i As Integer

   Application.DisplayAlerts = False

   With Sheet1

      r = .Cells(Row.Count, 1).End(xlUp).Row

      For i = r To 2 Step -1

          If .Cells(i, 2).Value = .Cells(i - 1, 2).Value Then

          .Range(.Cells(i - 1, 2), .Cells(i, 2)).Merge

          End If

      Next

    End With

Application.DisplayAlerts = True

End Sub

8、是否包含合并单元格

Sub ismergecells()

  If IsNull(Range("A1:D10").MergeCells) Then

      MsgBox "包含合并单元格", vbInformation

  Else

      MsgBox "没有包含合并单元格", vbInformation

  End If

End Sub

9、删除空行

Sub test1()

Dim rng As Range, ads As String

For Each rng In [a1:a10]

    If rng = "" Then ad = ad & rng.Address & ","

Next

ads = Left(ad, Len(ad) - 1)

Range(ads).EntireRow.Delete

End Sub

10、提取文件夹下文件名及路径

Dim arr(), i

Sub 创建文件目录()

Dim PathStr As String

With Application.FileDialog(msoFileDialogFolderPicker)  '创建一个选择文件夹的对话框

   If .Show = True Then PathStr = .SelectedItems(1) Else Exit Sub

End With

If Right(PathStr, 1) <> "" Then PathStr = PathStr & ""   '如果路径没有"",则追加一个""

Cells.Clear

Application.ScreenUpdating = False

Call 查找(PathStr)

If i > 0 Then  '如果文件大于0,从A2开始,在i行3列的区域存放查找结果

Range("a2").Resize(i, 3) = WorksheetFunction.Transpose(arr)

Range("a1:c1") = Array("路径", "文件名", "大小(MB)")

Range("a:c").EntireColumn.AutoFit   '自动调整宽度

Range("c:c").NumberFormat = "0.00"

End If

Application.ScreenUpdating = True

End Sub


Private Sub 查找(路径 As String)

   Dim dirs() As String, dir_count As Long, dir_name As String, dir_name_2 As String, j

   If Right(路径, 1) <> "" Then 路径 = 路径 & ""

   dir_name = Dir(路径 & "*.*", vbDirectory) '获取文件的名称(可能文件可能文件夹)

Do While Len(dir_name) <> 0

   If Left$(dir_name, 1) <> "." Then '如果左边第一个字符不是"."(排除父级目录)

       dir_name_2 = 路径 & dir_name

   If (GetAttr(dir_name_2) And vbDirectory) = vbDirectory Then

       dir_count = dir_count + 1

       ReDim Preserve dirs(1 To dir_count) As String

       dirs(dir_count) = dir_name_2

   Else

       i = i + 1

       ReDim Preserve arr(1 To 3, 1 To i)

       arr(1, i) = 路径

       arr(2, i) = dir_name

       arr(3, i) = FileLen(路径 & dir_name) / 1024 / 1024


扫码关注5G通信官方公众号,免费领取以下5G精品资料
  • 1、回复“ZGDX”免费领取《中国电信5G NTN技术白皮书
  • 2、回复“TXSB”免费领取《通信设备安装工程施工工艺图解
  • 3、回复“YDSL”免费领取《中国移动算力并网白皮书
  • 4、回复“5GX3”免费领取《 R16 23501-g60 5G的系统架构1
  • 5、回复“iot6”免费领取《【8月30号登载】物联网创新技术与产业应用蓝皮书——物联网感知技术及系统应用
  • 6、回复“6G31”免费领取《基于云网融合的6G关键技术白皮书
  • 7、回复“IM6G”免费领取《6G典型场景和关键能力白皮书
  • 8、回复“SPN2”免费领取《中国移动SPN2.0技术白皮书
  • 对本帖内容的看法? 我要点评

     
    [充值威望,立即自动到帐] [VIP贵宾权限+威望套餐] 另有大量优惠赠送活动,请光临充值中心
    充值拥有大量的威望和最高的下载权限,下载站内资料无忧
    通信悠悠
    银牌会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    积分 3447
    帖子 696
    威望 138163 个
    礼品券 30 个
    专家指数 -33
    注册 2013-8-19
    专业方向  通信工程,网络优化
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2019-02-21 08:20:31 
    技术问题,回答得专家指数,快速升级


    QUOTE:
    原帖由 随风而飘 于 2019-2-20 22:57:46 发表
    1、按照单元格内容生成文件夹Sub test()d = ActiveSheet.Range("b2:b977")For Each c In dMkDir "e:MR报告输出文件夹" & cNextEnd Sub2、从多个表中汇总数据Sub smergeworkbook()Dim sPath As StringDim sName...

    对本帖内容的看法? 我要点评

     
    [立即成为VIP会员,百万通信专业资料立即下载,支付宝、微信付款,简单、快速!]
    史蒂芬孙
    中级会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    C友·贡献勋章  
    积分 680
    帖子 143
    威望 7202 个
    礼品券 25 个
    专家指数 -35
    注册 2011-11-28
    专业方向  通信技术
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2019-02-21 09:13:16 

    直接SQL不就完了。

    对本帖内容的看法? 我要点评

     
    最新通信职位:广东通信人才网 | 北京通信人才网 | 上海通信人才网 | 南京通信人才网 | 西安通信人才网 | 重庆通信人才网 | 中国通信人才网
    bikerboy
    论坛元老
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    纪念勋章·十周年  
    积分 20373
    帖子 548
    威望 201761 个
    礼品券 115 个
    专家指数 -1328
    注册 2008-11-11
    专业方向  无线
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2019-02-25 12:56:34 

     谢谢分享学习!

    对本帖内容的看法? 我要点评

     
    热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
    qiu8668
    入门会员



     发短消息    关注Ta 

    积分 15
    帖子 3
    威望 38 个
    礼品券 0 个
    专家指数 0
    注册 2016-12-20
    专业方向 
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2019-02-26 16:04:20 


    QUOTE:
    原帖由 随风而飘 于 2019-2-20 14:57:46 发表
    1、按照单元格内容生成文件夹Sub test()d = ActiveSheet.Range("b2:b977")For Each c In dMkDir "e:MR报告输出文件夹" & cNextEnd Sub2、从多个表中汇总数据Sub smergeworkbook()Dim sPath As StringDim sName...

    谢谢分享学习!

    对本帖内容的看法? 我要点评

     
    最新通信职位:广东通信人才网 | 北京通信人才网 | 上海通信人才网 | 南京通信人才网 | 西安通信人才网 | 重庆通信人才网 | 中国通信人才网

    快速回复主题    
    标题
    内容
     上传资料请点左侧【添加附件】

    当前时区 GMT+8, 现在时间是 2024-04-19 06:50:46
    渝ICP备11001752号  Copyright @ 2006-2016 mscbsc.com  本站统一服务邮箱:mscbsc@163.com

    Processed in 0.562295 second(s), 23 queries , Gzip enabled
    TOP
    清除 Cookies - 联系我们 - 移动通信网 - 移动通信论坛 - 通信招聘网 - Archiver