使用VBA根据时间自动合并填充

2025-11-03 09:32:59

1、打开Excel表格,点击【开发工具】,【Visual Basic】打开VBA编辑器。

使用VBA根据时间自动合并填充

2、在VBA编辑器的菜单栏上面点击【插入】,【模块】。

使用VBA根据时间自动合并填充

3、在模块代码框里边输入以下VBA程序代码:

Sub MergeInColor()

Dim i, j, m, n, r As Long

On Error Resume Next        '忽略运行过程中出现的错误

Set mysheet1 = ThisWorkbook.Worksheets("Sheet1")  '定义工作表

mysheet1.Range("D2:AA1000").Clear  '清空该范围内符内容及格式

mysheet1.Range("D2:AA1000").Borders.LineStyle = xlContinuous  '添加实线边框

For r = 2 To 1000  '从第二行开始

  If mysheet1.Cells(r, 2) <> "" And mysheet1.Cells(r, 3) <> "" Then

   i = InStr(1, mysheet1.Cells(r, 2), ":")         '获取字符“:”所在的位置

   j = CInt(Mid(mysheet1.Cells(r, 2), 1, i - 1))   '截取字符并转换成数字

   m = InStr(1, mysheet1.Cells(r, 3), ":")

   n = CInt(Mid(mysheet1.Cells(r, 3), 1, m - 1))

    If j < n Then  '如果开始时间<=开始时间,则

     If CInt(Mid(mysheet1.Cells(r, 3), m + 1, 2)) <> 0 Then  '如果第三列截取的分钟不为0,则

      mysheet1.Range(Cells(r, j + 4), Cells(r, n + 4)).Merge  '合并单元格

     Else

      mysheet1.Range(Cells(r, j + 4), Cells(r, n + 3)).Merge

     End If

   End If

   mysheet1.Cells(r, j + 4) = mysheet1.Cells(r, 1)         '把第一列对应的单元格赋值到对应的单元格里边

   mysheet1.Cells(r, j + 4).HorizontalAlignment = xlCenter '合并单元格的内容水平居中

   mysheet1.Cells(r, j + 4).VerticalAlignment = xlCenter   '合并单元格的内容垂直居中

   mysheet1.Cells(r, j + 4).Interior.Color = RGB(200, 180, 250)  '合并单元格填充颜色

  End If

Next

End Sub

使用VBA根据时间自动合并填充

4、VBA程序、函数释义:

(1)“Clear”将会清理指定范围里边单元格的内容、格式(如:边框线、颜色等),使用之后,有些单元格格式可能需要进行恢复;

(2)“If”是判断函数,在判断条件满足之后再执行里边的程序;

(3)“Instr”是确定某一个字符所在的位置,即:Instr(起始位置,单元格,"查找的字符")

(4)“Mid”主要用于截取某一字符串,即:Mid(单元格,起始位置,截取个数);

(5)“CInt”是把截取的数值转换成整数,以免后面计算出错。

5、在VBA编辑器的工具栏里边点击“运行”图标运行程序,也可以按下【F5】键运行程序。

使用VBA根据时间自动合并填充

6、运行程序之后,将会在工作表上面看到执行的结果。

使用VBA根据时间自动合并填充

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢