Board logo

標題: EXCEL VBS [打印本頁]

作者: kyhuang    時間: 2013-2-26 22:13     標題: EXCEL VBS

各位前輩好:

該問題苦思已久,敬請幫忙,謝啦!!

以C1檔名(不包括副檔名)尋找A1,如有相符以B1取代並顯示於D1
如找不到標註X.詳如附件樣本.

先謝啦 !!

[attach]14256[/attach]
作者: lukychien    時間: 2013-2-27 01:44

回復 1# kyhuang

請試看看這樣行嗎
雖然結果是對的,但總覺得好像那裡怪怪的?

D1=IFERROR(CONCATENATE(VLOOKUP(LEFT(C1,8),A:B,2,0),IF(ISNUMBER(FIND("-",C1)),IF(FIND("-",C1),MID(C1,FIND("-",C1),2),""),""),".jpg"),"X")
作者: kyhuang    時間: 2013-2-28 10:58

回復 2# lukychien


    感謝,好像不行.是將該行資料貼到D1嗎?出現"#NAME?"
作者: lukychien    時間: 2013-2-28 23:58

回復 3# kyhuang


問題應該是出在Office 2003看不懂部份2007用的公式吧!!  (如, IFERROR)

請再試一下,並告知是否可行

D1=IF(ISERROR(VLOOKUP(LEFT(C1,8),A:B,2,0)),"X",CONCATENATE(VLOOKUP(LEFT(C1,8),A:B,2,0),IF(ISNUMBER(FIND("-",C1)),IF(FIND("-",C1),MID(C1,FIND("-",C1),2),""),""),".jpg"))
作者: Hsieh    時間: 2013-3-1 00:30

本帖最後由 Hsieh 於 2013-3-1 00:35 編輯

回復 1# kyhuang
  1. Sub ex()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. For Each a In Range([A1], [A1].End(xlDown))
  4.    d(a.Value) = a.Offset(, 1)
  5. Next
  6. For Each a In Range([C1], [C1].End(xlDown))
  7.    If d(Left(a, 8)) = "" Then
  8.    a.Offset(, 1) = "X"
  9.    Else
  10.    a.Offset(, 1) = Replace(a, Left(a, 8), d(Left(a, 8)))
  11.    End If
  12. Next
  13. End Sub
複製代碼
如果使用函數
D1公式
=IF(COUNTIF(A:A,LEFT(C1,8))=0,"X",SUBSTITUTE(C1,LEFT(C1,8),VLOOKUP(LEFT(C1,8),$A$1:$B$11,2,0)))
向下複製
作者: kyhuang    時間: 2013-3-1 17:31

回復 2# lukychien


    感謝兄台成功了,僅少部分可能多一碼轉不過來

008ACH009  2120  008ACH009-1.JPG  X
正確結果應為
008ACH009  2120  008ACH009-1.JPG  2120-1.JPG




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