Sub NextSeven_CodeFrame()
'应用程序设置
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual '错误处理
On Error GoTo ErrHandler '计时器
Dim StartTime, UsedTime As Variant
StartTime = VBA.Timer '变量声明
Dim Wb As Workbook
Dim Sht As Worksheet
Dim OpenWb As Workbook
Dim oSht As Worksheet
Dim i&, j& Dim Rng As Range
Dim Arr As Variant
Dim EndRow As Long
Dim RowCount As Long
Dim ColCount As Long Dim FilePath As String '实例化对象
Set Wb = Application.ThisWorkbook '选取单个文件
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.InitialFileName = Wb.Path '指定初始化路径
.Filters.Clear
.Filters.Add "Excel文件", "*.xls;*.xlsx"
If .Show = -1 Then
FilePath = .SelectedItems(1)
Else
Exit Sub
End If
End With Set OpenWb = Application.Workbooks.Open(FilePath)
Set oSht = OpenWb.Worksheets(1)
With oSht
Set Rng = Application.Intersect(.UsedRange.Offset(1), .UsedRange)
RowCount = Rng.Rows.Count
ColCount = Rng.Columns.Count
Arr = Rng.Value
For i = LBound(Arr) To UBound(Arr)
'长数字加单引号
Arr(i, 2) = "'" & Arr(i, 2)
Arr(i, 10) = "'" & Arr(i, 10)
Arr(i, 14) = "'" & Arr(i, 14)
Arr(i, 15) = "'" & Arr(i, 15)
Arr(i, 18) = "'" & Arr(i, 18)
'转置关系
Arr(i, 20) = Arr(i, 2)
Arr(i, 2) = Arr(i, 1)
Arr(i, 1) = "" Next i
End With
OpenWb.Close False Set Sht = Wb.Worksheets(1)
With Sht
.UsedRange.Offset(6).Clear '预先清除
Set Rng = .Range("A7").Resize(RowCount, ColCount)
Rng.Value = Arr '导入内容
End With Dim RowStart As Object
Dim RowsCount As Object
Dim Key As String
Dim OneKey As Variant
Set RowStart = CreateObject("scripting.dictionary")
Set RowsCount = CreateObject("scripting.dictionary") MergeColumnNo = 2 '关键字所在列 For i = LBound(Arr, 1) To UBound(Arr, 1)
Key = CStr(Arr(i, MergeColumnNo))
If RowStart.Exists(Key) = False Then
RowStart(Key) = i
RowsCount(Key) = 1
Else
RowsCount(Key) = RowsCount(Key) + 1
End If
Next i MergeCols = Array("A", "B", "D", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Z") '合并列
For Each OneKey In RowStart.Keys
For n = LBound(MergeCols) To UBound(MergeCols)
Rng.Cells(RowStart(OneKey), MergeCols(n)).Resize(RowsCount(OneKey), 1).Merge
Next n
Next OneKey Const HeadRow As Long = 6
Dim Index As Long
With Sht
EndRow = .Cells(.Cells.Rows.Count, 2).End(xlUp).Row
Index = 0
For i = HeadRow + 1 To EndRow
If .Cells(i, 2).Value <> "" Then
Index = Index + 1
.Cells(i, 1).Value = Index
End If
Next i
End With SetEdges Rng
CustomFormat Rng
Union(Sht.Range("A6:Z6"), Rng).Columns.AutoFit '运行耗时
UsedTime = VBA.Timer - StartTime
MsgBox "本次运行耗时:" & Format(UsedTime, "0.0000000秒") & "——NextSeven竭诚为您服务。"
ErrorExit: '错误处理结束,开始环境清理
Set Wb = Nothing
Set OpenWb = Nothing
Set Sht = Nothing
Set oSht = Nothing
Set Rng = Nothing Set RowStart = Nothing
Set RowsCount = Nothing Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
Exit Sub
ErrHandler:
If Err.Number <> 0 Then
MsgBox Err.Description & "!", vbCritical, "错误提示!"
'Debug.Print Err.Description
Err.Clear
Resume ErrorExit
End If
End Sub
Sub CustomFormat(ByVal Rng As Range)
With Rng
.Font.Name = "宋体"
.Font.Size = 10
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
End Sub

  

20161212xlVBA工作表数据整理合并单元格的更多相关文章

  1. Aspose.Cells 首次使用,用到模版填充数据,合并单元格,换行

    Aspose.Cells 首次使用,用到模版填充数据,合并单元格,换行 模版格式,图格式是最简单的格式,但实际效果不是这种,实际效果图如图2 图2 ,注意看红色部分,一对一是正常的,但是有一对多的订单 ...

  2. 雷林鹏分享:jQuery EasyUI 数据网格 - 合并单元格

    jQuery EasyUI 数据网格 - 合并单元格 数据网格(datagrid)经常需要合并一些单元格.本教程将向您展示如何在数据网格(datagrid)中合并单元格. 为了合并数据网格(datag ...

  3. js动态加载数据并合并单元格

    js动态加载数据合并单元格, 代码如下所示,可复制直接运行: <!DOCTYPE HTML> <html lang="en-US"> <head> ...

  4. 【Excle数据透视表】如何在数据透视表中使用合并单元格标志

    先有数据透视表如下: 现在看着这个格式不舒服,我们希望调整成如下这种样式 步骤 单击数据透视表任意单元格→右键→数据透视表选项→布局和格式→合并且居中排列带标签的单元格 注意:如果数据透视表报表布局不 ...

  5. Apache POI 合并单元格

    合并单元格所使用的方法: sheet.addMergedRegion( CellRangeAddress  cellRangeAddress  );   CellRangeAddress  对象的构造 ...

  6. BootStrap Table 合并单元格

    为了更直观展示表格的一大堆乱七八糟的数据,合并单元格就派上用场: 效果: 贴上JSON数据(后台查询数据一定要对合并字段排序): [ { "city": "广州市&quo ...

  7. Apache POI 合并单元格--简单解释版带Demo

    合并单元格所使用的方法: sheet.addMergedRegion( CellRangeAddress  cellRangeAddress  );   CellRangeAddress  对象的构造 ...

  8. 议:如何将树形菜单形式的数据转化成HTML的二维表(相同内容需合并单元格)

    一般做OA类管理系统,经常涉及到“组织架构”的概念,那么像这种有上下层级关系的数据一般会做成树形菜单的方式显示,底层代码必定会用到递归算法.这篇随笔的目的就是要谈谈除了用树形菜单来显示这种上下层级关系 ...

  9. layui:数据表格如何合并单元格

    layui.use('table', function () { var table = layui.table; table.render({ elem: '#applyTab' , url: '$ ...

随机推荐

  1. 持续集成之二:搭建SVN服务器(SvnAdmin)

    安装环境 Red Hat Enterprise Linux Server release 7.3 (Maipo) jdk1.7.0_80 apache-tomcat-7.0.90 mysql-5.7. ...

  2. python 常见脚本

    一登录就发现了这篇博客,非常感谢作者,有时间会静下心来一点一滴的看 https://www.cnblogs.com/ailiailan/p/10141741.html

  3. VMWare中桥接、NAT、Host-only

    1.概述 2.bridged(桥接模式) 3.NAT(网络地址转换模式) 4.host-only(主机模式) 5.replicate physical network connection state ...

  4. linux常用命令:rpm 命令

    rpm是一个功能十分强大的软件包管理系统. 1.命令格式: rpm  [参数]  [包名] 2.命令功能: 使得在Linux下安装.升级和删除软件包的工作变得容易,并且具有查询.验证软件包的功能.与图 ...

  5. IO(基础知识)

        IO流类的构造方法决定是输入流还是输出流.输入流连接一个文件,它会将文件中的内容读到流里面,read方法是将流里面的内容     往外读.输出流连接一个文件,它的write方法,是将内存中的内 ...

  6. kafka生产者和消费者

    在使用kafka时,有时候为验证应用程序,需要手动读取消息或者手动生成消息.这个时候可以借助kafka-console-consumer.sh和kafka-console-producer.sh 这两 ...

  7. python函数—形参、实参、位置参数、关键字参数

    1.通过def function_name([parameter]): 定义,函数一遇到return即结束运行.如果函数没有定义返回值,则返回None,如果定义了一个返回值,则返回该对象,如果一个re ...

  8. java项目跑起来报错: 程序报 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 错误

    问题: 我用的是ssm框架结合, 利用junit测试的时候抛出 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder& ...

  9. ArcThemALL!5.1:解压、脱壳、压缩样样精通

    原文链接:http://www.ithome.com/html/soft/57033.htm ArcThemALL!软件主要功能: 1.支持压缩和解压功能,支持常用的7z.zip.cab.iso.ra ...

  10. Android实践项目汇报总结(上)修改

    微博客户端的设计与实现(上) 第一章 绪论 1.1课题背景 微博可以说是时下最受人们所喜爱的一种社交方式,它是一种通过关注机制分享简短实时信息的广播式的社交网络平台.通过微博我们可以了解最新的时事新闻 ...