Board logo

標題: [發問] 下拉式選單撈取資料 [打印本頁]

作者: v03586    時間: 2016-7-24 17:50     標題: 下拉式選單撈取資料

本帖最後由 v03586 於 2016-7-24 17:52 編輯

我想利用XCEL 製作一個 客戶訂單資訊, 不知道如何使用?
VLOOKUP不太熟悉,請求幫忙

下拉式選單會製作, 但是不知道怎麼去從資料庫撈資料出來
例如從B1 選擇客戶代碼
[attach]24737[/attach]

他會從資料庫頁面去選取資料, 把我下拉式選單選的A 客戶代碼的資訊對應欄位作顯示
[attach]24736[/attach]

因為每次分類會不一樣, 所以中間有F,G,H 欄 是我自己輸入不知道能不能完成
如果不能也可以把Remark 欄位移到 F欄位, G,H,I 欄變成分類1,2,3

[attach]24738[/attach]
作者: c_c_lai    時間: 2016-7-25 07:01

回復 1# v03586
我是應用 Find() 來做出這一範例, 不過
我倒希望看看使用 VLookup 如何達成。
[attach]24742[/attach]
作者: c_c_lai    時間: 2016-7-25 07:05

回復 1# v03586
  1. ThisWorkbook:
  2. Option Explicit

  3. Private Sub Workbook_Open()
  4.     Dim rng As Range, cts As Integer
  5.     Dim sh As Worksheet, dic As Object
  6.     Dim m As Variant
  7.    
  8.     Set dic = CreateObject("scripting.dictionary")

  9.     Set sh = Sheets("資料庫")
  10.     With Sheets("範例測試")
  11.         With .ComboBox1
  12.             .Clear
  13.             '  .Value = ""
  14.             .ColumnCount = 1
  15.             .ColumnWidths = "80"
  16.             .ColumnHeads = False
  17.             
  18.             For Each rng In Range(sh.[A2], sh.[A2].End(xlDown))
  19.                 dic(rng.Value) = rng.Value
  20.             Next
  21.             
  22.             m = dic.Items                    ' 字典存入到 m 變數中
  23.             For cts = 0 To UBound(dic.Keys)
  24.                 .AddItem m(cts)
  25.             Next
  26.             .Value = ""                      ' m(0) = "A"
  27.         End With
  28.     End With
  29. End Sub
複製代碼
  1. 工作表3 (範例測試):
  2. Private Sub ComboBox1_Change()
  3.     Dim sh As Range, c As Variant
  4.    
  5.     Sheets("範例測試").[A3:I65535].Clear
  6.     Set sh = Sheets("範例測試").[A3]

  7.     '  這個範例會在第一張工作表上的 A1:A500 範圍內尋找值為 2 的所有儲存格,
  8.     '  並將這些儲存格的值變更為 5。
  9.     With Sheets("資料庫").Range("A2:A" & [A2].End(xlDown).Row)
  10.         Set c = .Find(ComboBox1.Value, LookIn:=xlValues)
  11.         If Not c Is Nothing Then
  12.             firstAddress = c.Address
  13.             Do
  14.                 c.Resize(, 5).Copy sh
  15.                 sh.Offset(0, 8) = c.Offset(0, 6)
  16.                
  17.                 Set sh = sh.Offset(1)
  18.                 Set c = .FindNext(c)
  19.             Loop While Not c Is Nothing And c.Address <> firstAddress
  20.         End If
  21.     End With
  22. End Sub
複製代碼

作者: 准提部林    時間: 2016-7-25 13:54

是想篩選資料吧!論壇有很多例子,找一下應可以,或自行錄製巨集試試,
若想用純公式,參考如下(不用陣列公式.加輔助欄):
[attach]24744[/attach]

輔助公式:
=LOOKUP("z",IF({1,0},"",(MATCH(C$1,INDIRECT("資料庫!A"&A2+2&":A9000"),)+A2)&""))

取資料公式:
=IF($A3="","",INDEX(資料庫!$A:$G,$A3+1,MATCH(B$2,資料庫!$1:$1,)))

以上適用于〔未排序〕的資料∼∼
作者: v03586    時間: 2016-7-26 13:05

回復 4# 准提部林


    感謝大大的提醒....因為有先去Youtube 爬文, 不知道這個專有名詞!! 現在又學了一招了!! 感謝




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