Board logo

標題: MID.VLOOKUP的VBA怎麼寫 [打印本頁]

作者: sheau-lan    時間: 2014-12-22 14:00     標題: MID.VLOOKUP的VBA怎麼寫

詢求大大幫我解答
請吻我應該如何用VBA寫
因為用VLOOKUP資料越多跑月慢
MID我又不知道應加在哪
作者: owen06    時間: 2014-12-22 19:36

回復 1# sheau-lan


    試試看呢
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. On Error GoTo 99
  3. With Target
  4.    If .Row >= 3 And .Column = 2 And .Offset(-1, 0) <> "" Then
  5.             If .Value = "" Then
  6.               .Offset(0, -1) = ""
  7.               .Offset(0, 1) = ""
  8.             End If
  9.       code = Left(.Value, 3) * 1
  10.       num = .Offset(-1, -1)
  11.       If .Address = [b3].Address Then
  12.          .Offset(0, -1) = "0001"
  13.          .Offset(0, 1) = Application.VLookup(code, Sheet2.[a1:b65536], 2, False)
  14.       Else:
  15.          .Offset(0, -1) = Application.Text(num + 1, "0000")
  16.          .Offset(0, 1) = Application.VLookup(code, Sheet2.[a1:b65536], 2, False)
  17.       End If
  18.    End If
  19. End With
  20. 99
  21. End Sub
複製代碼

作者: sheau-lan    時間: 2014-12-23 08:30

owen06大
範例可以用.但套用到我的表格
我還是搞不懂
我重新夾夾帶檔
請再幫我解答
因為我前面加了F就不能動了
作者: owen06    時間: 2014-12-23 10:30

回復 3# sheau-lan


    你確定是抓前三碼嗎?那這樣一堆F20的,系統怎麼可能比的出來?
作者: sheau-lan    時間: 2014-12-23 10:56

如果不加F都可以用阿
可是加了F就不能用了
我是不是要改哪裡
作者: owen06    時間: 2014-12-23 11:01

回復 5# sheau-lan


    我的意思是,不論有沒有F,你如果只抓前三碼,會變成F20,那在客戶代號那邊比對的時候,就會有三個資料都是F20開頭的了,
    這樣系統會抓不出正確資料,何不乾脆抓6碼,才能完整的跟客戶代號那邊的資料完全符合。
作者: sheau-lan    時間: 2014-12-23 11:05

哪如果要改6碼我應該怎麼做呢
我有嘗試做修改但都不能動
code = Left(.Value, 3) * 1
是這一段要修改嗎?可否請大大幫我解答
謝謝
作者: owen06    時間: 2014-12-23 11:15

本帖最後由 owen06 於 2014-12-23 11:20 編輯

回復 7# sheau-lan

    補充一下,你用LEFT、MID、RIGHT去抓出特定字串後,雖然你看到的樣貌是數字,但他的本質其實是文字,這樣你vlookup是比不出來的,所以你還要再把他*1,他的 本質才會改變為數值,而你的檔案前面有個F,他就是文字格式,因此不需要再用*1。
    改這樣你試看看
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. On Error GoTo 99
  3. With Target
  4.     code = Left(.Value, 6)
  5.     num = .Offset(-1, -1)
  6.       If .Row >= 3 And .Column = 2 And .Offset(-1, 0) <> "" Then
  7.             If .Value = "" Then
  8.               .Offset(0, -1) = ""
  9.               .Offset(0, 5) = ""
  10.             ElseIf .Address = [b3].Address Then
  11.               .Offset(0, -1) = "0001"
  12.               .Offset(0, 5) = Application.VLookup(code, Sheet2.[a1:b65536], 2, False)
  13.             Else:
  14.               .Offset(0, -1) = Application.Text(num + 1, "0000")
  15.               .Offset(0, 5) = Application.VLookup(code, Sheet2.[a1:b65536], 2, False)
  16.             End If
  17.      End If
  18. End With
  19. 99
  20. End Sub
複製代碼

作者: sheau-lan    時間: 2014-12-23 11:16

好的...我在試看看
謝謝你了




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