Excel 工作表之間的資料驗證

Excel 工作表之間的資料驗證

我在工作表 1 中有一個 ID 和描述清單。

表1

表2

表 1 中的列表具有重複的 ID,但具有不同的描述。我如何能夠使用表 2 中的資料驗證將 ID 號碼 4 的所有重複合併為 1,但在 A 列中進行選擇後允許使用者選擇他們想要的描述(使用下拉方塊) ?

為此,我想遠離巨集 - 僅使用內建函數。

任何幫助表示讚賞!

答案1

合併 Sheet1 中的重複項。尋找公式僅傳回第一個找到的值,因此如果您有多個相同 ID,則需要使用唯一 ID 建立查找。如果您不想或無法變更原始表,請在輔助表中準備該資料並使用輔助表進行資料驗證。

識別符(之所以這樣稱呼是有原因的)不是唯一的,這是相當具有誤導性的。

答案2

您沒有提到您正在使用的 Excel 版本。我根據我對你的問題的理解提出了一個可能的解決方案。不過,它也使用了名為 IFERROR 和 COUNTBLANK 的函數,我認為這些函數在 Excel 2007 之前不可用。

這可能不是非常理想的解決方案,因為它使用輔助列和輔助表!

在此範例中,範例資料位於 Sheet1!A2:B10 中,如該螢幕截圖所示。

首先,我們需要在 D 列中建立輔助列,以從您的 ID 中取得唯一清單。

在 D2 中輸入以下公式,然後按公式欄中的CTRL+ SHIFT+ENTER建立陣列公式。您還需要保留一行(最好是第一行)作為標題才能正常工作。

該公式應括在大括號中以表示它是數組公式。

根據主列中唯一值的預期計數,將其向下拖曳到預期的行。最終它會開始在底部返回空白,然後你就可以停止了。這將建立一個唯一的 ID 主清單。

=IFERROR(INDEX($A$2:$A$10, MATCH(0,COUNTIF($D$1:D1, $A$2:$A$10), 0)),"")

在此輸入影像描述

現在我們需要知道該清單的確切開始和結束位置來填充驗證清單。

現在在 G3 中輸入以下公式。

=INDEX(Sheet1!D2:D10,1)

並在 G4 中輸入以下數組公式。

=MIN(IF(Sheet1!D2:D10="",ROW(Sheet1!D2:D10),9^99))-2

不要忘記這個的CTRL+ SHIFT+ 。ENTER

現在轉到名稱管理器並建立一個名為 MyList 的新名稱

將以下公式代入其中

=INDEX(Sheet1!$D$2:$D$10,Sheet1!$G$3):INDEX(Sheet1!$D$2:$D$10,Sheet1!$G$4)

這裡我們使用 INDEX 回傳單元格引用而不是值

在此輸入影像描述

插入一個名為 Sheet2 的新工作表。

現在,在 A2 欄及下方建立驗證清單並將其放入=MyList其中。

現在,所有唯一值都出現在 ID 的第一個下拉清單中。 在此輸入影像描述

在此輸入影像描述

第 1 部分就完成了。

現在,下一個任務是根據從描述列中提取的資料填入第二個驗證清單。

插入第三個輔助表,稱為 Sheet3。您可以簡單地隱藏此工作表。

在此範例中,我在 Sheet3!B2:H10 中取得了資料。根據主列表中 ID 的最大重複數來決定列數。還要保留第一列 A 才能正常運作。

在 B2 中輸入以下公式,然後按公式欄中的CTRL+ SHIFT+ENTER建立陣列公式。

按照預期將其向下拖曳到上方和下方。

=IFERROR(INDEX(Sheet1!$B$2:$B$10, SMALL(IF(Sheet2!$A2=Sheet1!$A$2:$A$10,ROW(Sheet1!$A$2:$A$10)-1,999),COLUMN()-COLUMN($A$2))),"")

在此輸入影像描述 傳回名稱管理器,建立一個名為 Trimmed 的新名稱,並在其中輸入以下公式。

=OFFSET(Sheet3!$B1,0,0):OFFSET(Sheet3!$B1,0,COUNTA(Sheet3!$B1:$H1)-COUNTBLANK(Sheet3!$B1:$H1)-1)

這會產生一個排除空白的列表,以便正確修剪該列表。

在此輸入影像描述

現在,在 Sheet2 的儲存格 B2 及下方建立驗證清單並將其放入=Trimmed其中。 在此輸入影像描述

現在,當 Sheet1!A2:A10 中的資料發生變更時,唯一值清單會自動反映在 MyList 中,然後名稱 Trimmed 將僅從 Sheet1 描述列中取得預期的描述。

請參閱下面的 GIF 螢幕,以了解整個過程的運作方式。 在此輸入影像描述

相關內容