Board logo

標題: [發問] 關於VLOOKUP的用法.請幫忙 [打印本頁]

作者: kan109    時間: 2011-10-16 20:42     標題: 關於VLOOKUP的用法.請幫忙

[attach]8249[/attach]
附件bookeasy_01.rar 內
以Sheet1 A欄 A1-A2000 產品編號
Sheet2 A1-H1589 為產品種類以A-H DPXXX/DP1XXX , DP2XXX,DP3XXX,DP4XXX,DP5XXX,DP6XXX,DP7XXXDPCXXXX 順序排列
以B5為例,小弟從以前的發問中,利用
=IF(ISNA(VLOOKUP($A5,Sheet2!$A$1:$H$1600,2,FALSE)=TRUE),"",VLOOKUP($A5,Sheet2!$A$1:$H$1600,2,FALSE))
順利排出
A5為DP1383 B5為DP21383 C5-H5 因沒有可用產品編號故出現0
問題
以Sheet1 A31   DP3753/2C, 於Sheet2 內 507列 ,除了C507 = DP3753/2C , 還有B 507 D507 可用
利用那種公式可以實現
Sheet1 B31 = Sheet2 A507
Sheet1 C31 = Sheet2 B507
Sheet1 D31 = Sheet2 C507
Sheet1 E31 = Sheet2 D507
Sheet1 F31 = Sheet2 F507
其餘的都跟這種排列??
作者: onegirl0204    時間: 2011-10-16 22:10

回復 1# kan109


不知為何你的SHEET1的A31的產品代號在SHEET2的A欄裡找不到?因此利用VLOOKUP公式當然就無效囉!
奇忸的是為何SHEET1的A31與其他不同,它卻是對應到SHEET2的B欄呢?或者你的公式應該是SHEET2的A欄找不到資料時,改為尋求SHEET2的B欄呢?
作者: kan109    時間: 2011-10-16 22:22

回復  kan109


不知為何你的SHEET1的A31的產品代號在SHEET2的A欄裡找不到?因此利用VLOOKUP公式當然就 ...
onegirl0204 發表於 2011-10-16 22:10



    因為Sheet1 A31 的產品代號在 Sheet2 C507. 我希望實現到Sheet1 B31-H31 =Sheet2 B507-H507
如此類推!!感謝你的幫忙!!
作者: man65boy    時間: 2011-10-16 23:21

回復 1# kan109

B5=IF(A5="","",INDEX(Sheet2!A:H,SUMPRODUCT((Sheet2!$A$1:$H$1600=Sheet1!$A5)*ROW(Sheet2!$A$1:$H$1600)),SUMPRODUCT((Sheet2!$A$1:$H$1600=Sheet1!$A5)*COLUMN($A:$H))-1))

参考用:因檔案資料較龐大,運算速度變慢,
待高手幫忙解題修正!!!
作者: kan109    時間: 2011-10-16 23:52

回復  kan109

B5=IF(A5="","",INDEX(Sheet2!A:H,SUMPRODUCT((Sheet2!$A$1H$1600=Sheet1!$A5)*ROW(She ...
man65boy 發表於 2011-10-16 23:21

好~!唔該~!謝謝!!請問可以解釋一下嗎~!?想了解更多~!!謝
作者: chin15    時間: 2011-10-17 08:29

這是用陣列公式求得Sheet2!$A$1:$H$1600中值與Sheet1!$A5相等的列號
sumproduct屬陣列公式,在大量儲存格使用時會要很長時間的重算。
最好在資料量很小或暫時性的工作時才用公式處理。
作者: kan109    時間: 2011-10-17 11:05

這是用陣列公式求得Sheet2!$A$1H$1600中值與Sheet1!$A5相等的列號
sumproduct屬陣列公式,在大量儲存格使 ...
chin15 發表於 2011-10-17 08:29



    請問如需要在大量儲備格中使用,應使用何種公式?20000 列的資料!
作者: oobird    時間: 2011-10-17 14:04

這樣的話還[attach]8255[/attach]是建議用VBA吧。
作者: kan109    時間: 2011-10-17 19:55

這樣的話還是建議用VBA吧。
oobird 發表於 2011-10-17 14:04



    Sub test()
    Set d = CreateObject("Scripting.Dictionary")
    rng = Sheet2.UsedRange
    For i = 1 To UBound(rng)
        For j = 1 To UBound(rng, 2)
            If rng(i, j) <> "" Then
                If Not d.exists(rng(i, j)) Then
                    d(rng(i, j)) = i
                End If
            End If
        Next
    Next
    With Sheet1
        For i = 1 To .[a65536].End(3).Row
            If d("" & .Cells(i, 1)) <> "" Then
                .Cells(i, 2).Resize(, 7) = Sheet2.Cells(d("" & .Cells(i, 1)), 2).Resize(, 7).Value
            End If
        Next
    End With
End Sub

請問可以向小弟解釋一下嗎??
作者: oobird    時間: 2011-10-17 21:01

http://forum.twbts.com/thread-20-1-1.html參考這一篇說明




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)