Excel精英培训网

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

[已解决]看了篩選還是不懂,在此求助

[复制链接]
发表于 2017-5-21 08:13 | 显示全部楼层 |阅读模式
小弟希望使用VBA的ARRAY方式,將附件中的工作表1可以篩選出出一月(對應B欄的數值),可以依序寫到工作表2中,可以請教要如何解決,謝謝
最佳答案
2017-5-21 22:43
idnoidno 发表于 2017-5-21 21:10
得到的結果應該不是都是1
不知道哪邊該做調整
可以請問一下

忘记转置了,,SORRY
  1. Sub aaa()
  2. Dim y, arr, brr, crr, n, m
  3. ReDim brr(1 To 1)
  4. ReDim crr(1 To 1)
  5. y = Sheets("工作表1").Range("a65536").End(3).Row  '
  6. arr = Sheets("工作表1").Range("a1:b" & y)
  7. For i = 1 To UBound(arr)
  8.     If arr(i, 1) = "january" Then
  9.         n = n + 1
  10.         ReDim Preserve brr(1 To n)
  11.         ReDim Preserve crr(1 To n)
  12.         brr(n) = arr(i, 1)
  13.         crr(n) = arr(i, 2)
  14.     End If
  15. Next i
  16. Sheets("工作表2").Range("a1").Resize(UBound(brr), 1) = Application.Transpose(brr)
  17. Sheets("工作表2").Range("b1").Resize(UBound(crr), 1) = Application.Transpose(crr)
  18. End Sub
复制代码


filter.rar

14.09 KB, 下载次数: 5

发表于 2017-5-21 09:15 | 显示全部楼层
筛选 是什么意思? 去除重复 ?

自己 手工模拟个结果.
回复

使用道具 举报

 楼主| 发表于 2017-5-21 10:52 | 显示全部楼层
符合條件的意思,很抱歉,我沒有說明清楚
回复

使用道具 举报

发表于 2017-5-21 16:42 | 显示全部楼层
符合都是一月的吗? 代码如下
  1. Sub aaa()
  2. Dim y, arr, brr, crr, n, m
  3. ReDim brr(1 To 1)
  4. ReDim crr(1 To 1)
  5. y = Sheets("工作表1").Range("a65536").End(3).Row  '
  6. arr = Sheets("工作表1").Range("a1:b" & y)
  7. For i = 1 To UBound(arr)
  8.     If arr(i, 1) = "january" Then
  9.         n = n + 1
  10.         ReDim Preserve brr(1 To n)
  11.         ReDim Preserve crr(1 To n)
  12.         brr(n) = arr(i, 1)
  13.         crr(n) = arr(i, 2)
  14.     End If
  15. Next i
  16. Sheets("工作表2").Range("a1").Resize(UBound(brr), 1) = brr
  17. Sheets("工作表2").Range("b1").Resize(UBound(crr), 1) = crr
  18. End Sub
复制代码


回复

使用道具 举报

 楼主| 发表于 2017-5-21 20:15 | 显示全部楼层
本帖最后由 idnoidno 于 2017-5-21 20:17 编辑

表格是
january
1
february
2
march
3
april
4
may
5
june
6
july
7
august
8
september
9
october
10
november
11
december
12
january
13
february
14
march
15
april
16
may
17
june
18
july
19
august
20
september
21
october
22
november
23
december
24
january
25
february
26
march
27
april
28
may
29


結果
january
1
january
1
january
1

回复

使用道具 举报

发表于 2017-5-21 20:20 | 显示全部楼层

?我的代码就这结果,有问题吗????
回复

使用道具 举报

 楼主| 发表于 2017-5-21 21:10 | 显示全部楼层
得到的結果應該不是都是1
不知道哪邊該做調整
可以請問一下
如果是有A、B、C、D更多的COLUMN時
你的數組(ARRAY)該要怎樣調整呢
回复

使用道具 举报

发表于 2017-5-21 22:43 | 显示全部楼层    本楼为最佳答案   
idnoidno 发表于 2017-5-21 21:10
得到的結果應該不是都是1
不知道哪邊該做調整
可以請問一下

忘记转置了,,SORRY
  1. Sub aaa()
  2. Dim y, arr, brr, crr, n, m
  3. ReDim brr(1 To 1)
  4. ReDim crr(1 To 1)
  5. y = Sheets("工作表1").Range("a65536").End(3).Row  '
  6. arr = Sheets("工作表1").Range("a1:b" & y)
  7. For i = 1 To UBound(arr)
  8.     If arr(i, 1) = "january" Then
  9.         n = n + 1
  10.         ReDim Preserve brr(1 To n)
  11.         ReDim Preserve crr(1 To n)
  12.         brr(n) = arr(i, 1)
  13.         crr(n) = arr(i, 2)
  14.     End If
  15. Next i
  16. Sheets("工作表2").Range("a1").Resize(UBound(brr), 1) = Application.Transpose(brr)
  17. Sheets("工作表2").Range("b1").Resize(UBound(crr), 1) = Application.Transpose(crr)
  18. End Sub
复制代码


回复

使用道具 举报

发表于 2017-5-21 22:54 | 显示全部楼层
本帖最后由 france723 于 2017-5-21 22:57 编辑
idnoidno 发表于 2017-5-21 21:10
得到的結果應該不是都是1
不知道哪邊該做調整
可以請問一下

如果很多列,你可以采用筛选整行复制的方法。
  1. Sub bbb()
  2. Dim y, arr, n
  3. n = 1
  4. y = Sheets("工作表1").Range("a65536").End(3).Row
  5. arr = Sheets("工作表1").Range("a1:b" & y)
  6. For i = 1 To UBound(arr)
  7.     If arr(i, 1) = "january" Then
  8.             Sheets("工作表1").Rows(i).Copy
  9.             Sheets("工作表2").Select
  10.             Rows(n).Select
  11.             Sheets("工作表2").Paste
  12.             n = n + 1
  13.     End If
  14. Next i
  15. End Sub
复制代码



回复

使用道具 举报

 楼主| 发表于 2017-5-21 22:55 | 显示全部楼层
本帖最后由 idnoidno 于 2017-5-21 22:56 编辑

可以再進一步請問,若是附件這樣,您的CODE要如何調整呢

FILTER1.rar

7.83 KB, 下载次数: 1

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 20:36 , Processed in 0.175267 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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