Excel精英培训网

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

[已解决]把一列中第一位相同的内容选出并复制到另一列

[复制链接]
发表于 2016-1-8 22:16 | 显示全部楼层 |阅读模式
123701
546709
701789
709748
910721
789711
A23
345
487把一列中第一位相同的内容选出并复制到另一列(如把B列中的第一位为7的选出复制到D列)
748
987
721
656
711

最佳答案
2016-1-9 16:45
本帖最后由 dsmch 于 2016-1-9 18:46 编辑
  1. Sub Macro1()
  2. Dim arr, brr, i&, s&
  3. arr = Range("b1").CurrentRegion
  4. ReDim brr(1 To UBound(arr), 1 To 1)
  5. [d:d] = ""
  6. For i = 1 To UBound(arr)
  7.     If Left(arr(i, 1), 1) = "7" Then
  8.         s = s + 1
  9.         brr(s, 1) = arr(i, 1)
  10.     End If
  11. Next
  12. if s=1 then    [d1] = brr(1, 1)
  13. If s > 1 Then Range("d1").Resize(s) = brr
  14. End Sub
复制代码

Book1.zip

5.89 KB, 下载次数: 16

发表于 2016-1-8 22:53 | 显示全部楼层
如果数据量不大,或者不经常进行同类似操作,最简单的办法是:数据排序后,人工分段处理。
反之,编程处理。
回复

使用道具 举报

 楼主| 发表于 2016-1-9 09:20 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2016-1-9 15:00 | 显示全部楼层
Sub tt2()
    Dim R As Long
    For R = 1 To Range("b65536").End(xlUp).Row
      If Left(Cells(R, 2), 1) = "7" Then
            Cells(R, 3) = Cells(R, 2)
        End If
    Next R
End Sub

回复

使用道具 举报

 楼主| 发表于 2016-1-9 15:00 | 显示全部楼层
能达到以下效果
        123       
        546       
        701        701
        709        709
        910       
        789        789
        A23       
        345       
        487       
        748        748
        987       
        721        721
        656       
        711        711
回复

使用道具 举报

 楼主| 发表于 2016-1-9 15:01 | 显示全部楼层
达不到我要求的以下效果
        123        701       
        546        709       
        701        789       
        709        748       
        910        721       
        789        711       
        A23               
        345               
        487               
        748               
        987               
        721               
        656               
        711               
请高手帮忙修改
回复

使用道具 举报

发表于 2016-1-9 16:45 | 显示全部楼层    本楼为最佳答案   
本帖最后由 dsmch 于 2016-1-9 18:46 编辑
  1. Sub Macro1()
  2. Dim arr, brr, i&, s&
  3. arr = Range("b1").CurrentRegion
  4. ReDim brr(1 To UBound(arr), 1 To 1)
  5. [d:d] = ""
  6. For i = 1 To UBound(arr)
  7.     If Left(arr(i, 1), 1) = "7" Then
  8.         s = s + 1
  9.         brr(s, 1) = arr(i, 1)
  10.     End If
  11. Next
  12. if s=1 then    [d1] = brr(1, 1)
  13. If s > 1 Then Range("d1").Resize(s) = brr
  14. End Sub
复制代码
回复

使用道具 举报

发表于 2016-1-9 16:47 | 显示全部楼层
数据不多的话,四楼的代码稍加修改
Sub tt2()
    Dim R As Long
    For R = 1 To Range("b65536").End(xlUp).Row
      If Left(Cells(R, 2), 1) = "7" Then
           s=s+1
            Cells(s, 4) = Cells(R, 2)
        End If
    Next R
End Sub
回复

使用道具 举报

 楼主| 发表于 2016-1-9 18:09 | 显示全部楼层
解决了,谢谢dsmch
回复

使用道具 举报

 楼主| 发表于 2016-1-10 12:09 | 显示全部楼层
为什么B列也就是数据前列有数据时不行
11        123                7
2        546               
3        701               
4        709               
5        910               
6        789               
7        A23               
8        345               
9        487               
10        748               
11        987               
12        721               
13        656               
14        711               
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 08:29 , Processed in 0.335489 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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