Mf6163888 發問時間: 電腦與網際網路軟體 · 1 0 年前

excel有條件篩選下拉清單

問題:如何讓下拉清單顯示指定的sheet,去掉不符合的條件後的某一固定欄位的資料

如圖http://i217.photobucket.com/albums/cc82/mf61/Tool_...

我以「插入/名稱/定義」定義清單為TO1、TO2…Ton,每個清單參照到

TO1=`1`$E$3:$e$100

TO2=`2`$E$3:$e$100,亦即每張清單對應的是每種Tool(一個Tool以一個sheet紀錄)的詳細編號

如圖http://i217.photobucket.com/albums/cc82/mf61/opera...

我在C欄設定「資料/驗證/設定/清單」來源設定為indirect($A所在列)這樣可以使我輸入清單號自動帶出目前清單有的編號,即A欄輸入TO1,C欄下拉帶出sheet1的E欄上目前有的「全部編號」。

問題:如果我希望輸入清單號TO1後,再輸入E欄的operation的選項,使C欄不是帶出全部的編號,而是帶出sheet1符合E欄(operation)選項的編號,我的設定要如何修改??

比方我operation選擇生產領用出庫(G欄代號13),則sheet1目前I4,I5欄位為0,表示倉庫沒有PartA test board2,PartA test board3,則我operation sheet的C欄下拉要去掉這兩個編號;如果我選項選擇要顯示的清單為sheet1的倉庫待檢驗品(G欄代號12),sheet1 K欄只有K15有帳,所以清單只要帶出sheet1的E15的編號

已更新項目:

http://www.FunP.Net/768310這個是我現在的檔案請先看sheet operation 上的說明再看sheet 1的說明

2 個已更新項目:

夏日大大你的認知完全正確,那就是我要的,因為那是我的工作,只是不知用什麼指令,所以我沒有詳細說明operation選項與要出現的編號關係,請看operation manu頁,B欄就是operatin選項,E欄就是要顯示的資料中文不好辨識,所以在operation頁選擇了E欄目前要的operation之後,G欄會帶出這個operation的識別代號,這個代號的用法與operation manu頁的

3 個已更新項目:

C欄的識別代號會一致

4 個已更新項目:

應該說operation manu頁,B欄就是operation選項,E欄就是operation對應要顯示的倉庫來源資料,找這個來源目前倉庫有帳(數量為1)的編號

5 個已更新項目:

夏日大大

結果是對的,但老實說我看不懂那個巨集的寫法,目前只會寫絕對或相對位置作計算或拋資料,這樣的條件作得到的話,原本的operation欄位移到C欄的位置,先選operation,再選resource no輸入順序才正確,不過我把那個改了之後,你原本寫的那個巨集執行後的結果有問題,但我不知如何修正

請您寫在回答上吧!

更改欄位後的結果http://www.FunP.Net/191956

非常謝謝您!

6 個已更新項目:

不知目前operation sheet的F~K欄的順序是否會影響您那支程式的執行結果,這部份欄位的順序我可能也會修改一下,如果會影響的話,等我改完再幫我看,順利的話,今天會改完,謝謝

7 個已更新項目:

更正後的欄位格式

http://www.FunP.Net/331543

8 個已更新項目:

夏日大大

問一個您可能覺得很笨的問題喔!請問您的程式是寫在哪裡??我把http://www.FunP.Net/331543 下載下來,但找不到您寫在哪裡,我只有看到有一個模組Macro是您幫我寫的,但下面的答案那個我沒有看到,不過結果確實是對的

9 個已更新項目:

謝謝,看到了

3 個解答

評分
  • 夏日
    Lv 5
    1 0 年前
    最佳解答

    你這問題建議你上傳個範本,此題會有一點小複雜,最好上面附上解說會較好。

    2009-07-08 12:10:46 補充:

    舉個例operation工作表上的b3輸入1,e3輸入"外-生產領用"那c3下拉選單只能出現Part Atest board2-3 這二項是吧!?

    但是下面是e欄的下拉清單選項並沒有只有"外-生產領用"這字串或是如何對映的?

    新品收入

    檢驗良品入庫

    檢驗不良待送修入庫

    良品不良待送修入庫

    生產領用入庫

    ................

    上面是總清單,可是sheet1的表只有

    良品

    待送修

    待檢驗

    報廢

    生產領用

    委外维修

    内部维修

    出庫檢驗

    其他

    全部是怎樣對映的?

    沒對到的字串怎麼辦?

    我用的方法是會砍掉原本的驗正規則,新增驗正規則。

    2009-07-08 15:46:32 補充:

    http://www.FunP.Net/466187

    自行測試看看,有問題再說。

    2009-07-08 20:50:12 補充:

    圖片參考:http://i541.photobucket.com/albums/gg388/shin9944/...

    Private Sub Worksheet_SelectionChange(ByVal Target As Range) '事件程序

    If Target.Column = 4 And Target.Row > 1 Then '在D欄且列號大於2

    If Cells(Target.Row, 2) = "" Or Cells(Target.Row, 3) = "" Then '如果在B,C欄為空的話

    Target.Validation.Delete '當前位置驗証刪除

    Exit Sub

    End If

    Call SetData(Target.Address, Cells(Target.Row, 2).Value, Cells(Target.Row, 3).Value)

    End If

    End Sub

    Sub SetData(Ads As String, Num1 As String, Num2 As String)

    Dim i%, x%, y%, arr, brr, crr$() '後面三個是陣列

    Select Case Num2 '轉換字串為相對的欄號

    Case "生產領用出庫", "其他領用出庫": x = 9

    Case "內部維修出庫", "委外送修出庫": x = 10

    Case "出庫檢驗": x = 11

    Case "直接報廢入庫": x = 12

    Case "生產領用入庫", "良品不良待送修入庫": x = 13

    Case "委外送修良品入庫", "委外送修待驗入庫": x = 14

    Case "內部維修不良報廢入庫", "內部維修良品入庫": x = 15

    Case "檢驗不良待送修入庫", "檢驗良品入庫": x = 16

    Case "其他領用入庫": x = 17

    Case Else: Range(Ads) = "無此清單": End '如果選擇"新品"之類會顯示此訊息

    End Select

    y = -1

    With Sheets(Num1) '下面二個單引號的資訊可以自己解開,可看地址資訊

    arr = .Range(.Cells(3, 5), .Cells(65536, 5).End(xlUp))

    'Debug.Print .Name, .Range(.Cells(3, 5), .Cells(65536, 5).End(xlUp)).Address

    brr = .Range(.Cells(3, 5), .Cells(65536, 5).End(xlUp)).Offset(, x - 5)

    'Debug.Print .Name, .Range(.Cells(3, 5), .Cells(65536, 5).End(xlUp)).Offset(, x - 5).Address

    For i = 1 To UBound(arr) '以下是陣列用法

    If brr(i, 1) > 0 Then

    y = y + 1

    ReDim Preserve crr(y)

    crr(y) = arr(i, 1)

    End If

    Next

    End With

    With Sheets("operation").Range(Ads).Validation

    .Delete

    On Error GoTo 10 '如果為空陣列會出錯

    If crr(0) <> "reouurce no" Then '如第4頁裡面的資料為空會有此結果

    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _

    xlBetween, Formula1:=Join(crr, ",")

    .IgnoreBlank = True

    .InCellDropdown = True

    .ShowInput = True

    .ShowError = True

    End If

    End With

    10:

    End Sub

    2009-07-08 20:57:15 補充:

    上面那一張圖剛好在測試word順便抓下來參考。

    http://www.FunP.Net/253083

    希望版大自己能修改了

    另error checking的公式你再問人了,此公式編的不好,我沒空幫你重編。

    能不用indirect就不用,這很會托速度的,但你的情況公式只能用indirect,所以盡量減少使用率。

  • 匿名使用者
    6 年前

    最近發現一家很不錯的a片專賣店唷,

    網址先貼給你 http://xor.tw/4z9kn

    它出的新片速度很快喔~每個禮拜都有很多新片

    新片價格一片是30元而已,我看過還很清晰的,

    有瑕疵片可以跟客服反應,他們會協助處理唷

    如果你要畫質更好的,也有藍光dvd,超*的

    不知道怎麼挑片的話,也有站長推薦的精選套餐

    http://xor.tw/4nqjk

    自己買很多了才推薦給你唷!!看看吧

    #@#

    推薦你這間線上A片即時觀看喔!!

    A片種類超多的,我常去光顧呢

    保證你不會後悔的啦~

    號稱業界最強,怎麼可以錯過呢

    30點現上儲值可以馬上觀看,省去等宅配時間

    http://xor.tw/4nz0x

  • 匿名使用者
    6 年前

    最近發現一家很不錯的a片專賣店唷,

    網址先貼給你 http://xor.tw/4z9kn

    它出的新片速度很快喔~每個禮拜都有很多新片

    新片價格一片是30元而已,我看過還很清晰的,

    有瑕疵片可以跟客服反應,他們會協助處理唷

    如果你要畫質更好的,也有藍光dvd,超*的

    不知道怎麼挑片的話,也有站長推薦的精選套餐

    http://xor.tw/4nqjk

    自己買很多了才推薦給你唷!!看看吧

    #@#

    推薦你這間線上A片即時觀看喔!!

    A片種類超多的,我常去光顧呢

    保證你不會後悔的啦~

    號稱業界最強,怎麼可以錯過呢

    30點現上儲值可以馬上觀看,省去等宅配時間

    http://xor.tw/4nz0x

還有問題?馬上發問,尋求解答。