Điền đơn giá phụ thuộc vào ngày hiệu lực sử dụng VBA (1 người xem)

Liên hệ QC

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

Tham gia
17/9/12
Bài viết
1,354
Được thích
1,598
Giới tính
Nữ
Em có 1 file như đính kèm mong các thầy và ACE giúp em điền đơn giá theo ngày hiệu lực của đơn giá bên sheet Don gia với ạ. Vì cả 2 file này e đều lấy từ nguồn khác và DL tổng của nó khoảng 30.000 dòng nên sử dụng hàm mảng e chờ mãi nó chả chạy xong :( nên e hi vọng các thầy và ACE giúp đỡ em hoàn thành file này hoặc cho em 1 hướng giải quyết chứ hiện tại em chưa nghĩ nào đc cách nào hiệu quả. Em xin chân thành cảm ơn ạ.
 

File đính kèm

Em có 1 file như đính kèm mong các thầy và ACE giúp em điền đơn giá theo ngày hiệu lực của đơn giá bên sheet Don gia với ạ. Vì cả 2 file này e đều lấy từ nguồn khác và DL tổng của nó khoảng 30.000 dòng nên sử dụng hàm mảng e chờ mãi nó chả chạy xong :( nên e hi vọng các thầy và ACE giúp đỡ em hoàn thành file này hoặc cho em 1 hướng giải quyết chứ hiện tại em chưa nghĩ nào đc cách nào hiệu quả. Em xin chân thành cảm ơn ạ.
Lại mắc cái tội diễn đạt không chi tiết...
Yêu cầu: Lấy "Giá bán" ở sheet "Don gia" điền vào cột E ở sheet "Ban hang"
Điều kiện:
Căn cứ vào Mã hàng, Nhóm khách, Ngày lập >= ngày hiệu lực là được còn thích lấy cái nào thì lấy??? --=0 --=0
 
Upvote 0
Lại mắc cái tội diễn đạt không chi tiết...
Yêu cầu: Lấy "Giá bán" ở sheet "Don gia" điền vào cột E ở sheet "Ban hang"
Điều kiện:
Căn cứ vào Mã hàng, Nhóm khách, Ngày lập >= ngày hiệu lực là được còn thích lấy cái nào thì lấy??? --=0 --=0
Ngắn gọn và xúc tích ạ. Đi đúng trọng tâm luôn anh ạ. :) Vụ này e nợ anh một cốc nhé (cốc gì cũng đc ạ) khi nào có dịp ra HN off em sẽ trả ạ :)
Chúc anh Befaint và cả nhà ngủ ngon ạ
 
Upvote 0
Em có 1 file như đính kèm mong các thầy và ACE giúp em điền đơn giá theo ngày hiệu lực của đơn giá bên sheet Don gia với ạ. Vì cả 2 file này e đều lấy từ nguồn khác và DL tổng của nó khoảng 30.000 dòng nên sử dụng hàm mảng e chờ mãi nó chả chạy xong :( nên e hi vọng các thầy và ACE giúp đỡ em hoàn thành file này hoặc cho em 1 hướng giải quyết chứ hiện tại em chưa nghĩ nào đc cách nào hiệu quả. Em xin chân thành cảm ơn ạ.

Tôi nghĩ cái này phải có hóa đơn bán hàng hay gì gì nữa chứ.

Sheet Don gia so với sheet Ban hang nội dung chưa được logic, nghĩa là bán hàng thì phải có số hóa đơn, tên người mua hàng, ngày bán...v..v....

Nói chung diễn giải chưa được rõ ràng, tiêu đề lại chưa đầy đủ nội dung.
 
Upvote 0
Ngắn gọn và xúc tích ạ. Đi đúng trọng tâm luôn anh ạ. :) Vụ này e nợ anh một cốc nhé (cốc gì cũng đc ạ) khi nào có dịp ra HN off em sẽ trả ạ :)
Chúc anh Befaint và cả nhà ngủ ngon ạ

Còn chưa xong sao đã bắt đi ngủ rồi --=0
Mã:
Sub giaban()
Dim DG(), Ngay, Nhom As String, Ma As String, cll As Range, i As Long, r As Long
For r = 1 To Sheet2.Range("B100000").End(xlUp).Row
    Set cll = Sheet2.Range("B2").Offset(r - 1)
    Ma = cll.Value
    Nhom = cll.Offset(0, 1).Value
    Ngay = CLng(cll.Offset(0, -1).Value)
    DG = Sheet1.Range("A2:D" & Sheet1.Range("B100000").End(xlUp).Row).Value
    For i = 1 To UBound(DG, 1)
        If Ma = DG(i, 1) And Nhom = DG(i, 4) And Ngay >= CLng(DG(i, 2)) Then
            cll.Offset(0, 3).Value = DG(i, 3) * 1000
        End If
    Next i
Next r
End Sub
khi nào có dịp ra HN off em sẽ trả ạ
Thiếu chủ thể, ai ai ai ra HN?
p/s: Nhân tiện nói cái vụ trả lời nhanh. Không chơi trò dùng thẻ
nhé.
Một là click cái đó xong thì sửa QUOTE thành CODE
Hai là gõ cái đó vào
Mã:
 hoặc [PHP]
 
Upvote 0
Tôi nghĩ cái này phải có hóa đơn bán hàng hay gì gì nữa chứ.

Sheet Don gia so với sheet Ban hang nội dung chưa được logic, nghĩa là bán hàng thì phải có số hóa đơn, tên người mua hàng, ngày bán...v..v....

Nói chung diễn giải chưa được rõ ràng, tiêu đề lại chưa đầy đủ nội dung.
Ngày bán thì có rồi ạ. Tên người bán thì đã được quy theo nhóm 1,2,3 rồi ạ. Vì nội dung nhiều dòng nhiều cột quá cháu lại sợ rối nên cho những thông tin cần thiết lên file giả định thôi ạ. Với máy tính ở nhà cháu vẫn còn chờ cho công thức mảng nó chạy xong nhưng máy ở công ty cháu thì chạy k xong là báo not responding ngay ạ.
Anh Befaint có chỉnh cho cháu
Yêu cầu: Lấy "Giá bán" ở sheet "Don gia" điền vào cột E ở sheet "Ban hang"
Điều kiện:
Căn cứ vào Mã hàng, Nhóm khách, Ngày lập >= ngày hiệu lực lấy đơn giá phù hợp
Cháu cảm ơn c đã quan tâm đề tài này ạ. Chúc c ngủ ngon ạ :)
 
Upvote 0
Còn chưa xong sao đã bắt đi ngủ rồi --=0
Mã:
Sub giaban()
Dim DG(), Ngay, Nhom As String, Ma As String, cll As Range, i As Long, r As Long
For r = 1 To Sheet2.Range("B100000").End(xlUp).Row
    Set cll = Sheet2.Range("B2").Offset(r - 1)
    Ma = cll.Value
    Nhom = cll.Offset(0, 1).Value
    Ngay = CLng(cll.Offset(0, -1).Value)
    DG = Sheet1.Range("A2:D" & Sheet1.Range("B100000").End(xlUp).Row).Value
    For i = 1 To UBound(DG, 1)
        If Ma = DG(i, 1) And Nhom = DG(i, 4) And Ngay >= CLng(DG(i, 2)) Then
            cll.Offset(0, 3).Value = DG(i, 3) * 1000
        End If
    Next i
Next r
End Sub

Thiếu chủ thể, ai ai ai ra HN?
p/s: Nhân tiện nói cái vụ trả lời nhanh. Không chơi trò dùng thẻ
nhé.
Một là click cái đó xong thì sửa QUOTE thành CODE
Hai là gõ cái đó vào
Mã:
 hoặc [PHP][/quote]
chủ thể là anh befaint ạ. E vẫn đang ngắm công thức của em chạy :((((. Cảm ơn anh nhiều ạ. :)
 
Upvote 0
Còn chưa xong sao đã bắt đi ngủ rồi --=0
Mã:
Sub giaban()
Dim DG(), Ngay, Nhom As String, Ma As String, cll As Range, i As Long, r As Long
For r = 1 To Sheet2.Range("B100000").End(xlUp).Row
    Set cll = Sheet2.Range("B2").Offset(r - 1)
    Ma = cll.Value
    Nhom = cll.Offset(0, 1).Value
    Ngay = CLng(cll.Offset(0, -1).Value)
    DG = Sheet1.Range("A2:D" & Sheet1.Range("B100000").End(xlUp).Row).Value
    For i = 1 To UBound(DG, 1)
        If Ma = DG(i, 1) And Nhom = DG(i, 4) And Ngay >= CLng(DG(i, 2)) Then
            cll.Offset(0, 3).Value = DG(i, 3) * 1000
        End If
    Next i
Next r
End Sub

Thiếu chủ thể, ai ai ai ra HN?
p/s: Nhân tiện nói cái vụ trả lời nhanh. Không chơi trò dùng thẻ QUOTE nhé.
Một là click cái đó xong thì sửa QUOTE thành CODE
Hai là gõ cái đó vào
Mã:
 hoặc [PHP][/QUOTE]
e sửa xong nó sai tùm lum rồi ạ. em sẽ sửa từ từ ạ. E nhìn code mà vẫn chưa hiểu hết, mai tỉnh táo e ngâm cứu tiếp ạ. còn kết quả trên file giả định thì tuyệt rồi ạ. Cảm ơn anh
 
Upvote 0
Em có 1 file như đính kèm mong các thầy và ACE giúp em điền đơn giá theo ngày hiệu lực của đơn giá bên sheet Don gia với ạ. Vì cả 2 file này e đều lấy từ nguồn khác và DL tổng của nó khoảng 30.000 dòng nên sử dụng hàm mảng e chờ mãi nó chả chạy xong :( nên e hi vọng các thầy và ACE giúp đỡ em hoàn thành file này hoặc cho em 1 hướng giải quyết chứ hiện tại em chưa nghĩ nào đc cách nào hiệu quả. Em xin chân thành cảm ơn ạ.
Dùng công thức nầy chạy khá nhanh
Mã:
E2 =LOOKUP(2,1/(OFFSET('Don gia'!$D$1,MATCH('Ban hang'!B2,'Don gia'!$A$2:$A$1399,0),,COUNTIF('Don gia'!$A$2:$A$1399,'Ban hang'!B2))=C2)/(OFFSET('Don gia'!$A$1,MATCH('Ban hang'!B2,'Don gia'!$A$2:$A$1399,0),,COUNTIF('Don gia'!$A$2:$A$1399,'Ban hang'!$B2))=B2)/(OFFSET('Don gia'!$B$1,MATCH('Ban hang'!B2,'Don gia'!$A$2:$A$1399,0),,COUNTIF('Don gia'!$A$2:$A$1399,'Ban hang'!B2))<=A2),OFFSET('Don gia'!$C$1,MATCH('Ban hang'!B2,'Don gia'!$A$2:$A$1399,0),,COUNTIF('Don gia'!$A$2:$A$1399,'Ban hang'!B2)))*1000
VBA, thì dùng Dictionary
Mã:
Sub GPE()
Dim d As Object, Darr, Sarr, Arr()
Set d = CreateObject("Scripting.Dictionary")
Darr = Sheets("Don gia").Range("A2:D" & Sheets("Don gia").Range("A2").End(xlDown).Row)
Sarr = Sheets("Ban hang").Range("A2:C" & Sheets("Ban hang").Range("A2").End(xlDown).Row)
ReDim Arr(1 To UBound(Sarr), 1 To 1)
For i = 1 To UBound(Darr)
    If Not d.exists(Darr(i, 1) & " " & Darr(i, 4)) Then d.Add Darr(i, 1) & " " & Darr(i, 4), i
Next i
For i = 1 To UBound(Sarr)
    n = d.Item(Sarr(i, 2) & " " & Sarr(i, 3))
    For j = n To UBound(Darr)
        If Sarr(i, 2) = Darr(j, 1) And Sarr(i, 3) = Darr(j, 4) And Sarr(i, 1) >= Darr(j, 2) Then
            Arr(i, 1) = Darr(j, 3) * 1000: Exit For
        End If
    Next j
Next i
Set c = Nothing
Sheets("Ban hang").Range("E2").Resize(UBound(Sarr)) = Arr
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom