2012-04-17 76 views
5

我試圖比較工作表1中的列a與工作表2中的列a,然後將工作表1中列b中的列b中的對應值複製到工作表2(列a值匹配的列)中的列b中。我一直在努力閱讀如何做到這一點,但我不確定是否應該嘗試創建一個宏,或者如果有更簡單的方法來做到這一點,也許VLOOKUP或MATCH?我真的不熟悉這些函數是如何工作的。如果前兩列匹配,如何比較Excel中的兩列(來自不同工作表)並從相應列中複製值?

另外,如果有差別,會有重複列值b摺疊的2

表1

12AT8001 1 
12AT8002 2 
12AT8003 3 
12AT8004 4 
12AT8005 5 
12AT8006 6 

表2

12AT8001 
12AT8001 
12AT8001 
12AT8001 
12AT8001 
12AT8002 
12AT8002 
12AT8002 
12AT8002 
12AT8002 
12AT8003 
12AT8003 
12AT8003 
12AT8003 
12AT8003 

回答

5

Vlookup是好的,如果參考值(A欄,表1)按升序排列。另一種選擇是指數搭配,可用於無論順序(只要在A列的值,表1是唯一的)

這是你放什麼在表列B 2

=INDEX(Sheet1!A$1:B$6,MATCH(A1,Sheet1!A$1:A$6),2) 

設置Sheet1!A$1:B$6Sheet1!A$1:A$6作爲命名的範圍使它更友好一些。

+0

當我用在數據的子集,式(我在問題作爲一個例子),它的工作。但是,當我在全套數據上嘗試它時(sheet1爲600行,sheet2爲2994行),它給了我#N/A錯誤。我將公式更新爲:= INDEX(Sheet1!A $ 1:B $ 600,MATCH(A1,Sheet1!A $ 1:A $ 600),2)。 – kmcamara 2012-04-17 16:37:52

+0

然後我嘗試了sheet1上的全部600行,但保留它與示例中使用的sheet2的相同測試子集。使用相同的= INDEX(Sheet1!A $ 1:B $ 600,MATCH(A1,Sheet1!A $ 1:A $ 600),2)公式,它爲所有行返回了276個表面上任意的數字。 – kmcamara 2012-04-17 16:47:24

+0

也許它不工作,因爲sheet2的全套數據中的id與sheet1的順序不同(就像它們在示例中一樣)?所有這些身份證都混合在一起。 。 。這就是爲什麼我需要比手工匹配更快的原因。 sheet1的A列中的所有值都是唯一的。 任何想法,爲什麼它不會在全套工作,或有別的嘗試? – kmcamara 2012-04-17 16:49:55

0

製作一個真值表並使用SUMPRODUCT獲取值。將其複製到Sheet2上的單元格B1並根據需要複製下去:
=SUMPRODUCT(--($A1 = Sheet1!$A:$A), Sheet1!$B:$B)
創建真值表的部分是:
--($A1 = Sheet1!$A:$A)
這將返回0和1的數組。當值匹配時爲1,當它們不匹配時爲0。然後在那之後的逗號基本上會做我稱之爲「有趣」的矩陣乘法,並返回結果。我可能誤解了你的問題,但Sheet1的A列中有重複的值嗎?

+0

我沒有遵循你的解決方案:(但沒有在Sheet1列A中有重複。 – kmcamara 2012-04-17 18:25:01

+0

嘗試只需將我給你的第一個公式複製並粘貼到Sheet2的單元格B1中,然後按需要填充即可。假設您的工作表設置爲您在文章中提到的方式,它應該給出正確的值,它基本上乘以1 *只要工作表1的A列與S的A列中的值匹配,工作表1的B列就可以heet 2。 – deusxmach1na 2012-04-17 18:37:10

-1

嘗試:

sheet 2 a1 =vlookup(sheet2a1,sheet1$a$1:$b$6,2) 

然後拖下來。

它應該工作。

3

正如kmcamara發現的那樣,這正是VLOOKUP打算解決的問題,並且使用vlookup可以說是最簡單的替代方法來完成工作。

除了lookup_value,要搜索的table_range和返回值的column_index這三個參數外,VLOOKUP還有一個可選的第四個參數,即Excel文檔調用「range_lookup」。

擴展deathApril的解釋,如果此參數設置爲TRUE(或1)或省略,則表格範圍必須按照函數範圍第一列中值的升序排序,以返回通常被理解爲「正確」的價值。在此默認行爲下,該函數將返回基於完全匹​​配的值(如果找到匹配項),或者在未找到完全匹配的情況下返回近似匹配項。

如果匹配是近似值,則函數返回的值將基於小於lookup_value的下一個最大值。例如,如果工作表1中的表中缺少「12AT8003」,則表2中該值的查找公式將返回'2',因爲「12AT8002」是表範圍查找列中的最大值比「12AT8003」。 (例如,如果目標是在稅表中查找費率,則VLOOKUP的默認行爲非常有意義)。

但是,如果第四個參數設置爲FALSE(或0),VLOOKUP將返回查找只有完全匹配時纔有值,如果沒有則爲#N/A的錯誤值。現在通常的做法是將確切的VLOOKUP包裝在IFERROR函數中,以便優雅地捕捉不匹配。在引入IFERROR之前,使用VLOOKUP公式檢查沒有匹配的IF函數檢查是否匹配,並且一次返回實際的匹配值。

雖然一開始很難掌握,deusxmach1na人建議的解決方案是一套功能強大的替代品的變化,以VLOOKUP可用於爲一列或列表中返回值留下的查閱列,擴大辦案需要在多個標準上精確匹配,或修改爲將多個標準中的OR以及AND匹配條件併入。

重複kcamara的選擇的解決方案中,VLOOKUP公式針對此問題將是:

=VLOOKUP(A1,Sheet1!A$1:B$600,2,FALSE) 
相關問題