2015-02-07 73 views
2

我有一個電子表格,其中客戶必須在Excel中爲(1)帳戶,(2)帳戶名稱和(3)帳戶類別進行下拉選擇並且依賴於每個其他。我實際上做了一個非VBA下拉列表相互依賴。問題是,下拉列表只能一次一個地工作,而不是進行多個選擇。Excel VBA下拉列表與多選的從屬列表

所以我想要的當然是下拉列表不僅適用於一行,而且可以選擇多行。 這個下拉列表的唯一方法將工作非VBA是通過創建作爲我的許多唯一列表取決於帳戶和他們的家屬的數量。

至今沒有使用Excel VBA我也做了以下內容:

  1. 我已定義的名稱3主名單範圍:GLacct,GLname,&桂林航專: enter image description here

  2. 創建 - 3唯一列表: 因此,當選擇第一個DDL「55700」時,將填充此唯一列表,下一個DDL將填充「Research-Other」,然後下一個DDL將填充與「Research-Other」對應的3個選項。

所以在Excel中創建的唯一列表我添加這些公式:

UniqueGLacct: `INDEX(GLacct,MATCH(0,COUNTIF($F$1:F1,GLacct),0))` 

UniqueGLname: 
    `INDEX(GLname,MATCH(0,COUNTIF($G$1:G1,GLname)+(GLacct<>TM!$A$16),0))` 

UniqueGLcat: 
    `INDEX(GLcat,MATCH(0,COUNTIF($H$1:H1,GLcat)+(GLacct<>TM!$A$16)+(GLname<>TM!$B$16),0))` 
  • 名稱管理器 - 指並添加以下公式:

    GLacct:Offset(TB!$A$2,0,0,COUNTA(TB!$A$2:$A$1000)) GLname:Offset(TB!$B$2,0,0,COUNTA(TB!$B$2:$B$1000)) 桂林航專:Offset(TB!$C$2,0,0,COUNTA(TB!$C$2:$C$1000))

    uniqueGLacct:OFFSET(TB!$F$2,0,0,COUNT(IF(TB!$F$2:$F$1000=」」,」」,1)),1) uniqueGLname:OFFSET(TB!$G$2,0,0,COUNT(IF(TB!$G$2:$G$1000=」」,」」,1)),1) uniqueGLcat:OFFSET(TB!$H$2,0,0,COUNT(IF(TB!$H$2:$H$1000=」」,」」,1)),1)

  • 添加的數據驗證,以需要下拉在工作表列表命名™細胞:(問題是,如果我在那裏進行另一選擇下一行,我仍然從第一個選擇中獲得數據,這意味着爲了工作,我必須爲每個帳戶創建儘可能多的唯一列表。

  • 細胞:A16:uniqueGLacct

    細胞:B16:uniqueGLname

    細胞:C16:uniqueGLcat

    我怎麼會做這個Excel下拉列表動態3列出依賴於多個使用Excel VBA進行選擇。但是,如果您注意到55700以下的帳戶無法通過他們的從屬列表,因爲首先選擇的是55700. 這種不使用VBA的唯一方法是通過爲每個依賴帳戶創建唯一列表。

    enter image description here

    回答

    0

    我不知道你離不開宏觀做到這一點。

    1)首先你可以參考改變風格R1C1: Link to great explanation

    2)然後,你將創建一個名爲範圍的每個單獨的列表(我假設他們是有限的)。 enter image description here

    3)然後,您將添加驗證列表,然後間接到該範圍的名稱(在標題或偏移單元格中)到每個間接。

    有了這個,你就可以說:「這行,列偏移」或任何適用: enter image description here 在這種情況下,我選擇了同一行,一列是命名範圍的名稱左側的我希望在下降。

    enter image description here

    這樣做的好處是,你必須在所有細胞的1個公式。您可以將顯示更改回A1類型顯示,並且公式將適應。