簡體   English   中英

如何改善查找(找到最后一個相關項目)?

[英]How can this lookup (find the last relevant item) be improved?

名冊是浪費我大量時間的報告之一。 這是當前分配給特定客戶的每個員工的多站點,多合同列表。 當前,它由20多個列組成的6,000行多一點,針對3個不同的數據集進行索引。 這不是世界上最大的混亂,但仍然很痛苦。 而且這幾乎全都在excel中,因為我不知何故沒有Access的業務案例。

但是這個怪物的一部分與眾不同。 每個站點“ Site Totals一個選項卡,列出任何代理商經過的每次培訓。 第二個標簽(同樣,每個站點一個)“ Site Data僅顯示最新的培訓課程,以及他們在該課程中擁有的憑據。

第二個選項卡由此數組公式的變形驅動-Last_Row是另一個選項卡上的命名范圍,列A是“ Site Totals ”上UID列的樞軸。 為了便於閱讀,我對其進行了分解:

=IF(INDEX('Site Totals'!B:B,LARGE(($A2=INDIRECT("'Site Totals'!$A$1:$A$"&Last_Row))*
 (INDIRECT("'Site Totals'!B1:B"&Last_Row)<>"")*
 ROW(INDIRECT("'Site Totals'!$A$1:$A$"&Last_Row)),1))="Trainer",
 "",
 INDEX('Site Totals'!B:B,LARGE(($A2=INDIRECT("'Site Totals'!$A$1:$A$"&Last_Row))*
 (INDIRECT("'Site Totals'!B1:B"&Last_Row)<>"")*
 ROW(INDIRECT("'Site Totals'!$A$1:$A$"&Last_Row)),1)))

我知道這個公式能做什么,但我不知道如何改善它。 該公式需要更改,因為當前它的計算量約為5億次(不允許刪除歷史數據),並且需要3個小時才能計算出工作簿...如果不崩潰,Excel第一。

我願意使用VBA和/或自定義函數,但希望使用本機Excel函數。 我無法安裝任何東西,因此任何解決方案都必須是本機Excel,並且必須與Excel 2007兼容。

如果您的源是數據透視表,請嘗試使用GETPIVOTDATA函數。 如果沒有INDIRECTINDEX您也許可以完成所需的工作。

我了解的是,每個人都曾/未曾參加過一次培訓,並且您想檢索該培訓的名稱,以防萬一他沒有參加,您想要在單元格中留一個空白。 如果此說明正確,則可以嘗試使用此形式,請按ctrl + shift + enter執行。

=IFERROR(INDEX('Site Totals'!B$1:B$12,MATCH(A2&"Trainer",'Site Totals'!A$1:A$12&'Site Totals'!B$1:B$12)),"")

在此,A2代表人的名字。 如果您可以提供一些示例數據,則可以更精確地使用此公式,但是我建議不要在Site Total工作表中使用整個B和列,因為這肯定會減慢計算過程,而可以使用B1:B8000或更小范圍,加快流程。 希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM