Board logo

標題: [發問] Re : 請教 : 進階篩選但不要篩選隱藏的資料 [打印本頁]

作者: ji5kimo    時間: 2010-5-11 09:57     標題: Re : 請教 : 進階篩選但不要篩選隱藏的資料

原po... 因換系統又沒辦法download zz5151353 回覆的附件...
(原po http://gb.twbts.com/index.php?topic=13242.0)

現在又無法傳訊給 zz5151353 大, 就又po 一次, 請各位高手幫忙...

Sheet2, Sheet3 分別有隱藏, 但目前篩選(Sam, Jeff, Joe)出都有那些資料(JOB1-6, JOBA-D)

請教是怎麼將隱藏的資料不會被篩選篩出來 ? 謝謝.
作者: PD961A    時間: 2010-5-11 10:30

原po... 因換系統又沒辦法download zz5151353 回覆的附件...
(原po http://gb.twbts.com/index.php?topic= ...
ji5kimo 發表於 2010-5-11 09:57


您好
幫您回舊系統download zz5151353 回覆的附件...
    TEST1是您的舊檔
     TEST1-1是zz5151353 回覆的附件...
不曉得是您要的嗎?[attach]250[/attach][attach]251[/attach]
謝謝!
作者: ji5kimo    時間: 2010-5-11 11:53

PD961A, 檔案沒錯, 之前已請板主幫忙download 了. 謝謝 : )
但zz5151353 大並沒有解說怎麼將隱藏的資料不會被篩選篩出來 ?
還請各位幫忙, 謝謝~
作者: GBKEE    時間: 2010-6-16 14:27

本帖最後由 GBKEE 於 2010-6-16 14:29 編輯
PD961A, 檔案沒錯, 之前已請板主幫忙download 了. 謝謝 : )
但zz5151353 大並沒有解說怎麼將隱藏的資料不會 ...
ji5kimo 發表於 2010-5-11 11:53

[attach]1297[/attach]
用進階篩選是不行的
Sheet1,Sheet2, Sheet3 中Group欄請取消合併的儲存格
  1. Sub Ex()
  2.     Dim Sh As Worksheet, W As Worksheet, R As Range, Rng As Range
  3.     For Each Sh In Sheets(Array("Sam", "Jeff", "Joe"))
  4.         Sh.Range("A5:H" & Rows.Count).Clear
  5.         For Each W In Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
  6.             Set Rng = Nothing
  7.             For Each R In W.Range("A1").CurrentRegion.Rows
  8.                 If Not R.Hidden And R.Cells(4) Like Sh.[d2] Then
  9.                     If Rng Is Nothing Then
  10.                         Set Rng = R
  11.                     Else
  12.                         Set Rng = Union(Rng, R)
  13.                     End If
  14.                 End If
  15.             Next
  16.             If Not Rng Is Nothing Then
  17.                 Rng.Copy Sh.Range("b" & Rows.Count).End(xlUp)(2, 0)
  18.             End If
  19.         Next
  20.     Next
  21. End Sub
複製代碼

作者: Hsieh    時間: 2010-6-16 18:07

本帖最後由 Hsieh 於 2010-6-16 21:57 編輯
  1. Sub Ex()
  2. Dim A As Range, B As Range, Ar(), CTR$, s&, Sh As Worksheet, Sht As Worksheet
  3. For Each Sht In Sheets(Array("Sam", "Jeff", "Joe"))
  4. With Sht
  5. .Cells.Clear
  6. Sheet2.Rows(1).Copy .[A1]
  7. CTR = .Name
  8. .Rows(1).Find(Title, lookat:=xlWhole).Offset(1, 0) = "*" & CTR & "*"
  9. For Each Sh In Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
  10.     With Sh
  11.     ReDim Preserve Ar(s)
  12.     Ar(s) = .[A1:H1].Value
  13.     s = s + 1
  14.        Set A = .Columns("D")
  15.        For Each B In A.SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants)
  16.            If InStr(B, CTR) > 0 Then ReDim Preserve Ar(s): Ar(s) = .Cells(B.Row, 1).Resize(, 8).Value: s = s + 1
  17.        Next
  18.     End With
  19.     .[B65536].End(xlUp).Offset(2, -1).Resize(s, 8) = Application.Transpose(Application.Transpose(Ar))
  20.     s = 0
  21.     Erase Ar
  22. Next
  23. End With
  24. Next
  25. End Sub
複製代碼

作者: GBKEE    時間: 2010-6-16 21:35

本帖最後由 GBKEE 於 2010-6-16 21:48 編輯

回復 5# Hsieh


   
Set A = Columns("D")

Hsieh板主 你少點一點
Set A = .Columns("D")
  1. Sub Ex()
  2.     Dim Sh As Worksheet, W As Worksheet, R As Range, Ar()
  3.     For Each Sh In Sheets(Array("Sam", "Jeff", "Joe"))
  4.         Sh.Range("A5:H" & Rows.Count).Clear
  5.         ReDim Preserve Ar(0)
  6.         For Each W In Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
  7.             For Each R In W.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Cells.Rows
  8.                 If R.Cells(4) Like Sh.[d2] Then
  9.                     Ar(UBound(Ar)) = R.Value
  10.                     ReDim Preserve Ar(UBound(Ar) + 1)
  11.                 End If
  12.             Next
  13.         Next
  14.         ReDim Preserve Ar(UBound(Ar) - 1)
  15.         If UBound(Ar) > 0 Then
  16.             Sh.Range("b" & Rows.Count).End(xlUp)(2, 0).Resize(UBound(Ar) + 1, 8) = Application.Transpose(Application.Transpose(Ar))
  17.         End If
  18.     Next
  19. End Sub
複製代碼

作者: ji5kimo    時間: 2010-6-24 14:41

一直沒解決, 上yahoo+也問了一次, 也因此還沒交差...
剛上來看, 哇~ 感謝GBKEE 跟Hsieh 兩位大大^^

VBA 一直沒有好好學習, 所以都是用一般語言的方式在寫...
所以兩位大大的程式碼可能要花點時間消化, 再次感謝~ : )
作者: ji5kimo    時間: 2010-6-24 15:51

GBKEE & Hsieh 大,
  有兩個問題...
  1. Ar(UBound(Ar)) = R.Value // Ar(s) = .Cells(B.Row, 1).Resize(, 8).Value
     這行可以將背景顏色也copy 進去嗎 ?

  2. A 欄group 的資料有辦法一起進來嗎 ? 這樣似乎就沒法用array了 ?
作者: GBKEE    時間: 2010-6-24 20:59

1. Ar(UBound(Ar)) = R.Value // Ar(s) = .Cells(B.Row, 1).Resize(, 8).Value


回復 8# ji5kimo
1. Ar(UBound(Ar)) = R.Value // Ar(s) = .Cells(B.Row, 1).Resize(, 8).Value
這行可以將背景顏色也copy 進去嗎 ?

Ar是陣列(Array) 無法將背景顏色也copy
2. A 欄group 的資料有辦法一起進來嗎 ? 這樣似乎就沒法用array了 ?

不是不行  A 欄儲存格你用合併來顯示對資料的捉取 增加了複雜性
作者: luckwind    時間: 2011-2-10 10:13

本帖最後由 luckwind 於 2011-2-11 12:56 編輯

回復 2# PD961A


    請問如果是多個欄位要做隱藏不被篩選出來的方式是否也是如此?
在下對於vba不是很瞭解,能不能說明之...




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)