我在工作簿中有大約30個不同的工作表,每個工作表中都有30多個條目。在每一行的第二列中,有一個指向文件的路徑。VBA - 刪除不包含特定值的行
此文件名可以是任何東西。另一方面,我有一個我正在檢查的大約450個不同文件名的列表。
如果文件路徑不包含任何這450個文件名,那麼我想刪除該行。
我想盡可能快速有效地做到這一點。我在VBA和Excel方面不是很有經驗。
我在工作簿中有大約30個不同的工作表,每個工作表中都有30多個條目。在每一行的第二列中,有一個指向文件的路徑。VBA - 刪除不包含特定值的行
此文件名可以是任何東西。另一方面,我有一個我正在檢查的大約450個不同文件名的列表。
如果文件路徑不包含任何這450個文件名,那麼我想刪除該行。
我想盡可能快速有效地做到這一點。我在VBA和Excel方面不是很有經驗。
一個簡單的方法來做到這一點,而無需編寫任何VBA,是使用VLOOKUP:
=VLOOKUP(A1, <absolute_reference_to_file_list>, 1, TRUE)=A1
然後使用過濾工具來刪除新列FALSE所有行。少數列可能會顯示「#N/A」;這應該被視爲與FALSE相同。
請注意,此方法需要事先對文件名列表進行排序,因爲Excel將在文件名列表上執行二進制搜索。
這不是最快的方法,但速度相當快,可能足以滿足您的需求。
請原諒我對excel的不熟悉。但是,我如何引用
如果將光標放在公式中的正確位置,Excel將爲您完成大部分工作,然後將選項卡切換到文件列表(您也應該打開)並選擇文件列表。其實,我想如果你點擊列中頂部的文件列表(即字母「A」),Excel就會完成你所需要的功能。然後回到您編輯公式的位置,然後按Enter鍵。 – Brilliand
之後,絕對引用應該看起來像''[File List.xlsx] Sheet1'!$ A $ 2:$ A $ 451'或'[File List.xlsx] Sheet1'!A:A'。美元符號是什麼使參考絕對。如果引用是以第二種形式存在的話,你可能不需要它們,儘管它不會傷害它們。 – Brilliand
僅供參考這將需要很長的時間,因爲你會檢查(30000 * 30)* 450 – Elias
我明白這一點。我試圖看看是否有更有效的方法來做到這一點。據我所知,這是唯一的方法。 – Johnrad
如果文件名存儲在哈希表中,則時間降至(30000 * 30)+450。 – Brilliand