Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3876|回复: 9

[已解决]如何将a列自动排序并合并相同行呢?

[复制链接]
发表于 2013-7-7 11:58 | 显示全部楼层 |阅读模式
求代码,求解释

有个将整个表格合并相同项的代码,但不知道怎么改呀
1. Sub Mergerng()
2.     Dim IntRow As Integer
3.     Dim i As Integer
4.     Application.DisplayAlerts = False
5.     With Sheet1
6.         IntRow = .Range("A65536").End(xlUp).Row
7.         For i = IntRow To 2 Step -1
8.             If .Cells(i, 2).Value = .Cells(i - 1, 2).Value Then
9.                 .Range(.Cells(i - 1, 2), .Cells(i, 2)).Merge
10.             End If
11.         Next
12.     End With
13.     Application.DisplayAlerts = True
14. End Sub

最佳答案
2013-7-7 12:16
本帖最后由 ligh1298 于 2013-7-7 12:18 编辑
1screw1 发表于 2013-7-7 12:11
IntRow = .Range("A65536").End(xlUp).Row 'Sheet1表中A列有数据的最大行数
这句搞不懂


[a65536].end(XLUP).row
[a65536].就是从A列的第65536行开始
end(XLUP)从上往上查找,也可简写成end(3)
row这个表示行
[a65536].end(XLUP).row表示从A列的最大行第65536行向上查找,如果在A列查找到最下端有数据时单元格时,就显示它所在的行号,即是有数据的最大行号。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-7-7 12:08 | 显示全部楼层
  1. Sub Mergerng()
  2. Dim IntRow As Integer '申明变量类型是整型
  3. Dim i As Integer '申明变量类型是整型
  4. Application.DisplayAlerts = False '禁止弹出对话框
  5. With Sheet1
  6. IntRow = .Range("A65536").End(xlUp).Row 'Sheet1表中A列有数据的最大行数
  7. For i = IntRow To 2 Step -1 '从IntRow到2逆循环,步进是1(从大到小循环)
  8. If .Cells(i, 2).Value = .Cells(i - 1, 2).Value Then '如果B列单元格数据与它相邻的上一单元格数据相同
  9. .Range(.Cells(i - 1, 2), .Cells(i, 2)).Merge '就把相同的进行合并
  10. End If
  11. Next
  12. End With
  13. Application.DisplayAlerts = True '允许弹出对话框
  14. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-7-7 12:11 | 显示全部楼层
ligh1298 发表于 2013-7-7 12:08

IntRow = .Range("A65536").End(xlUp).Row 'Sheet1表中A列有数据的最大行数
这句搞不懂
回复

使用道具 举报

发表于 2013-7-7 12:11 | 显示全部楼层
如果想合并A列的,就把cells(i,2)与cells(i-1,2)改成1
回复

使用道具 举报

发表于 2013-7-7 12:16 | 显示全部楼层    本楼为最佳答案   
本帖最后由 ligh1298 于 2013-7-7 12:18 编辑
1screw1 发表于 2013-7-7 12:11
IntRow = .Range("A65536").End(xlUp).Row 'Sheet1表中A列有数据的最大行数
这句搞不懂


[a65536].end(XLUP).row
[a65536].就是从A列的第65536行开始
end(XLUP)从上往上查找,也可简写成end(3)
row这个表示行
[a65536].end(XLUP).row表示从A列的最大行第65536行向上查找,如果在A列查找到最下端有数据时单元格时,就显示它所在的行号,即是有数据的最大行号。
回复

使用道具 举报

 楼主| 发表于 2013-7-7 12:18 | 显示全部楼层
我只是要合并a行就好了
但是
Sub Mergerng()
Dim IntRow As Integer '申明变量类型是整型
Dim i As Integer '申明变量类型是整型
Application.DisplayAlerts = False '禁止弹出对话框
With Sheet1
IntRow = .Range("A65536").End(xlUp).Row 'Sheet1表中A列有数据的最大行数
For i = IntRow To 2 Step -1 '从IntRow到2逆循环,步进是1(从大到小循环)
If .Cells(i, 1).Value = .Cells(i - 1, 1).Value Then '如果B列单元格数据与它相邻的上一单元格数据相同
.Range(.Cells(i - 1, 1), .Cells(i, 1)).Merge '就把相同的进行合并
End If
Next
End With
Application.DisplayAlerts = True '允许弹出对话框
End Sub
这样就ok了?
回复

使用道具 举报

发表于 2013-7-7 12:19 | 显示全部楼层
本帖最后由 ligh1298 于 2013-7-7 12:20 编辑

你可以试试就知道了。经测试成功。
回复

使用道具 举报

 楼主| 发表于 2013-7-7 13:07 | 显示全部楼层
想问一下,如果需要再加上自动排序怎么弄呢
回复

使用道具 举报

发表于 2013-7-7 14:41 | 显示全部楼层
Range("a2:c10").Sort Key1:=Range("a2"), Order1:=xlAscending '区域a2:c10,按a列数升序,a1是标题
Range("a2:c10").Sort Key1:=Range("a2"), Order1:=xlDescending '区域a2:c10,按a列数降序,a1是标题

回复

使用道具 举报

 楼主| 发表于 2013-7-7 21:21 | 显示全部楼层
自动排序后发现个问题,表格大小还是原来的样子,希望加上自动调整大小,就像我们拉到鼠标后再边缘双击,excel会自动调整表格大小一样
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-28 20:39 , Processed in 0.408554 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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