Excel精英培训网

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

[已解决]哪位大师能用VBA来解决这个问题

[复制链接]
发表于 2016-11-15 12:08 | 显示全部楼层 |阅读模式
本帖最后由 a316667229 于 2016-11-15 17:57 编辑

在G3里输入512,用VBA自动搜索D2到D102里面那个是跟G3号码一样的,结果是D33和D2,这时G3的数据就是D34开始往下20个号码(黄色标签的)和从D3开始往下20个数据(绿色标志的) QQ截图20161115175431.png
最佳答案
2016-11-16 17:08
请见代码。

1.rar

12.6 KB, 下载次数: 7

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-11-15 13:24 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2016-11-15 17:56 | 显示全部楼层

在G3里输入512,用VBA自动搜索D2到D102里面那个是跟G3号码一样的,结果是D33和D2,这时G3的数据就是D34开始往下20个号码(黄色标签的)和从D3开始往下20个数据(绿色标志的) QQ截图20161115175431.png

1.rar

12.6 KB, 下载次数: 7

回复

使用道具 举报

发表于 2016-11-16 17:08 | 显示全部楼层    本楼为最佳答案   
请见代码。
2016-11-16查找.png

评分

参与人数 1 +3 收起 理由
苏子龙 + 3 神马都是浮云

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-11-16 23:41 | 显示全部楼层

QQ截图20161116234025.png 老师,我按你的写的代码,怎么用不了,不知你可否给我一个代码



Sub lqxs()
Dim Arr, i&, x$, s$, j&
[g4].Resize(5000, 3).ClearContents
Arr = [a1].CurrentRegion
For j = 7 To UBound(Arr, 2)
    x = Arr(3, j): s = ""
    For i = 2 To UBound(Arr)
        If Arr(i, j - 3) = x Then s = s & i & ","
    NET
    If s <> "" Then
       s = Left(s, Len(s) - 1): n = 4
       If InStr(s, ",") Then
          aa = Split(s, ",")
          For y = UBound(aa) To 0 Step -1
              Cells(aa(y) + 1, j - 3).Resize(30, 1).Copy Cells(n, j): n = n + 30
          Next

      Else
         Cells(s + 1, j - 3).Resize(30, 1).Resize(30, 1).Copy Cells(n, j): n = n + 30
    End If
End If

Next
End Sub


回复

使用道具 举报

 楼主| 发表于 2016-11-19 06:20 | 显示全部楼层

你好大师,如果我增加了几列之后表格如图这样 QQ截图20161119061642.png 那么我要在原先的VBA代码如何更改呢

原VBA代码是如下
Sub lqxs()
Dim Arr, i&, x$, s$, j&
[g4].Resize(5000, 3).ClearContents
Arr = [a1].CurrentRegion
For j = 7 To UBound(Arr, 2)
    x = Arr(3, j): s = ""
    For i = 2 To UBound(Arr)
        If Arr(i, j - 3) = x Then s = s & i & ","
    Next
    If s <> "" Then
       s = Left(s, Len(s) - 1): n = 4
       If InStr(s, ",") Then
          aa = Split(s, ",")
          For y = UBound(aa) To 0 Step -1
              Cells(aa(y) + 1, j - 3).Resize(30, 1).Copy Cells(n, j): n = n + 30
          Next

      Else
         Cells(s + 1, j - 3).Resize(30, 1).Resize(30, 1).Copy Cells(n, j): n = n + 30
    End If
End If

Next
End Sub


回复

使用道具 举报

 楼主| 发表于 2016-12-8 19:59 | 显示全部楼层

你好大师,如果是两个号码的要如何修改呢?之前你帮我解决的是三位数的,请给帮忙一下,教教我

新建 Microsoft Excel 工作表.rar

430.51 KB, 下载次数: 1

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 19:40 , Processed in 0.298018 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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