ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请帮忙提供能按表中所示的各条件筛选数据代码,感谢!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-3-17 09:07 | 显示全部楼层 |阅读模式
本帖最后由 419837499 于 2018-3-17 11:32 编辑

如题: 请帮忙提供能按AA1:AC7所示的各条件要求提取"基础数据"表中的数据代码,例如:选择合格,就提取到附件中"基础数据"表中对应产品型号符合条件的数据(请见附图提示),感谢!
QQ五笔截图未命名.jpg

录入检测数据 - 副本.rar

136.75 KB, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2018-3-17 10:54 | 显示全部楼层
Sub 宏2()
With ActiveSheet.Range("A7")
    .AutoFilter
    .AutoFilter Field:=1, Operator:=xlFilterValues, Criteria2:=Array(1, [ab3] & "/1/" & [ab2])
    .AutoFilter Field:=4, Criteria1:="合格"
End With
End Sub

合格就是这样 不合格改成不合计就行

置于你对应你这个表格,因为合并后你没有处理,我也不知道怎么弄
合并后的单元格均为空值,解决方法可以用格式刷,其他方法不知道
判断条件为你那个是复选框吧!反正就是True之类的

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-17 11:14 | 显示全部楼层
这个是昵称吗 发表于 2018-3-17 10:54
Sub 宏2()
With ActiveSheet.Range("A7")
    .AutoFilter

谢谢你的回复, 经测试效果没达到要求

TA的精华主题

TA的得分主题

发表于 2018-3-17 11:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
419837499 发表于 2018-3-17 11:14
谢谢你的回复, 经测试效果没达到要求

效果应该是能达到的,我之前就说了,你肯定没看

达不到效果是因为你这个表对合并单元格的处理问题。

你把合并单元格打散后就能看到是为什么了!

TA的精华主题

TA的得分主题

发表于 2018-3-17 11:24 | 显示全部楼层
当然还有一种思路是判断日期值,把日期值作为判断条件选择4行,不符合的隐藏。

感觉整起来怪复杂的,懒得搞!!!!

或者看看有没有其他方法能搞定!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-17 11:36 | 显示全部楼层
这个是昵称吗 发表于 2018-3-17 11:24
当然还有一种思路是判断日期值,把日期值作为判断条件选择4行,不符合的隐藏。

感觉整起来怪复杂的,懒 ...

不好意思, 是我之前没表达清楚自己的要求, 现已更新过帖子内容, 因在"查询表"上提取出来的数据还要生成K线图表,所以不好打散合并的单元格

TA的精华主题

TA的得分主题

发表于 2018-3-17 11:59 来自手机 | 显示全部楼层
419837499 发表于 2018-3-17 11:36
不好意思, 是我之前没表达清楚自己的要求, 现已更新过帖子内容, 因在"查询表"上提取出来的数据还要生成K ...

不知道开线图咋操作?百度一下,貌似和合并单元格没啥关系。
另外,有合并的的确比较麻烦查询,如果需要,感觉还是由不合并的表再生成合并的比较好。查询在不合并的基础表进行比较好。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-17 13:41 | 显示全部楼层
zpy2 发表于 2018-3-17 11:59
不知道开线图咋操作?百度一下,貌似和合并单元格没啥关系。
另外,有合并的的确比较麻烦查询,如果需要 ...

之前左拼右凑写了以下代码做成有录入基础数据、提取查询数据、以查询结果生成K线图功能,现在因数据量越来越多,需按需求提取数据,所以要增加主帖功能,
原工作簿代码见以下:
Sub 查询()


   
Dim i, o, s, C, t

If Sheet3.Cells(2, "D") = "" Then
MsgBox "请输入产品型号"
Exit Sub
End If

Sheet3.Range("A8:y123").ClearContents


s = 8

For i = 1 To 1000

If Sheet2.Cells(i, "b") Like "*" & Sheet3.Cells(2, "d") & "*" Then


C = C + 1

Sheet3.Cells(s, "a") = Sheet2.Cells(i, "a") '日期

Sheet3.Cells(s, "b") = Sheet2.Cells(i, "b")

Sheet3.Cells(s, "c") = Sheet2.Cells(i, "z")

Sheet3.Cells(s, "D") = Sheet2.Cells(i, "D") '备注

' 项目

Sheet3.Cells(s, "E") = Sheet2.Cells(i, "E")
Sheet3.Cells(s + 1, "E") = Sheet2.Cells(i + 1, "E")
Sheet3.Cells(s + 2, "E") = Sheet2.Cells(i + 2, "E")
Sheet3.Cells(s + 3, "E") = Sheet2.Cells(i + 3, "E")






For t = 1 To 20
If Sheet2.Cells(i, t + 5) <> "" Then


Sheet3.Cells(s, t + 5) = Sheet2.Cells(i, t + 5)

Sheet3.Cells(s + 1, t + 5) = Sheet2.Cells(i + 1, t + 5)
Sheet3.Cells(s + 2, t + 5) = Sheet2.Cells(i + 2, t + 5)
Sheet3.Cells(s + 3, t + 5) = Sheet2.Cells(i + 3, t + 5)


End If


Next

s = s + 4

End If

Next

j = C


  

End Sub



Sub 返回()



Sheets("查询").Select


End Sub




Sub k图()
Dim i, u


Sheets("(Av-Vis)检测数据曲线图").Select

With ActiveSheet.ChartObjects(1)
    .Activate

ActiveChart.ChartTitle.Text = Sheet3.Cells(8, "b") & "  (Av-Vis)检测数据曲线图"






End With






For u = ActiveChart.SeriesCollection.Count To 1 Step -1


  ActiveChart.FullSeriesCollection(1).Delete


Next


Dim t, E, C, g, l, s, k
C = 8
E = 8
For i = 1 To j









Sheet1.ChartObjects (1)
  
ActiveChart.ChartArea.Select
    Application.CutCopyMode = False
    Application.CutCopyMode = False
    Application.CutCopyMode = False
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.FullSeriesCollection(i).Name = Sheet3.Cells(C, "c") & Sheet3.Cells(C, "d")
   
    C = C + 4
    For l = 1 To 2
   
    E = E + 1
   
    For t = 6 To 26

  
   
   

    If Sheet3.Cells(E, t) <> "" Then
   
    If g = "" Then
    g = g & Sheet3.Cells(E, t)
   
     If l = 1 Then
     If Sheet3.Cells(E, t) > s Then
     
     s = Sheet3.Cells(E, t)
    End If
    End If
   
    Else
   
    g = g & "," & Sheet3.Cells(E, t)
   
   
    End If
    Else
   
    Exit For
   
  
  
   

   
    End If
   
   
   
    Next
     g = "{" & g & "}"
     
     
     If l = 1 Then
     
    ActiveChart.FullSeriesCollection(i).XValues = g
      
       Else
      
      
      ActiveChart.FullSeriesCollection(i).Values = g
      
      
      End If
   
      g = ""
        
    Next
   
  

   
    E = E + 2

  
   
  Next
  
  

ActiveChart.Axes(xlCategory).MaximumScale = (Int(s / 10) + 1) * 10

   
   

End Sub
Sub 加行()


Dim i

For i = 1 To 5000

If Sheet2.Cells(i, "e") = "" Then

  Range("A2:Z5").Select
    Selection.Copy
    Range("A" & i).Select
    ActiveSheet.Paste
   
Sheet2.Range("A" & i & ":d" & i) = ""

Sheet2.Range("f" & i & ":Y" & i + 3) = ""

Exit For

End If




Next


End Sub

TA的精华主题

TA的得分主题

发表于 2018-3-17 14:09 | 显示全部楼层
本帖最后由 这个是昵称吗 于 2018-3-17 14:23 编辑
  1. Sub 提取数据1()
  2. '不限定条件,根据D2列的值提取

复制代码

TA的精华主题

TA的得分主题

发表于 2018-3-17 14:17 | 显示全部楼层
本帖最后由 这个是昵称吗 于 2018-3-17 14:19 编辑

确实之前没有表述明白,根据你后面的描述我大致写了一下,但是没有加条件判断
Sheet3.Range("A8:Y1000").ClearContents 这句忘记写了,清除之前的提取数据
Sheet3.Range("A" & i)(1, 3) = "17B" & Sheet3.Range("A" & i)(1, 3).Value
上面这句写在d3.Copy d2后面就行,这句是改变生成批号的。我用的是复制,也可以直接等值等值一样的效果!只是批号那列要设置格式,不然0值会被忽略掉
条件判断要你自己加个试试!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-2 06:51 , Processed in 0.044385 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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