Nhờ hỗ trợ cách tự động điền giá cho các mặt hàng giống nhau! (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

tranthanhkh

Thành viên mới
Tham gia
3/9/15
Bài viết
4
Được thích
0
Dear All!
Mình có một vấn đề cần nhờ các bạn trong diễn đàn giúp đỡ
Có 2 TH:
TH1: Mình có danh sách excel dài gồm 2 cột "Tên mặt hàng" và "Đơn Giá": Mình muốn điền đơn giá cho một mặt hàng, thì các mặt hàng trùng tên ở dưới sẽ tự động được điền giá để mình khỏi nhập lại.
TH2: Cũng tương tự nhưng là trên 2 file excel khác nhau: Mình điền đơn giá cho file này file bên kia tự nhảy
Kính mong các bạn giúp đỡ
 
Bạn nên có file đính kèm để anh chị hỗ trợ nhanh cho bạn
 
Vậy bạn xây dựng cho mỗi mã 1 bảng giá.Rồi dùng hàm VLookup chuyển nó sang là được.
 
Dear All!
Mình có một vấn đề cần nhờ các bạn trong diễn đàn giúp đỡ
Có 2 TH:
TH1: Mình có danh sách excel dài gồm 2 cột "Tên mặt hàng" và "Đơn Giá": Mình muốn điền đơn giá cho một mặt hàng, thì các mặt hàng trùng tên ở dưới sẽ tự động được điền giá để mình khỏi nhập lại.
TH2: Cũng tương tự nhưng là trên 2 file excel khác nhau: Mình điền đơn giá cho file này file bên kia tự nhảy
Kính mong các bạn giúp đỡ
Góp ý cho bạn:
1/ Nên sử dụng TH1.
2/ Làm danh mục trong 1 sheet rồi tra, nếu làm danh mục trong 1 File khác và tra sau khi di chuyển File đi nơi khác thì tèo.
 
Trong file của mình dài đến 2000-3000 mục lận. Lặp lại chỉ 3-4 lần 1 đầu mục ở một vị trí nào đó thôi. Nên mình muốn như TH1. Nhập 1 cái VD: Cái áo giá 25000 thế là những cái dưới cái nào có cái áo là nó tự thêm 25000 thôi
 
Trong file của mình dài đến 2000-3000 mục lận. Lặp lại chỉ 3-4 lần 1 đầu mục ở một vị trí nào đó thôi. Nên mình muốn như TH1. Nhập 1 cái VD: Cái áo giá 25000 thế là những cái dưới cái nào có cái áo là nó tự thêm 25000 thôi
Thì bạn gửi cái file excel mẫu đính kèm lên đây để làm nhanh cho bạn
 
Dear All!
TH1: Mình có danh sách excel dài gồm 2 cột "Tên mặt hàng" và "Đơn Giá": Mình muốn điền đơn giá cho một mặt hàng, thì các mặt hàng trùng tên ở dưới sẽ tự động được điền giá để mình khỏi nhập lại.
Bạn đang thiếu 1 cột quan trọng; Đó là mã mặt hàng;
Không nên làm việc với tên mặt hàng, mà là 'Mã MH'
 
Mình ko gửi file mẫu đc bạn. Vì nó liên quan bảo mật của cty. Với lại bạn có thể viết hướng dẫn luôn ko. Để mọi người cùng học hỏi
Cái này khó gì.Tạo file mâu tương tự là được.?????????.Người ta giúp bạn viết cả công thức mà bạn tạo file ví dụ cũng không làm được.
 
Mình ko gửi file mẫu đc bạn. Vì nó liên quan bảo mật của cty. Với lại bạn có thể viết hướng dẫn luôn ko. Để mọi người cùng học hỏi
Bạn không gửi file thi mình làm mẫu như file bạn tự kiểm tra nhé
Mã:
'Trong Module'
Public Chk As Boolean, Dic As Object, aResult()
Sub Vlookup_DATA_SP()
Dim wks As Worksheet, SrcRng As Range, sArray
  Dim LR As Long, i As Long, n As Long, tmp
  On Error Resume Next
  Set wks = Sheets("DATA_SP")
  Set SrcRng = wks.Range("A2:B60000")
  sArray = SrcRng.Value
  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
        aResult(LR, 1) = tmp
        aResult(LR, 2) = sArray(i, 2) 'Gia
      End If
    End If
  Next
End Sub

'Trong Sheet Checkgia'
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, tmp
Dim result()
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    Set change = Intersect(Range("A2:A600000"), Target)
    If Not change Is Nothing Then
        If Dic Is Nothing Then Vlookup_DATA_SP
        result = change.Resize(change.Rows.Count + 1).Value
        ReDim Preserve result(1 To UBound(result), 1 To 2)
        For i = 1 To UBound(result) - 1
            If Len(result(i, 1)) Then
                tmp = result(i, 1)
                If Dic.exists(tmp) Then
                    result(i, 1) = aResult(Dic.Item(tmp), 2)
                Else
                    result(i, 1) = "Chua co gia"
                End If
            End If
        Next i
        change.Offset(0, 1).Resize(, 1).Value = result
    End If
 If Not change Is Nothing Then
  End If
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
 

File đính kèm

Bạn không gửi file thi mình làm mẫu như file bạn tự kiểm tra nhé
Mã:
'Trong Module'
Public Chk As Boolean, Dic As Object, aResult()
Sub Vlookup_DATA_SP()
Dim wks As Worksheet, SrcRng As Range, sArray
  Dim LR As Long, i As Long, n As Long, tmp
  On Error Resume Next
  Set wks = Sheets("DATA_SP")
  Set SrcRng = wks.Range("A2:B60000")
  sArray = SrcRng.Value
  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
        aResult(LR, 1) = tmp
        aResult(LR, 2) = sArray(i, 2) 'Gia
      End If
    End If
  Next
End Sub

'Trong Sheet Checkgia'
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, tmp
Dim result()
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    Set change = Intersect(Range("A2:A600000"), Target)
    If Not change Is Nothing Then
        If Dic Is Nothing Then Vlookup_DATA_SP
        result = change.Resize(change.Rows.Count + 1).Value
        ReDim Preserve result(1 To UBound(result), 1 To 2)
        For i = 1 To UBound(result) - 1
            If Len(result(i, 1)) Then
                tmp = result(i, 1)
                If Dic.exists(tmp) Then
                    result(i, 1) = aResult(Dic.Item(tmp), 2)
                Else
                    result(i, 1) = "Chua co gia"
                End If
            End If
        Next i
        change.Offset(0, 1).Resize(, 1).Value = result
    End If
If Not change Is Nothing Then
  End If
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
Cái này dùng Vlookup cho nhanh.Mà sao bạn không lưu giá luôn vào item của Dic lại phải lưu vào cái mảng cho tốn bộ nhớ.:D.
 
Cái này dùng Vlookup cho nhanh.Mà sao bạn không lưu giá luôn vào item của Dic lại phải lưu vào cái mảng cho tốn bộ nhớ.:D.
Vì không biết file dữ liệu của bạn ấy như thế nào, nếu về sau dữ liệu DATA không phải chỉ quần hay áo mà có thể nhiều hơn thì áp dụng về sau luôn.
 
Web KT

Bài viết mới nhất

Back
Top Bottom