Excel精英培训网

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

请老师改一下代码

[复制链接]
发表于 2019-12-11 20:14 | 显示全部楼层 |阅读模式
请老师改一下代码

请老师修改一下代码.rar

38.12 KB, 下载次数: 5

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

使用道具 举报

发表于 2019-12-11 23:50 | 显示全部楼层
本帖最后由 exyantou 于 2019-12-12 00:02 编辑
  1. Option Explicit
  2. Sub 组合()
  3. Dim arr1, arr2, arr3(1 To 10 ^ 5, 1 To 4)
  4. Dim i&, x&, y&
  5. Dim sh As Worksheet
  6. Set sh = ThisWorkbook.Sheets(1)
  7. arr1 = Range("B1:D" & [B65536].End(xlUp).Row)
  8. arr2 = Range("F1:H" & [F65536].End(xlUp).Row)
  9.    For x = 1 To UBound(arr1)
  10.      For y = 1 To UBound(arr2)
  11.        If arr2(y, 1) = arr1(x, 2) And arr2(y, 2) = arr1(x, 3) Then
  12.          i = i + 1
  13.          arr3(i, 1) = arr1(x, 1)
  14.          arr3(i, 2) = arr1(x, 2)
  15.          arr3(i, 3) = arr1(x, 3)
  16.          arr3(i, 4) = arr2(y, 3)
  17.        End If
  18.      Next
  19.    Next
  20.   [J1].Resize(i, 4) = ""
  21.   [J1].Resize(i, 4) = arr3
  22. End Sub
复制代码


楼主是这个意思吗

请老师修改一下代码20191211.rar

39.86 KB, 下载次数: 3

楼主的附件

评分

参与人数 1学分 +2 收起 理由
sanpiao + 2 我和小伙伴都惊呆了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2019-12-13 12:52 | 显示全部楼层
exyantou 发表于 2019-12-11 23:50
楼主是这个意思吗

是这样的。感谢!您帮忙看下第二种情况怎么写

请老师修改一下第二个代码.rar

46.99 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2019-12-13 18:19 | 显示全部楼层
exyantou 发表于 2019-12-11 23:50
楼主是这个意思吗

方便时请您看下第二个代码怎么写。
回复

使用道具 举报

发表于 2019-12-13 18:42 | 显示全部楼层
sanpiao 发表于 2019-12-13 18:19
方便时请您看下第二个代码怎么写。

在第一种的基础上稍微改下就可以了,晚上回复你
回复

使用道具 举报

发表于 2019-12-13 22:47 | 显示全部楼层
本帖最后由 exyantou 于 2019-12-13 22:48 编辑
exyantou 发表于 2019-12-13 18:42
在第一种的基础上稍微改下就可以了,晚上回复你

楼主,你第二种方法得出的结果和我的不一样,我用筛选得出的和代码得出的是一样的。
组合第二种结果.png
回复

使用道具 举报

发表于 2019-12-13 22:49 | 显示全部楼层
  1. Option Explicit
  2. Sub 按第二种条件组合()
  3. Dim arr1, arr2, arr3(1 To 10 ^ 5, 1 To 5)
  4. Dim i&, x&, y&
  5. Dim sh As Worksheet
  6. Set sh = ThisWorkbook.Sheets(2)
  7. arr1 = sh.Range("C1:F" & sh.[C65536].End(xlUp).Row)
  8. arr2 = sh.Range("H1:J" & sh.[H65536].End(xlUp).Row)
  9.    For x = 1 To UBound(arr1)
  10.      For y = 1 To UBound(arr2)
  11.        If arr2(y, 1) = arr1(x, 3) And arr2(y, 2) = arr1(x, 4) Then
  12.          i = i + 1
  13.          arr3(i, 1) = arr1(x, 1)
  14.          arr3(i, 2) = arr1(x, 2)
  15.          arr3(i, 3) = arr1(x, 3)
  16.          arr3(i, 4) = arr1(x, 4)
  17.          arr3(i, 5) = arr2(y, 3)
  18.        End If
  19.      Next
  20.    Next
  21.   [L1].Resize(i, 5) = ""
  22.   [L1].Resize(i, 5) = arr3
  23. End Sub
复制代码


第二种情况的代码。

评分

参与人数 1学分 +2 收起 理由
sanpiao + 2

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2019-12-13 22:58 | 显示全部楼层
exyantou 发表于 2019-12-13 22:49
第二种情况的代码。

能和您交个朋友很荣幸
回复

使用道具 举报

 楼主| 发表于 2019-12-13 22:59 | 显示全部楼层
sanpiao 发表于 2019-12-13 22:58
能和您交个朋友很荣幸

245481971QQ

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 19:08 , Processed in 0.339658 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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