Excel+VB合并单元格难关之载入与分类汇总

经常有人反复告诫新手:千万不要使用合并单元格 。
为什么有这种警告呢,其实合并单元格是Excel中非常好用的一个功能,但它对操作用户(使用菜单按钮命令的用户)和公式用户(使用公式来计算的用户)不太友好 。
一旦使用了合并单元格,在使用菜单和公式的时 , excel经常会弹出窗口提示,不支持合并单元格 。
今天我用vb代码设计了演示程序,来完成合并单元格最让人头疼的几个地方 。
第一关,合并单元格的读取载入 。

Excel+VB合并单元格难关之载入与分类汇总

这是个典型的包含合并单元格的加班费计算表格,读取载入后如下图
Excel+VB合并单元格难关之载入与分类汇总

核心代码:读取ws表格的指定内容到窗体表格界面
Private Sub 载入_Click()gr.setsheet 1Set ws = excel.sheets(1)loadarray ws, 1, 1, ws.maxrow(2), ws.maxcolumn(1)End Sub
第二关:计算加班费:
Excel+VB合并单元格难关之载入与分类汇总

第三关:分组汇总:
Excel+VB合并单元格难关之载入与分类汇总



核心代码:
【Excel VB合并单元格难关之载入与分类汇总】Private Sub 载入_Click()gr.setsheet 1Set ws = excel.sheets(1)loadarray ws, 1, 1, ws.maxrow(2), ws.maxcolumn(1)End SubPrivate Sub 统计_Click()Set ws = excel.sheets(1)Dim i, t, rws.cells(1, "F") = "加班费"For r = 2 To ws.maxrow(2)t = ws.cells(r, "C") * ws.cells(r, "D") * ws.cells(r, "E")ws.cells(r, "F") = tNext载入_ClickEnd SubPrivate Sub 汇总_Click()Set ws = excel.sheets(1)ws.cells(1, "G") = "分公司汇总"Dim sz() As Long, r, c, r2, tc = 1r = 2r2 = ws.maxrow(2)DoIf ws.isMergeCell(r, c) Thensz = ws.getmergerange(r, c)ws.cells(r, "G") = total(r, sz(3))r = sz(3)Elsews.cells(r, "G") = ws.cells(r, "F")End Ifr = r1If r > r2 ThenExit DoEnd IfLoop载入_ClickEnd Sub
Excel+VB合并单元格难关之载入与分类汇总

视频加载中...

相关经验推荐