2012-11-05 54 views
2

我不知道這是可能的,但我已被告知,張貼在這裏和一個答案最有可能的地方。重命名細胞在Excel

我有四列在Excel如下

A: all product id's 
B: reference No. 
C: selected product id's 
D: product codes. 

我想的Excel做的是搜索欄出用於ID的列C,如果有匹配,它重命名爲相應的行在列D中搜索的列D中。由於列A中的產品ID可能重複多達8次,因此我無法輕鬆使用vlookup。

我希望是有道理的,我會盡量回答所有的問題,我可以。我對excel一無所知,除了基礎知識之外,如果任何人都能對此有所瞭解,我將不勝感激。

+0

是宏觀的允許? – CustomX

回答

1

試試這個:

A之前插入一個新列。所以,現在所有的列都轉移了一個,即你的A現在B

現在小區A1(新插入的A1,不是你原來的A1現在是B1

=VLOOKUP(B1, $D$1:$E$1000, 2, 0) 

其中1000無論你最後一排是什麼。然後拖下公式。

您還沒有指定如果一個ID在山坳A,但不是在山坳C會發生什麼。如果你想讓它僅僅停留什麼是膠原A然後用這個公式來代替:

=IF(ISNA(VLOOKUP(B1, $D$1:$E$1000, 2, 0)), B1, VLOOKUP(B1, $D$1:$E$1000, 2, 0)) 
+0

謝謝丹,它適用於第一列,但其他人只是拿出#N/A在其中。有任何想法嗎。 – Graeme

+0

我已經找出了爲什麼,但不知道如何解決它。當我將其複製下來時,它將D1:E1000更改爲D2:E1001,並在查看其上方的單元格時錯過了。我需要D1:E1000保持原樣,不會在複製數據時改變數字。 – Graeme

+0

標記應保持不變的範圍,如下所示:'$ D $ 1:$ E $ 1000'。現在在別處複製時不會改變。 –

0

這應該做的伎倆:

Sub test() 

LastRowA = Cells(Rows.Count, "A").End(xlUp).Row 
LastRowC = Cells(Rows.Count, "C").End(xlUp).Row 

For i = 1 To LastRowA 
    For j = 1 To LastRowC 
     If Range("A" & i).Value = Range("C" & j).Value Then 
      Range("D" & i).Value = Range("C" & j).Address(False, False) 
     End If 
    Next j 
Next i 

End Sub 
+0

這個宏是非常不必要的。如果這確實給出了正確的答案(與我對問題的解釋完全不同),那麼你可以把這個公式放在Col D:= MATCH(A1,$ C $ 1:$ C $ 1000,0)或=「C」&MATCH (A2,$ C $ 1:$ C $ 8,0),如果你想要字母「C」。 – Dan

+0

@丹,你有沒有測試過?它將檢查A1中的值,將其與C中的值相匹配,並且在D1中您將得到C中值的位置。 – CustomX

+0

我測試過了,是的。兩人都給了我相同的結果。你有不同的結果嗎?我的公式確實如你所描述的那樣,匹配返回數組中第一行開始的位置與行號相同。但是我發現我在第二個公式中使用了A2而不是A1,儘管如此,我的不好。 – Dan

0

所以你的數據是這樣的?我不明白你的預期結果是什麼?

A B C D expected result 
1 101 1 201 ? 
1 102 4 204 
2 103 
3 104 
3 105 
4 106 
+0

您還可以在E列中看到數字。然後,如果B與D中的一個數字相匹配,那麼A列將顯示E列中與D列匹配相同的行中的數字。 – Graeme