返回列表 上一主題 發帖

MID.VLOOKUP的VBA怎麼寫

MID.VLOOKUP的VBA怎麼寫

詢求大大幫我解答
請吻我應該如何用VBA寫
因為用VLOOKUP資料越多跑月慢
MID我又不知道應加在哪

詢問.rar (16.29 KB)

回復 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
複製代碼

TOP

owen06大
範例可以用.但套用到我的表格
我還是搞不懂
我重新夾夾帶檔
請再幫我解答
因為我前面加了F就不能動了

詢問.rar (14.7 KB)

TOP

回復 3# sheau-lan


    你確定是抓前三碼嗎?那這樣一堆F20的,系統怎麼可能比的出來?

TOP

如果不加F都可以用阿
可是加了F就不能用了
我是不是要改哪裡

TOP

回復 5# sheau-lan


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

TOP

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

TOP

本帖最後由 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
複製代碼

TOP

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

TOP

        靜思自在 : 【為善競爭】人生要為善競爭,分秒必爭。
返回列表 上一主題