![Excel - 根據人員 ID 將 2 個工作表合併為 1 個工作表,如果多次找到 ID,則建立新行](https://rvso.com/image/1618340/Excel%20-%20%E6%A0%B9%E6%93%9A%E4%BA%BA%E5%93%A1%20ID%20%E5%B0%87%202%20%E5%80%8B%E5%B7%A5%E4%BD%9C%E8%A1%A8%E5%90%88%E4%BD%B5%E7%82%BA%201%20%E5%80%8B%E5%B7%A5%E4%BD%9C%E8%A1%A8%EF%BC%8C%E5%A6%82%E6%9E%9C%E5%A4%9A%E6%AC%A1%E6%89%BE%E5%88%B0%20ID%EF%BC%8C%E5%89%87%E5%BB%BA%E7%AB%8B%E6%96%B0%E8%A1%8C.png)
我的人員資料和地址資料位於 2 個不同的工作表中,我希望將其合併為 1 個工作表。
例如,如果我有以下 2 個資料集:
**Person Data**
PersonID Name
1 John Smith
2 Mark Brown
**Address Data**
PersonID Address
1 UK
1 France
1 USA
2 UK
我需要他們這樣加入:
**Combined Data**
PersonID Name Address
1 John Smith UK
1 John Smith France
1 John Smith USA
2 Mark Brown UK
有沒有辦法透過excel公式來做到這一點?謝謝
答案1
看起來您只是想將該人的姓名添加到地址資料列表的每一行中。如果是這樣,這很容易。
假設
- 人員資料已排序且連續(即 PersonID 1 位於第 2 行,PersonID 100 位於第 101 行)-如果情況不屬實,請參閱上一節。
- 地址資料已排序
解決方案
**Combined Data Sheet**
PersonID Name Address
=$Addresses!A2 =OFFSET($Names!$B$1, A2, 0) =$Addresses!B2
當然,也要向下複製公式。
解釋
第一列和最後一列只是從地址表複製出來。此OFFSET
功能可讓您向下或橫向移動一定的距離。在本例中$Names!$B$1
,我們知道正確的 Person 將位於 PersonID + 1 的行上。
不連續的人員 ID
此VLOOKUP
函數可用於搜尋 PersonID,然後傳回同一行中的另一列。在這種情況下,類似:
=VLOOKUP(A2, Names!$A$1:$B$1000, 2, FALSE)