[算表] Autofilter問題(新增問題)

看板Office作者 (逢甲阿法)時間10年前 (2015/10/12 16:40), 10年前編輯推噓0(0021)
留言21則, 1人參與, 最新討論串1/1
軟體:EXCEL 版本:2010 請問一下 CODE如下 Dim Rng As Range '自動篩選結果範圍 Dim theRow As Range '各區域的資料列 Dim theArea As Range '各區域範圍 With Sheets("Orders") '在Orders工作表中 Set Rng = .UsedRange '所有資料範圍 Rng.AutoFilter Field:=2, Criteria1:="BOTTM" '篩選出顧客為BOTTOM者 Rng.AutoFilter Field:=3, Criteria1:="3" '再篩選出員工代號為3者 '設定篩選結果範圍 Rng = Rng.Resize(Rng.Rows.Count - 1).Offset(1,0). SpecialCells(xlCellTypeVisible) End With End Sub 幾個問題 1. 在Criteria1:="BOTTM"裡面 除非一模一樣的單字才找的到 我在資料列裡面偷偷用BOTTMM之類的 他就找不到 我CODE改成Criteria1:="BOTTM*" 他還是找不到 如果要讓他能夠找到BOTTOMA、BOTTOMB之類的資料列 要怎麼下指令才對? 2. Rng = Rng.Resize(Rng.Rows.Count - 1).Offset(1,0). SpecialCells(xlCellTypeVisible) 大大們可以解釋一下這排程式碼的意思嗎? 在我試過註解掉之後 好像對出來的成果沒有影響 感謝大大們解答 -- ◢███◣ 真是太令我興奮了,教授BOY~~ █████ █▉◥█◤ 覆蓋一張空白考卷在桌上 結束這學期 ██ ◤ \ ◤◤╲╰┤ ㊣ justlasai -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.82.110.114 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1444639237.A.559.html

10/12 17:33, , 1F
問題1.測試原文內寫到"BOTTM*",是可以找到BOTTMM或是
10/12 17:33, 1F

10/12 17:34, , 2F
BOTTMA之類的,但如果是要找BOTTOMA或BOTTOMB,T和M又多個
10/12 17:34, 2F

10/12 17:36, , 3F
O,及BOTTMA都要找到的話可用"BOTT*M*"
10/12 17:36, 3F

10/12 17:37, , 4F
10/12 17:37, 4F

10/12 17:38, , 5F
問題2是否寫法是set rng = rng.resize(...) 前面還有個set
10/12 17:38, 5F

10/12 17:45, , 6F
呢?有的話應該會再以上面寫的thearea及therow變數,配合
10/12 17:45, 6F

10/12 17:46, , 7F
for each...next迴圈在被篩選資料內
10/12 17:46, 7F

10/12 17:47, , 8F
resize內的減1目的是要省略標題列,而減1的範圍會從下方縮
10/12 17:47, 8F

10/12 17:48, , 9F
小,所以用offset下移,最後specialcells內則是可見的意思
10/12 17:48, 9F
Sheets.Add after:=Sheets(Sheets.count) Dim Rng As Range '自動篩選結果範圍 Dim theRow As Range '各區域的資料列 Dim theArea As Range '各區域範圍 With Sheets("工作表1") '選定資料庫工作表 Set Rng = .UsedRange '所有資料範圍 Rng.AutoFilter Field:=3, Criteria1:="*臺中*" Rng.AutoFilter Field:=4, Criteria1:="*" '設定篩選結果範圍 Set Rng = Rng.Resize(Rng.Rows.count - 1).Offset(1, 0).SpecialCells(xlCellTypeVisible) Rng.Select class range 的 select 方法失敗 Range("A2").Select Selection.Copy End With Sheets("工作表2").Active ActiveSheet.Paste S大您好 我現在要把這張表複製到同個EXCEL檔裡面的第二張工作表 因為第一列(ROW)是我用來放按鈕的地方 所以不要複製 從第二欄開始複製 結果在 Rng.Select這排裡面就出現問題了 資料會長成 A B C 1 2 a b c 3 d e f 我只要複製 a b c d e f 到第二張工作表就好 請問有辦法嗎QQ? ※ 編輯: MAGICXX (111.83.131.251), 10/14/2015 09:47:32

10/14 09:53, , 10F
出現'1004' class range 的 select 方法失敗,應為
10/14 09:53, 10F

10/14 09:54, , 11F
rng.select不在目前原po顯示的工作表範圍內
10/14 09:54, 11F

10/14 09:57, , 12F
https://goo.gl/Uum3zY 例如連結測試,於工作表2下select
10/14 09:57, 12F

10/14 09:57, , 13F
工作表1的a1儲存格時就會產生錯誤
10/14 09:57, 13F
抱歉 又有問題新增 Dim Rng As Range '自動篩選結果範圍 Dim theRow As Range '各區域的資料列 Dim theArea As Range '各區域範圍 Dim a, b, c, d, e, f, g As String With Sheets("工作表1") '選定資料庫工作表 Set Rng = .UsedRange '所有資料範圍 If TextBox7.Text + TextBox8.Text + TextBox9.Text + TextBox10.Text + TextBox11.Text + TextBox12.Text + TextBox13.Text = "" Then MsgBox "請輸入關鍵字!" Else Sheets.Add after:=Sheets(Sheets.count) 'aa = TextBox7.Text a = "*" & TextBox7.Text & "*" b = "*" & TextBox8.Text & "*" c = "*" & TextBox9.Text & "*" d = "*" & TextBox10.Text & "*" e = "*" & TextBox11.Text & "*" f = "*" & TextBox12.Text & "*" g = "*" & TextBox13.Text & "*" Rng.AutoFilter Field:=3, Criteria1:=a Rng.AutoFilter Field:=4, Criteria1:=b Rng.AutoFilter Field:=5, Criteria1:=c Rng.AutoFilter Field:=6, Criteria1:=d Rng.AutoFilter Field:=8, Criteria1:=e Rng.AutoFilter Field:=18, Criteria1:=f Rng.AutoFilter Field:=19, Criteria1:=g '設定篩選結果範圍 On Error Resume Next Set Rng = Rng.Resize(Rng.Rows.count - 1).Offset(1, 0).SpecialCells(xlCellTypeVisible) 'Rng.Select 'Range("A1").Select 'Selection.Copy Worksheets("工作表1").Cells.Copy ActiveSheet.Paste End If End With 有問題的 在中間那串變數的地方 Rng.AutoFilter Field:=19, Criteria1:=g 這種判斷句 最多只能用三個嗎? 我用超過三個 就通通找不到了(即使通通沒有給條件) 可是要是把它註解到只剩三個(不一定固定哪三個 隨便三個) 就找的到? 如果是這樣 那要怎麼弄成七個條件? 感謝S大回答~@@ ※ 編輯: MAGICXX (111.83.26.224), 10/15/2015 11:38:39

10/15 12:23, , 14F
有問題的地方rng.autofilter...從程式碼來看不太確定問題
10/15 12:23, 14F

10/15 12:25, , 15F
為何?從g和其他變量可能不同處,應為宣告
10/15 12:25, 15F

10/15 12:27, , 16F
Dim a, b, c, d, e, f, g As String,這樣寫並不是指a~g都
10/15 12:27, 16F

10/15 12:28, , 17F
宣告為string
10/15 12:28, 17F

10/15 12:28, , 18F
a~f會是variant(數值或字元)
10/15 12:28, 18F

10/15 12:32, , 19F
以上是假設可能的地方,實際應要看資料會比較清楚
10/15 12:32, 19F

10/15 12:39, , 20F
以原文內所寫依序來篩選,測試了十個,還是可以選出
10/15 12:39, 20F

10/15 12:39, , 21F
10/15 12:39, 21F
文章代碼(AID): #1M6t85LP (Office)
文章代碼(AID): #1M6t85LP (Office)