2012-06-06 53 views
23

我有2個工作表的工作簿。具有名稱/值對的Excel下拉列表

「Sheet2的」 有兩列:

| A |  B  | 
+---------+---------------+ 
| code1 | description 1 | 
| code2 | Descr 2  | 

Sheet 1中具有多個列,它們(柱d)中的一個是代碼。在這個專欄中,我需要一個「下拉框」,什麼

  • 將顯示列Sheet2中B(描述),並且當用戶選擇一個描述
  • 將進入從山坳code:一臺。

在Sheet1中可以做without additional helper column? (Excel 2010中)

所以,需要的東西是什麼HTML死的簡單:

<select> 
    <option value="code1">Description 1</option> 
    <option value="code2">Descr 2</option> 
</select> 

時,當用戶選擇 「DESCR 2」 的形式得到 「代碼2」。

這個問題可能是一個重複的 - 但我不知道 - 到: How to create dropdown with multiple columns in excel,但它唯一的答案指向我的external site其中溶液是另一個問題。

增加了對更精確的解釋截圖: enter image description here

回答

11

這聽起來像數據驗證(允許列表)與VLOOKUP相結合,將你想要做什麼。

在表2上設置您的描述/代碼列表。使其成爲命名範圍(有助於避免循環引用問題)。

在工作表1的描述列中,使用數據有效性製作引用列表描述列的下拉列表。在代碼列中使用VLOOKUP函數,鍵入下拉列表值。

=IF(B4="", "", VLOOKUP(B4, FruitList, 2, FALSE)) 

更新 -

我開始看到了,你是什麼意思「沒有幫手列」,但我不知道,你可以得到你想要什麼。 Excel設計的一個事實:你看到的是你得到的,即在單元格中顯示的值是該單元格的有效值。您不能讓單元顯示一個值,但「包含」另一個值。這樣的事情在HTML中是「簡單的」,但HTML控件並不是爲了與電子表格中的單元格相同的目的而構建的。同時有兩件事:一個值,一個用戶界面表示該值。電子表格單元格可以包含一種方法來確定一個值(下拉列表,公式等),但無論它達到什麼值都將成爲它顯示的值。

Excel有形式支持與組合框的東西,但我相信價值仍然輸出到另一個單元格。

通常的做法是使用數據驗證來創建下拉列表,並使用VLOOKUP爲代碼創建單獨的列。如果你真的不能擁有另一列來包含代碼,那麼我不知道該告訴你什麼。這將取決於數據如何被消費;你想要打印輸出,還是由其他程序處理?

更新2

如果你真的執意不使用單獨的代碼列,您可以可以使用這裏描述的部分組合框技術:

http://www.contextures.com/xlDataVal10.html

這將是複雜的。你需要做的是(a)當用戶選擇D列中的一個單元格時,讓組合框顯示出來,並(b)動態調整框的顯示項目。這將涉及VBA代碼,我不能100%確定這是可能的。這似乎不值得付出努力。

+0

不能讓它工作,所以增加了屏幕截圖成我的問題。 – jm666

+1

一種選擇是使用數據輸入表和數據表單,因此您可以在輸入屏幕中使用您的數值列表來創建用戶frendingly下拉菜單,但是在數值表中使用VLookup可以將用戶友好的值到你的數據值 雖然這是一個痛苦,所以大多數人在同一張表上做,但在值字段中使用隱藏列 – MikeT

+1

附加說明:你必須交換A和B列才能使VLookup工作 – MikeT

8

簡單! 這是我們將要得到的!

enter image description here

3個步驟只:

  1. 定義範圍內查找值

  2. 使用一些代碼

    創建下拉列表

  3. 粘貼


步驟1:設置 Sheet2這樣並限定 命名範圍作爲 _descrLookup

define a named range for the VLookup

(Highlight -> Right-Click -> "Define Name...") 

這是一個可選的步驟,但它只是使它容易按照第3步。



步驟2:Sheet1,創建使用 數據驗證下拉和使用要被顯示在下拉作爲源的值。在這個例子中它是 Sheet2 A2:A4(見上文圖像):

Set data validation to the source from Sheet 2

(Data -> Data Validation) 



步驟3:添加一些VBA代碼 Sheet1

(Right-Click the tab Sheet1 -> View Code) 

粘貼到這個代碼窗口爲Sheet1

Private Sub Worksheet_Change(ByVal Target As Range) 
    selectedVal = Target.Value 

    If Target.Column = 4 Then 
     selectedNum = Application.VLookup(selectedVal, Worksheets("Sheet2").Range("_descrLookup"), 2, False) 

     If Not IsError(selectedNum) Then 
      Target.Value = selectedNum 
     End If 

    End If 
End Sub 
+0

謝謝,不幸的是,我不能嘗試solutuion,因爲在Mac OS X的Excel 2016(15.3)中缺少VisualBasic宏編輯。 :(無論如何,因爲你的截圖顯示了我的意思:) – jm666

+1

哦,不!你有開發者標籤嗎?如果沒有,您可以點擊頂部的小齒輪圖標,然後轉到功能區首選項並在此處啓用。希望有所幫助! – elektrykalAJ

1

我能夠在Excel 2016打開開發人員選項卡上(15.33)使用以下步驟的Mac OS X:

  1. 在菜單中選擇Excel->首選項
  2. 在在創作部分,單擊查看
  3. 在對話框的底部,檢查開發選項卡複選框

View dialog from Excel 2016 (15.33) for Mac OS X

  • 開發選項卡是現在可見在Excel
  • Excel main screen with Developer tab

    +0

    是的,開發者標籤在這裏,但你嘗試輸入任何VB宏嗎?它仍然是不可能的。 「工作正在進行中」,因爲它在[這裏描述](https://answers.microsoft.com/zh-cn/msoffice/forum/msoffice_excel-mso_mac/visual-basic-support-in-mac-2016/ 4afbba04-4435-4970-8b02-40da006a590e)和[也在這裏](https://excel.uservoice.com/forums/304933-excel-for-mac/suggestions/9098431-bring-back-a-fully-functional- vb-visual-basic-ed) – jm666

    +0

    VB宏在我運行Excel 15.33版的Mac上爲我工作。 –

    +0

    很酷。我只有15.13.4,我無法輸入任何VB宏。編輯器打開,但不允許輸入任何宏。需要升級。謝謝。 – jm666

    相關問題