我的工作簿中有兩個 Excel 工作表,如下所示
表 1 和表 2:
下面是兩個sheet之間的字段關係
- EID 與 EmID 相同
- DepID 與 DependentID 相同
- DepDOB 與 DependentDOB 相同
我想比較 EID 和 EmID。如果匹配,則對 DepID 與 DependentID 進行另一次比較。如果 DepID 為空,則將 DepDOB 與 DependentDOB 進行比較。當所有這些都成立時,從 Sheet2 中取得 DependentFirstName 和 DependentLastName 並將其複製到 Sheet 1 中的新欄位中。
請參閱下圖以了解我的預期結果。
輸出:
請建議一種方法來實現這一目標。如果VLOOKUP和IF必須結合,請告訴我公式。這讓我做惡夢:(
答案1
按要求解決
按照您要求的方式執行此操作的簡單方法是使用輔助列。假設工作表 1 看起來像您的輸出範例,顯示了 A:F 列,工作表 2 也顯示了 A:F。假設我們使用 G 列作為每張紙上的輔助列。
輔助列連接三個比較值。因此,在每張紙上,G2 將包含:
=A2&E2&F2
將公式複製到每張紙上的列中。然後比較這些值以找到您需要的記錄。
VLOOKUP 要求查找列位於陣列的最左邊。您可以使用 INDEX 加上 MATCH 來完成相同樣式的查找,但沒有此限制。表 1、C2 將包含:
=INDEX(sheet2!B:C,MATCH(G2,sheet2!G:G,0),1)
在 D2 中:
=INDEX(sheet2!B:C,MATCH(G2,sheet2!G:G,0),2)
將這些內容複製到該列中。 MATCH 尋找與工作表 2 上的行相符的鍵並傳回對應的名稱。
如果您不想看到輔助列,可以隱藏它們。如果您好奇為什麼與 DepDOB 關聯的按鍵看起來不像日期,那是因為它使用 Excel 用來儲存日期的內部表示形式。
更簡單的解決方案
在這種情況下,您擁有填寫記錄中已包含的名字和姓氏欄位所需的所有資訊。您可以只解析 DepName 字段,而不是使用輔助列和查找。 C2 將是:
=LEFT(B2,FIND(" ",B2)-1)
D2 為:
=RIGHT(B2,LEN(B2)-FIND(" ",B2))