经常有人反复告诫新手:千万不要使用合并单元格。

为什么有这种警告呢,其实合并单元格是Excel中非常好用的一个功能,但它对操作用户(使用菜单按钮命令的用户)和公式用户(使用公式来计算的用户)不太友好。

一旦使用了合并单元格,在使用菜单和公式的时,excel经常会弹出窗口提示,不支持合并单元格。

今天我用vb代码设计了演示程序,来完成合并单元格最让人头疼的几个地方。

第一关,合并单元格的读取载入。

这是个典型的包含合并单元格的加班费计算表格,读取载入后如下图

核心代码:读取ws表格的指定内容到窗体表格界面

Private Sub 载入_Click() gr.setsheet 1 Set ws = excel.sheets(1) loadarray ws, 1, 1, ws.maxrow(2), ws.maxcolumn(1) End Sub

第二关:计算加班费:

第三关:分组汇总:


核心代码:

Private Sub 载入_Click() gr.setsheet 1 Set ws = excel.sheets(1) loadarray ws, 1, 1, ws.maxrow(2), ws.maxcolumn(1) End Sub Private Sub 统计_Click() Set ws = excel.sheets(1) Dim i, t, r ws.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") = t Next 载入_Click End Sub Private Sub 汇总_Click() Set ws = excel.sheets(1) ws.cells(1, "G") = "分公司汇总" Dim sz() As Long, r, c, r2, t c = 1 r = 2 r2 = ws.maxrow(2) Do If ws.isMergeCell(r, c) Then sz = ws.getmergerange(r, c) ws.cells(r, "G") = total(r, sz(3)) r = sz(3) Else ws.cells(r, "G") = ws.cells(r, "F") End If r = r + 1 If r > r2 Then Exit Do End If Loop 载入_Click End Sub

视频加载中...