Excel精英培训网

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

[已解决]写个VBa,谢谢帮忙一下!!

[复制链接]
发表于 2012-4-17 11:26 | 显示全部楼层 |阅读模式
如果A列%上有C后面一样的如A列T03C.0236,T11C.0236和T05C.0115,T08C.0115,就把%以下它们相同后面对应坐标,放在前面坐标前面,谢谢!帮忙写个Vba!!结果如D列
最佳答案
2012-4-17 14:05
  1. Sub test()
  2.     Dim i As Long, j As Long, k As Long
  3.     Dim x As Long, y As Long, z As Long
  4.     Dim s1 As String, s2 As String
  5.     Application.ScreenUpdating = False
  6.     z = Range("a:a").Find("%").Row
  7.     For i = 1 To z - 2
  8.         For j = i + 1 To z - 1
  9.             If Right(Trim(Cells(i, 1)), 6) = Right(Trim(Cells(j, 1)), 6) Then
  10.                 s1 = "T" & Val(Mid(Cells(i, 1), 2, 2))
  11.                 s2 = "T" & Val(Mid(Cells(j, 1), 2, 2))
  12.                 x = Range("a:a").Find(s2, , , xlWhole).Row
  13.                 y = x
  14.                 Do
  15.                     y = y + 1
  16.                 Loop Until Len(Trim(Cells(y, 1))) < 4
  17.                 Range(Cells(x, 1), Cells(y - 1, 1)).Cut
  18.                 Range("a:a").Find(s1, , , xlWhole).Insert shift:=xlDown
  19.                 Exit For
  20.             End If
  21.         Next
  22.     Next
  23.     Application.ScreenUpdating = True
  24. End Sub
复制代码

Book66.rar

11.25 KB, 下载次数: 8

发表于 2012-4-17 14:05 | 显示全部楼层    本楼为最佳答案   
  1. Sub test()
  2.     Dim i As Long, j As Long, k As Long
  3.     Dim x As Long, y As Long, z As Long
  4.     Dim s1 As String, s2 As String
  5.     Application.ScreenUpdating = False
  6.     z = Range("a:a").Find("%").Row
  7.     For i = 1 To z - 2
  8.         For j = i + 1 To z - 1
  9.             If Right(Trim(Cells(i, 1)), 6) = Right(Trim(Cells(j, 1)), 6) Then
  10.                 s1 = "T" & Val(Mid(Cells(i, 1), 2, 2))
  11.                 s2 = "T" & Val(Mid(Cells(j, 1), 2, 2))
  12.                 x = Range("a:a").Find(s2, , , xlWhole).Row
  13.                 y = x
  14.                 Do
  15.                     y = y + 1
  16.                 Loop Until Len(Trim(Cells(y, 1))) < 4
  17.                 Range(Cells(x, 1), Cells(y - 1, 1)).Cut
  18.                 Range("a:a").Find(s1, , , xlWhole).Insert shift:=xlDown
  19.                 Exit For
  20.             End If
  21.         Next
  22.     Next
  23.     Application.ScreenUpdating = True
  24. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2012-4-17 14:13 | 显示全部楼层
hrpotter 发表于 2012-4-17 14:05

谢谢谢谢谢谢!!!!!!!!!
回复

使用道具 举报

 楼主| 发表于 2012-4-17 14:21 | 显示全部楼层
hrpotter 发表于 2012-4-17 14:05

我表达能力不行,好多人不明白我的意思,你明白,高人!!!
回复

使用道具 举报

 楼主| 发表于 2013-6-3 16:32 | 显示全部楼层
hrpotter 发表于 2012-4-17 14:05


谢谢你帮我,现在我用是发现一个问题,数据多时不执行如附件提升里整理A列数据,现在麻烦在帮忙一下。
如果A列%上有C后面一样的数据如:A列"a6"单元格T05C.0115,"a9"单元格T08C.0115,就把%以下它们相同后面对应坐标,放在前面坐标前面,2:如果A 列单元格C后面数据一样上下在一起就不需要提前上下排列,如A7 和A8和A13,A14,A15,相同本来在一起不需要排列。3:A7和A8,在A20和A21,还有两个相同的,这两个也要提前在它们前面,总之:一样的C后面刀具在%后排列在一起,,除了E列孔型是“标识孔”和“扫孔”外,因为除“标识孔和“扫孔”不参加移动位置。其他孔型都适合以上规则。谢谢!!!(A63“M30”是结束意思,不参加移动)如H列结果。

提升1.rar

477.02 KB, 下载次数: 3

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 03:45 , Processed in 0.277702 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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