ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5315|回复: 10

[求助] 如何将表1里同时满足2个条件的单元格数据复制到表2里

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-12-13 20:24 | 显示全部楼层 |阅读模式
表1是原始数据,现需要按以下两个条件筛选发票号并将相应的数据填入表2
1. 发票号含有RRR
2. 实际发货日期在2018年11月内

研究了两天了,快疯了。。。

数据筛选.rar

14.41 KB, 下载次数: 25

TA的精华主题

TA的得分主题

发表于 2018-12-13 21:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 寄语 于 2018-12-13 21:58 编辑

提供一个想法,可以用高级筛选来完成 1.png 不知道能不能满足要求

TA的精华主题

TA的得分主题

发表于 2018-12-13 22:03 | 显示全部楼层
表1-18-12-13.zip (12.55 KB, 下载次数: 42) 楼主,你看一下吧!

TA的精华主题

TA的得分主题

发表于 2018-12-13 22:43 | 显示全部楼层
楼上的用了数组,我研究了一下,用笨办法实现,楼主看看可用不。
QQ截图20181213223052.jpg

多条件查找和匹配.zip (11.65 KB, 下载次数: 20)


解释一下思路:
一、发票号的提取
1、用MONTH判断月份是否等于给定的条件,并用FIND查找字符串中是否含有“RRR”(如果含有,其值肯定大于1)
2、用AND确保上面两个条件同时满足
3、用IF判断,如果条件为真(TRUE),则取值填充,如果为假(FLASH),则填空
4、为了避免出现错误提示,用IFERROR屏蔽掉错误提示

二、其它值的提取
发票号确定后,用VLOOKUP从表1中取出对应的值即可

三、连续排序
这个问题我也搞不明白,正在坛子中找资料,好象非数组不可。
不过,我用了 一个筛选,将空值排除掉。

四、编号的连续排序
用SUBTOTAL函数进行重排,公式为:=IF($B2<>"",SUBTOTAL(103,$B$2:B2),"")

写这么长是因为我也刚学EXCEL,这个问题正好让我锻炼了一下,请指正。

TA的精华主题

TA的得分主题

发表于 2018-12-13 23:30 | 显示全部楼层
用简单方式解决

多条件查找和匹配.zip

11.65 KB, 下载次数: 61

TA的精华主题

TA的得分主题

发表于 2018-12-14 00:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub test()
  2.     Dim wb As Workbook, sh As Worksheet, rng As Range
  3.     Workbooks.Open ThisWorkbook.Path & "\表1.xlsx"
  4.     Set wb = Workbooks("表1.xlsx")
  5.     Set sh = wb.Sheets(1)
  6.     Set rng = sh.Range("A1:A19")
  7.     ThisWorkbook.Activate
  8.     Dim i, j, s, str$, arr()
  9.     str = "RRR"
  10.     ReDim arr(1 To rng.Count, 1 To 5)
  11.     For i = 2 To rng.Count
  12.         If InStr(rng(i), str) And rng(i).Offset(0, 7) >= #11/1/2018# And rng(i).Offset(0, 7) <= #11/30/2018# Then
  13.             s = s + 1
  14.             arr(s, 1) = rng(i).Offset(0, 0) '发票号
  15.             arr(s, 2) = rng(i).Offset(0, 1) '产品
  16.             arr(s, 3) = rng(i).Offset(0, 2) '数量
  17.             arr(s, 4) = rng(i).Offset(0, 5) '国家
  18.             arr(s, 5) = rng(i).Offset(0, 7) '实际发货时间
  19.         End If
  20.     Next i
  21.     Range("B2").Resize(s, 5) = arr
  22.     wb.Close
  23. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-12-14 08:32 | 显示全部楼层
xhms 发表于 2018-12-13 22:03
楼主,你看一下吧!

多谢,我也在学习数组公式,我研究了一下你提供的表,筛选出来的日期里包含了12月份的,另外数组公式里的(Sheet1!$H$2:$H$19<="2018/11/1")是不是应该改成(Sheet1!$H$2:$H$19>="2018/11/1")呢,但是改完发现出错了呢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-12-14 08:35 | 显示全部楼层
寄语 发表于 2018-12-13 21:55
提供一个想法,可以用高级筛选来完成不知道能不能满足要求

高级筛选相对比较麻烦,因为实际应用里,表1是数据源,我上传的表格是简化了许多的,为了表达方便,且表1是存放在服务器上,单独做一块筛选,然后调用到表2很不方便。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-12-14 08:40 | 显示全部楼层
本帖最后由 sleetzone 于 2018-12-14 08:41 编辑
xhms 发表于 2018-12-13 22:03
楼主,你看一下吧!

昨天在另外一个求助贴里,有位大神提供了一个数组公式:=IFERROR(INDEX([表1.xlsx]Sheet1!A:A,SMALL(IF(ISNUMBER(FIND("RRR",[表1.xlsx]Sheet1!$A2:$A100))*([表1.xlsx]Sheet1!$G2:$G100<="11-30"),ROW($2:$100)),ROW(A1))),"")  数组右下拉
但是我根据这个公式修改到实际表格里却总是出错,不知道是哪个参数设置不对还是其他原因。

TA的精华主题

TA的得分主题

发表于 2018-12-14 09:57 | 显示全部楼层
感谢楼主指正错误,谢谢!
现在再认真验证一下,这个公式B2=INDEX(Sheet1!A$2:A$19,SMALL(IF((LEFT(Sheet1!$A$2:$A$19,3)="RRR")*(Sheet1!$H$2:$H$19>=--("2018/11/1"))*(Sheet1!$H$2:$H$19<=--("2018/11/30")),ROW(Sheet1!$A$2:$A$19)-1,10000),ROW(A1)),)应该可以了。

另外楼主提供的另一位大神的公式,个人感觉修改一下=IFERROR(INDEX([表1.xlsx]Sheet1!A:A,SMALL(IF(ISNUMBER(FIND("RRR",[表1.xlsx]Sheet1!$A$2:$A$100))*([表1.xlsx]Sheet1!$h$2:$h$100<=--"11-30")*([表1.xlsx]Sheet1!$h$2:$h$100>=--"11-1"),ROW($2:$100)),ROW(A1))),"")  
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-24 00:46 , Processed in 0.047981 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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