ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6081|回复: 30

[求助] 判断后一个单元格是不是前一个单元格+1,如果是就合并

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-7-20 02:16 | 显示全部楼层 |阅读模式
本帖最后由 蔡训博 于 2018-7-21 21:38 编辑

判断后一个单元格是不是前一个单元格+1,如果是就合并,一直循环合并到不是,再重新开始,直到没有数据,VBA做,附件已经更新要求了,希望大家帮帮忙 000031.png

000032.rar (18.75 KB, 下载次数: 18)

TA的精华主题

TA的得分主题

发表于 2018-7-24 12:32 | 显示全部楼层
蔡训博 发表于 2018-7-23 21:56
代码在运行中还是出现以下问题(9过10已经没问题)
(1)名称包含字母和数字的,如果最后一位是数字(如左 ...

'再试一下,有问题继续上附件

Option Explicit

Sub test()
  Dim i, j, k, row, a, b, t
  Application.DisplayAlerts = False
  row = Cells(Rows.Count, "a").End(xlUp).row + 1
  For i = 4 To row
    a = getnum(Cells(i, "a").Value)
    For j = i + 1 To row
      b = getnum(Cells(j, "a"))
      If b - a = 1 Then
        a = b
      Else
        t = b
        For k = 1 To Len(a)
          If Mid(a, k, 1) <> Mid(b, k, 1) Then Exit For
        Next
        If k = Len(a) + 1 Then
          Cells(i, "b").Resize(j - i).Merge
          i = j - 1: Exit For
        Else
          If Val(Mid(b, k)) - Val(Mid(a, k)) = 1 Then
            a = t
          Else
            Cells(i, "b").Resize(j - i).Merge
            i = j - 1: Exit For
          End If
        End If
      End If
  Next j, i
  Application.DisplayAlerts = True
End Sub

Function getnum(t)
  Dim i
  If Not IsNumeric(t) Then
    For i = Len(t) To 1 Step -1
      If Not IsNumeric(Mid(t, i, 1)) Then
        getnum = CDec(Mid(t, i + 1)): Exit Function
      End If
    Next
  End If
  getnum = CDec(t)
End Function

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-7-24 12:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 一把小刀闯天下 于 2018-7-24 12:37 编辑
蔡训博 发表于 2018-7-23 21:56
代码在运行中还是出现以下问题(9过10已经没问题)
(1)名称包含字母和数字的,如果最后一位是数字(如左 ...

代码审核中...

可以自己敲代码,修改的也不是很多把Cells(i, "b").Resize(j - i).Merge  改成:(共2处)
Cells(i, "a").Resize(j - i).Merge


啊.jpg

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-7-20 07:44 | 显示全部楼层
c从目前楼主提供的截图,是否可以理解相邻的左侧三位一样就可以合并

TA的精华主题

TA的得分主题

发表于 2018-7-20 09:18 | 显示全部楼层
Sub 合并内容相同的连续单元格()
  Dim I As Integer
  Dim Rng As Long
   Application.DisplayAlerts = False
    I = Range("A1").End(xlDown).Row
     For Rng = I To 2 Step -1
        If Cells(Rng, "A").Value = Cells(Rng - 1, "A").Value Then
          Range(Cells(Rng - 1, "A"), Cells(Rng, "A")).Merge
           End If
         Next
    Application.DisplayAlerts = True
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-20 11:18 | 显示全部楼层
liulang0808 发表于 2018-7-20 07:44
c从目前楼主提供的截图,是否可以理解相邻的左侧三位一样就可以合并

不可以。。。。。。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-20 11:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
jy03342543 发表于 2018-7-20 09:18
Sub 合并内容相同的连续单元格()
  Dim I As Integer
  Dim Rng As Long

这个用不了,只能内容相同,而且不会循环判断

TA的精华主题

TA的得分主题

发表于 2018-7-20 11:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个 前三位又不行 1259+1 是1260  可是你的表变成12510  怎么判断呢?
整起来麻烦了 只能先判断最后一位 如果最后一位是9下个单元格判断是否后两位为10

但是你后面又有 12419 12420 判断最后一位又不可行!纯数字还行 ,要是遇到字母感觉蒙圈
应该能行,但是不会!

TA的精华主题

TA的得分主题

发表于 2018-7-20 11:56 | 显示全部楼层
蔡训博 发表于 2018-7-20 11:18
不可以。。。。。。。。

那么楼主就结合自己要求,将附件内容规律提取一下吧
目前对于左侧字母还可以,数字的,怎么明确处理

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-20 18:39 | 显示全部楼层
本帖最后由 蔡训博 于 2018-7-20 20:33 编辑
liulang0808 发表于 2018-7-20 11:56
那么楼主就结合自己要求,将附件内容规律提取一下吧
目前对于左侧字母还可以,数字的,怎么明确处理
这个是昵称吗 发表于 2018-7-20 11:52
这个 前三位又不行 1259+1 是1260  可是你的表变成12510  怎么判断呢?
整起来麻烦了 只能先判断最后一位 ...
附件已经更新要求了,希望大家帮帮忙

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-21 01:47 | 显示全部楼层
本帖最后由 蔡训博 于 2018-7-21 12:54 编辑

继续等待。。。。。。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-21 13:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
饭前顶顶。。。。。。。。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-10 21:18 , Processed in 0.031950 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表