写在前面:

最近老大丢给我一个数据量比较大,比较复杂的表,让我用VB去处理,刚被分到这个任务的时候一脸茫然,对Excel VB开发一点都不了解,所以就自己研究并查资料,最后终于解决了。

一、Excel VBA拆分合并单元格并自动填充

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim n As Long, i As Long, c As Range
    n = ActiveSheet.UsedRange.Count
    For i = 1 To n
        If ActiveSheet.UsedRange.Item(i).MergeCells = True Then
            ActiveSheet.UsedRange.Item(i).Select
            Selection.UnMerge
            With Selection
                .Value = .Cells(1, 1)
            End With
            Selection.Cells(1, 1).Copy
            Selection.PasteSpecial Paste:=xlPasteFormats
        End If
    Next
End Sub
注意:SelectionChange是一个单元格事件,即当工作表上的选定区域发生改变时,将产生本事件。

二、Excel VBA在每一条数据插入一条空白行

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    LastRow = ActiveSheet.UsedRange.Rows.Count
    LastRow = LastRow + ActiveSheet.UsedRange.Rows.Count
    Dim i As Integer
     For i = 1 To LastRow
      ActiveSheet.Rows(i + 2).Insert shift:=xlDown
        i = i + 1
     Next
End Sub
注意:在每一行后面插入数据就是隔行插入空白行,之后利用Cells(i,j)来对每行进行赋值就可以了,下面就是我这个代码中为空白行赋的值
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    LastRow = ActiveSheet.UsedRange.Rows.Cou
    Dim i As Integer  
       For i = 3 To LastRow
        Cells(i, 11) = Cells(i - 1, 15)
        Cells(i, 13) = Cells(i - 1, 16)
        Cells(i, 14) = Cells(i - 1, 17)
        Cells(i, 18) = Cells(i - 1, 18)
        Cells(i, 19) = Cells(i - 1, 19)
        Cells(i, 20) = Cells(i - 1, 20)
        i = i + 1
      Next
End Sub
注意:Worksheet_BeforeDoubleClick 为工作表的双击事件,当双击单元格表时就会触发这个事件

三、Excel VBA将地理坐标的经纬度转换成秒等功能

需要注意的是:如果经纬度数据中的度分秒数据中的度分秒是通过插入符号进去的,就需要用拆分函数,如果是设置单元格格式中的自定义的度分秒(下图所示),就不能用拆分的方法就需要用提取字符串的方法,由于我的数据中两种格式都有,所以处起来比较麻烦,就需要有判断的语句,代码如下
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim D As Integer
    Dim F As Integer
    Dim M As Double
    Dim LastRow As Integer
    Dim vecSplit As Variant
    LastRow = ActiveSheet.UsedRange.Rows.Count
    Dim i As Integer
    Dim value As String
    
    For j = 12 To 13 'j是列
     For i = 2 To LastRow 'i是行
       value = Cells(i, j)
       If (Cells(1, j) = "经度") Then
        If (Cells(i, j) Like "*°*") Then
             vecSplit = Split(Cells(i, j), "°", 2)
             D = Val(vecSplit(0))
             vecSplit = Split(vecSplit(1), "′", 2)
             F = Val(vecSplit(0))
             M = Val(vecSplit(1))
             Cells(i, 18) = D + F / 60 + M / 3600
         Else
             D = Left(value, 3)
             F = Mid(value, 4, 2)
             M = Right(value, Len(value) - 5)
             Cells(i, 18) = D + F / 60 + M / 3600
          End If
       
    ElseIf (Cells(1, j) = "纬度") Then
        If (Cells(i, j) Like "*°*") Then
             vecSplit = Split(Cells(i, j), "°", 2)
             D = Val(vecSplit(0))
             vecSplit = Split(vecSplit(1), "′", 2)
             F = Val(vecSplit(0))
             M = Val(vecSplit(1))
             Cells(i, 19) = D + F / 60 + M / 3600
         Else
             D = Left(value, 2)
             F = Mid(value, 3, 2)
             M = Right(value, Len(value) - 4)
             Cells(i, 19) = D + F / 60 + M / 3600
          End If
      End If
      Next
End Sub
同样Worksheet_BeforeDoubleClick 为工作表的双击事件,当双击单元格表时就会触发这个事件

Excel vba开发 合并单元格拆分自动填充功能、在每一条数据后面插入空白行、将地理坐标的经纬度转换成度等功能相关推荐

  1. 13.Excel vba开发-合并单元格内容

    1.需求:合并单元格内容 2.代码: Sub 无损合并单元格()Dim outputText As StringConst delim = ""On Error Resume Ne ...

  2. 将excel中的合并单元格拆分并填充数据

    需求场景: 有时候处理EXCEL时,会遇到合并单元格的数据.如果直接用pandas空值补全,会导致空单元格会被相邻的数据填充.需要处理合并单元格的同时,不影响原有的空值单元格. 实现思路: 使用 op ...

  3. Excel快速取消合并单元格并自动填充

    CTRL+A 全选 取消单元格合并 CTRL+G 定位空值 ,编辑栏输入 ''=A2(首个空值上一单元格,仔细观察可以看到首个空值单元格背景色为无色,其他空值单元格为灰色填充))" CTRL ...

  4. 快速取消合并单元格并自动填充(含空值)

    合并单元格数据中包含空值,取消合并单元格并填充时,空值填充错误怎么办? 复制原数据到一个新的sheet 取消合并单元格 CTRL+G 定位空值 编辑栏输入"太阳"(任一数据表中不包 ...

  5. Pandas读取excel合并单元格的正确姿势(openpyxl合并单元格拆分并填充内容)

    问题介绍(ffill填充存在的问题) 在pandas读取excel经常会遇到合并单元格的问题.例如: 此时使用pandas读取到的内容为: 如果去百度,几乎所有人会说应该用如下代码: df['班级'] ...

  6. Excel VBA:合并单元格并保留所合并单元格的全部数据

    在Excel中,使用合并单元格功能时,最后的结果将只是所合并区域左上角单元格中的数据,如图1所示. 然而,很多时候我们都需要在合并的同时也能保留单元格的的数据.下面的程序在合并单元格后将保留合并单元格 ...

  7. Excel如何取消合并单元格并自动填充值

    效果 初始内容: 效果如下: 步骤 1. 选中需要取消合并的单元格内容,右键=>设置单元格格式=>对齐=>取消合并单元格=>确定 2. 鼠标不要动,紧接着按Control(Ct ...

  8. 【excel】合并单元格拆分后每一格都填充为与原来相同内容

    用的比较频繁的一个操作,单元格合并拆分出的单元格自动填充为合并前内容 比较烦合并单元格,记得以前看过一本excel书里把合并单元格列为一大恶习,因为这严重影响数据分析,但那本书没说怎么处理,导致我才学 ...

  9. 使用pandas如何在Excel里面取消合并单元格?多出来的单元格如何自动填充为第一个单元格的值?...

    首先,如果你希望使用 pandas 在 Excel 中取消合并单元格,你可以使用 pandas 的 unmerge_cells() 方法. 例如,假设你有一个名为 df 的 DataFrame,你可以 ...

最新文章

  1. 安装H3C的各种问题
  2. 200kb以上图片储存
  3. 趣谈网络协议笔记-二(第十七讲)
  4. 为什么读博士的人越来越多?博士毕业难度不是越来越大吗?
  5. 计算机科学与编程基础,国外经典教材·计算机科学与技术:Oracle 10g编程基础
  6. WebGL(五)——WEBGL缓冲区,绘制三角形
  7. Morpheus - DNS Spoofing
  8. 拥抱开源, Office 365开发迎来新时代
  9. java 1%10_Java获取随机数的3种方法
  10. java盒图_java合成图片
  11. python 单链表查找元素_如何在python中一次找到链表的中间元素?
  12. java 实例化数组_java数组实例化
  13. 你想靠AI实现永生吗?
  14. 精密划片机——晶圆切割百科
  15. 科目三道路驾驶技能考试使用计算机系统,科目三道路驾驶技能考试方法是怎样的?...
  16. IMX6ULL与IMX6UL异同(主要是优化了其成本:安全功能减低,优化功耗EMC SIM模块删除等与但和I.MX6UltraLite芯片是PIN-2-PIN兼容的)
  17. Spring Boot源码简析 @EnableTransactionManagement
  18. 数据分析课堂笔记Day2(20221114)
  19. 大规模 Web 数据采集的终极开源方案 - PulsarRPA
  20. 腾讯内部兵法:做产品和运营必须深参这5大人性弱点

热门文章

  1. 测量学(四)测量点制图转CAD格式之注记转换
  2. draw.io在线画图站点
  3. 基于SSM的南昌旅游网站管理系统设计与实现 毕业设计源码101407
  4. 小学计算机flash,小学信息技术第五册  9.初识flash软件
  5. A morphable model for the synthesis of 3D faces 学习笔记(未完)
  6. 七言.毕业12周年祭
  7. Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。
  8. 3. ackerman函数的递归实现算法用java语言_ackerman递归
  9. 自己动手制作植物大战僵尸简单修改器(2)
  10. 曲线分类-特征提取(二)