Xin viết dùng mã vba thay thế cho hàm vlookup

Liên hệ QC
bác cho em hỏi! em muốn bỏ phần tự chạy công thức ở cột AC; AD; AF để nó chạy như code cũ cửa em. em có xóa đoạn code này đi thì nó lại không chạy được NVL luôn.
"
kTarget.Offset(, -1).Resize(, 15).Value = arr1
kTarget.Offset(, 3).FormulaR1C1 = "=(RC[-7]/1000*RC[-8]/1000)/RC[-5]"
kTarget.Offset(, 4).FormulaR1C1 = "=RC[-1]*RC[-13]"
kTarget.Offset(, 6).FormulaR1C1 = "=RC[-15]/RC[-8]/((INT(RC[1]/RC[-11])*INT(RC[2]/RC[-10])))"
' kTarget.Offset(, 10).FormulaR1C1 = "=(RC[-5]+RC[-5]*RC[-1])*RC[1]"' DUA VAO CODE CHAY SAI--> CHÂM "
Bạn xóa bỏ đoạn code đó như thế nào; nếu xóa hoàn toàn như đoạn ở trên thì bạn đã xóa mất đoạn code để nó ghi lại kết quả; các dòng có ....FormulaR1C1="=.... là dòng code điền công thức.
dòng code dưới đây là dòng ghi lại kết quả lên sheet (bạn không được xóa bỏ dòng này-dòng tô đậm).
kTarget.Offset(, -1).Resize(, 15).Value = arr1

Có điều khi xóa các dòng tự điền công thức thì cứ mỗi khi bạn thêm dữ liệu lại phải sao chép công thức xuống các ô thôi.
Chúc thành công.
 
Em muốn biết cách thay đổi code ở đâu luôn ấy ạ, ví dụ như file này em muốn lấy 2 cột là người phụ trách và số đt người phụ trạch. Vì em muốn biết để custom vào những file sau luôn
macro sau sẽ hiện kết quả 3 cột (thêm cột đầu) ở trang 'ChiTiet':

PHP:
Sub Auto_Open()
  Dim Wks As Worksheet, SrcRng As Range, sArray
  Dim lR As Long, I As Long, J As Long, Num As Long, Tmp
'  On Error Resume Next '
  Set Wks = Sheets("LLNV")
  lR = Wks.[B6].CurrentRegion.Rows.Count    '+  +       '
  Set SrcRng = Wks.Range("B6:R" & lR)       '*  *       '
  sArray = SrcRng.Value:                    lR = 0      ''
  ReDim aResult(1 To UBound(sArray, 1), 1 To UBound(sArray, 2))
  Set Dic = CreateObject("Scripting.Dictionary")
  For I = 1 To UBound(sArray, 1)
    If CStr(sArray(I, 1)) <> "" Then
      Tmp = sArray(I, 1)
      If Not Dic.Exists(Tmp) Then
        lR = lR + 1
        Dic.Add Tmp, lR
        For J = 1 To UBound(sArray, 2) Step 2     '17 '
            Num = Num + 1
            aResult(lR, Num) = sArray(I, J)
        Next
        Num = 0
      End If
    End If
  Next
  Sheets("Chitiet").[C6].Resize(lR, 3).Value = aResult()
End Sub
 
Bạn xóa bỏ đoạn code đó như thế nào; nếu xóa hoàn toàn như đoạn ở trên thì bạn đã xóa mất đoạn code để nó ghi lại kết quả; các dòng có ....FormulaR1C1="=.... là dòng code điền công thức.
dòng code dưới đây là dòng ghi lại kết quả lên sheet (bạn không được xóa bỏ dòng này-dòng tô đậm).
kTarget.Offset(, -1).Resize(, 15).Value = arr1

Có điều khi xóa các dòng tự điền công thức thì cứ mỗi khi bạn thêm dữ liệu lại phải sao chép công thức xuống các ô thôi.
Chúc thành công.
em có xóa bỏ được công thức. nhưng có vấn đề là khi kéo hoặc paste nhiều mã NVL ở cột Z thì nó chỉ chạy có đúng 1 dòng trên , cú phải nhấp vào rồi enter từng cái 1 mới chạy code không được như cột mã sản phẩm ở cột A. và khi thay đổi j đó ở Sh ma NVL thì nó không auto thay đổi ở Sh bang MASTER. lại phải kích vào enter mới cập nhật. làm sao để nó hoạt động auto như phần nhập mã sản phẩm ạ. Bác xem giúp em với!
 

File đính kèm

  • Dinh Muc NVL 30-7.xlsm
    256.1 KB · Đọc: 21
Web KT
Back
Top Bottom