2013-07-30 69 views
2

我在工作簿中有大約30個不同的工作表,每個工作表中都有30多個條目。在每一行的第二列中,有一個指向文件的路徑。VBA - 刪除不包含特定值的行

此文件名可以是任何東西。另一方面,我有一個我正在檢查的大約450個不同文件名的列表。

如果文件路徑不包含任何這450個文件名,那麼我想刪除該行。

我想盡可能快速有效地做到這一點。我在VBA和Excel方面不是很有經驗。

+0

僅供參考這將需要很長的時間,因爲你會檢查(30000 * 30)* 450 – Elias

+0

我明白這一點。我試圖看看是否有更有效的方法來做到這一點。據我所知,這是唯一的方法。 – Johnrad

+0

如果文件名存儲在哈希表中,則時間降至(30000 * 30)+450。 – Brilliand

回答

3

一個簡單的方法來做到這一點,而無需編寫任何VBA,是使用VLOOKUP:

=VLOOKUP(A1, <absolute_reference_to_file_list>, 1, TRUE)=A1 

然後使用過濾工具來刪除新列FALSE所有行。少數列可能會顯示「#N/A」;這應該被視爲與FALSE相同。

請注意,此方法需要事先對文件名列表進行排序,因爲Excel將在文件名列表上執行二進制搜索。

這不是最快的方法,但速度相當快,可能足以滿足您的需求。

+0

請原諒我對excel的不熟悉。但是,我如何引用?我在另一個電子表格中有文件列表。 – Johnrad

+0

如果將光標放在公式中的正確位置,Excel將爲您完成大部分工作,然後將選項卡切換到文件列表(您也應該打開)並選擇文件列表。其實,我想如果你點擊列中頂部的文件列表(即字母「A」),Excel就會完成你所需要的功能。然後回到您編輯公式的位置,然後按Enter鍵。 – Brilliand

+0

之後,絕對引用應該看起來像''[File List.xlsx] Sheet1'!$ A $ 2:$ A $ 451'或'[File List.xlsx] Sheet1'!A:A'。美元符號是什麼使參考絕對。如果引用是以第二種形式存在的話,你可能不需要它們,儘管它不會傷害它們。 – Brilliand

相關問題