2014-12-05 54 views
0

我有兩張表。表A和表B.基於LOOKUP的數據驗證

表A具有以下三列:「屬性ID」,「屬性名稱」和「值」。從表A中 實施例的行(逗號表示新的一列):

  • 「10000,長度,3M」
  • 「10000,長度,5M」
  • 「10000,長度,7M」
  • 「20000,深度,1.5米」
  • 「20000,深度,3M」
  • 「20000,深度,4,5M」

表B具有以下三列: 「產品號」, 「Attribut ID」 和 「值」 從表B中 實施例的行(逗號表示新的一列):

  • 「38-500351,10000,3M」

該工作表將被客戶用來輸入數據,所以我想盡可能簡化和驗證所有內容,以儘量減少錯誤。目前,客戶手動輸入表B中的「價值」(示例中的3M)。

我的目標是根據表A將其更改爲基於下拉列表或至少驗證。因此,如果表B中的「屬性ID」爲10000,則只有「3M」,可以將「5M」和「7M」作爲值。

我發現這個topic,這看起來很相似,但我一直無法弄清楚如何使用它。任何幫助將非常感激。如果可能的話,避免使用VBA。

我已成功修改了Axcel的答案。這裏是修改後的代碼,以使其適應我的工作表:

=INDEX('Attribut værdier'!$C:$C;MATCH(INDIRECT("RC[-2]";FALSE);'Attribut værdier'!$A:$A;0)):INDEX('Attribut værdier'!$C:$C;MATCH(INDIRECT("RC[-2]";FALSE);'Attribut værdier'!$A:$A;1)) 

我已將「,」更改爲「;」和圖紙參考。除此之外,我沒有做任何改變,一切正常。

+0

是對錶A由每默認「Attribut ID」升序排列數據驗證(源=值列表)內的列表? – 2014-12-05 10:31:12

+0

目前沒有對錶進行排序。用戶會經常輸入更多的數據,但如果這樣做更容易,按屬性ID對數據進行排序就可以了。 – Splurk 2014-12-05 10:50:47

+0

我已經根據Axel的評論編輯了代碼,現在一切都已經開始了。 :-) – Splurk 2014-12-05 12:31:15

回答

1

假設我們有這樣的情況: enter image description here

注意,在A列中Attribut ID進行排序上升。

創建一個名爲「值列表」使用名稱管理器是指名稱

=INDEX(Sheet1!$C:$C,MATCH(INDIRECT("RC[-1]",FALSE),Sheet1!$A:$A,0)):INDEX(Sheet1!$C:$C,MATCH(INDIRECT("RC[-1]",FALSE),Sheet1!$A:$A,1)) 

如何使用名稱管理器,看https://support.office.com/en-us/article/Define-and-use-names-in-formulas-4d0f13ac-53b7-422e-afd2-abd7ff379c64?ui=en-US&rs=en-US&ad=US#bmmanage_names_by_using_the_name_manage

的「RC [-1]」內的間接必須相應地更改了您的Excel的語言版本。對於德國Excel,它必須是「ZS(-1)」。

該命名範圍將動態地從第一次出現「屬性ID」到第A列中該「屬性ID」的最後一次出現時獲得C列的範圍。「屬性ID」取自左側單元格它被分配給的單元格。

然後可以使用這個命名範圍作爲源用於在列G的下拉菜單

+0

感謝您的回覆阿克塞爾。我編輯了我的帖子以反映您的解決方案,但仍然收到一些錯誤。請看我的帖子結尾。 – Splurk 2014-12-05 12:02:47

+0

您不能直接將公式作爲數據驗證的源。你必須創建一個名爲「ValueList」的公式,然後將其用作源。 – 2014-12-05 12:11:32

+0

對不起,如果我沒有說清楚。我創建了一個ValueList名稱,這個名稱由Data Validation – Splurk 2014-12-05 12:15:54