2016-05-13 335 views
1

我有兩個excel文件(實際上,它們是XML文件,但我的用戶常常在excel中打開)。他們每個只有一張桌子。 這些表格有一個「ID」文本列。我可以根據另一個excel表格篩選一個excel表格嗎?

我想使我的用戶能夠查看其他文件中沒有匹配行(基於ID列)的每個文件的行。 表1:

|Some words1| IdA | Some more words1| 
|Some words2| IdB | Some more words2| 
|Some words3| IdD | Some more words3| 

表2:

|Some words4| IdC | Some more words4| 
|Some words5| IdA | Some more words5| 
|Some words6| IdB | Some more words6| 
|Some words7| IdE | Some more words7| 

由於IDA和美洲開發銀行出現在兩個表中,我想因此忽略它們 ,我想提取

Table1_Filtered:

|Some words3| IdD | Some more words3| 

Table2_Filtered:

|Some words4| IdC | Some more words4| 
|Some words7| IdE | Some more words7| 

我可以使用Excel功能嗎? 或者,我可以用最少的代碼來做到嗎?

我想,一種解決方案是將表複製到同一個Excel實例上的單獨工作表中,並使用公式列擴展兩個表,從而創建一個公式列,以便爲每行檢查其他表的ID列文本。

Table1_WithFormulaColumn:

|Some words1| IdA | Some more words1|**True** 
|Some words2| IdB | Some more words2|**True** 
|Some words3| IdD | Some more words3|**False** 

....之後,這是正常的excel過濾的問題。我不太確定VBA代碼是什麼樣的(我是C#),但我認爲它是可以解決的。

有沒有其他辦法?或者這是最好的方法,你能告訴我代碼是什麼嗎?

我的用戶使用的是Excel 2013

+1

如果您有Visual Studio,鼓勵開發人員使用VSTO解決方案,而不是使用VBA來訪問C#。 – GibralterTop

+0

我有視覺工作室。 VSTO路線會要求安裝我提供的應用程序的文件的用戶正確嗎?我曾希望通過在用戶收集文件的網站上發佈excel說明來解決這個問題。 – Tormod

+0

但這是正確的,您也可以開發文檔模板。這將是特定於您創建的文檔。然後,他們可以像XML文件一樣抓取模板 – GibralterTop

回答

0

您可以在Excel中打開這兩個文件,並使用VLOOKUP來檢查值存在,包裝一個IF(ISERROR())圍繞它,你可以返回一個true或一個假。

如果上面的數據跨越列A,B和C,則可以使用以下公式(針對每個文件進行調整)。

=IF(ISERROR(VLOOKUP(B1,<WorkbookToCheck>!B:B,1,False))=TRUE,"X","") 

如果ID不存在,WorkbookToCheck則公式將返回X,否則它將返回空白。

相關問題