Nhờ code tính tổng các mặt hàng có cùng giá (1 người xem)

  • Thread starter Thread starter gavba
  • Ngày gửi Ngày gửi
Liên hệ QC

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

gavba

Thành viên mới
Tham gia
18/10/12
Bài viết
4
Được thích
0
Nhờ các bác giúp em đoạn code làm cái file giúp em cái

Yêu cầu:
-nếu tên Model giống nhau và đơn giá bằng nhau thì sẽ gộp lại, tức là giữ nguyên tên model, giữ nguyên đơn giá, cộng tổng số lượng, cộng lại thành tiền cho vào thành một dòng
- Nếu cùng tên model nhưng khác giá thì vẫn giữ nguyên ko thay đổi gì
- Làm tiếp cho các Model khác cho đến khi gặp ô trống

chi tiết hơn trong file đính kèm,

Các bác giúp em cái nha,
Cảm ơn nhiều.
 

File đính kèm

Nhờ các bác giúp em đoạn code làm cái file giúp em cái

Yêu cầu:
-nếu tên Model giống nhau và đơn giá bằng nhau thì sẽ gộp lại, tức là giữ nguyên tên model, giữ nguyên đơn giá, cộng tổng số lượng, cộng lại thành tiền cho vào thành một dòng
- Nếu cùng tên model nhưng khác giá thì vẫn giữ nguyên ko thay đổi gì
- Làm tiếp cho các Model khác cho đến khi gặp ô trống

chi tiết hơn trong file đính kèm,

Các bác giúp em cái nha,
Cảm ơn nhiều.
Bạn thử code này xem coi trúng không nhé
Mã:
Sub tong()
Dim d As Object, dl(), i As Long, k As Long, kq(), tam As Variant
Set d = CreateObject("scripting.dictionary")
With Sheets("sheet1")
    dl = .Range(.[d14], .[h65536].End(3)).Value
End With
ReDim kq(1 To UBound(dl), 1 To 5)
For i = 1 To UBound(dl)
    tam = dl(i, 1) & dl(i, 4)
    If Not d.exists(tam) Then
        k = k + 1
        d.Add tam, k
        kq(k, 1) = k
        kq(k, 2) = dl(i, 1)
        kq(k, 3) = kq(k, 3) + dl(i, 2)
        kq(k, 4) = dl(i, 4)
        kq(k, 5) = kq(k, 5) + dl(i, 5)
    Else
        kq(d.Item(tam), 3) = kq(d.Item(tam), 3) + dl(i, 2)
        kq(d.Item(tam), 5) = kq(d.Item(tam), 5) + dl(i, 5)
    End If
Next
Sheets("sheet1").[j14:n10000].ClearContents
If k Then Sheets("sheet1").[j14].Resize(k, 5) = kq
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử code này xem coi trúng không nhé
Mã:
Sub tong()
Dim d As Object, dl(), i, k, kq(1 To 10000, 1 To 5), tam
Set d = CreateObject("scripting.dictionary")
With Sheets("sheet1")
    dl = .Range(.[d14], .[h65536].End(3)).Value
End With
For i = 1 To UBound(dl)
    tam = dl(i, 1) & dl(i, 4)
    If Not d.exists(tam) Then
        k = k + 1
        d.Add tam, k
        kq(k, 1) = k
        kq(k, 2) = dl(i, 1)
        kq(k, 3) = kq(k, 3) + dl(i, 2)
        kq(k, 4) = dl(i, 4)
        kq(k, 5) = kq(k, 5) + dl(i, 5)
    Else
        kq(d.Item(tam), 3) = kq(d.Item(tam), 3) + dl(i, 2)
        kq(d.Item(tam), 5) = kq(d.Item(tam), 5) + dl(i, 5)
    End If
Next
Sheets("sheet1").[j14:n10000].ClearContents
If k Then Sheets("sheet1").[j14].Resize(k, 5) = kq
End Sub
Bài này chắc chắn k > 0, không cần bẫy lỗi
If k Then Sheets("sheet1").[j14].Resize(k, 5) = kq
Híc
 
Upvote 0
Cảm ơn các bác nhiều,code làm việc tốt, chưa cảm ơn được thật là tiếc quá,- sự giúp đỡ của các bác giúp em rất nhiều trong công việc, diễn đàn có các bác thật là tốt.

Tiện thể để giúp em hiểu hơn nhờ các anh giải thích code giùm em tí được ko, code ngắn gọn nhưng em ko hiểu nó hoạt động như thế nào, cái đoạn code nào kiểm tra đơn giá bằng nhau?

-bình thường em làm thì em nghĩ code kiểm tra hai dòng liền kề nhau nếu có cùng giá thì cộng lại nhưng nếu nó cách dòng nhau thì ko biết kiểm tra kiểu gì nếu một model có đơn giá bằng nhau ở

Tóm lại là em thắc mắc ở đoạn nếu một model có cùng đơn giá nhưng nằm cách dòng nhau ko liền kề thì thuật toán để kiểm tra như thế nào, cái code trên em chưa hiểu... gà quá mà --=0
cảm ơn nhiều.
 
Upvote 0
Cảm ơn các bác nhiều,code làm việc tốt, chưa cảm ơn được thật là tiếc quá,- sự giúp đỡ của các bác giúp em rất nhiều trong công việc, diễn đàn có các bác thật là tốt.

Tiện thể để giúp em hiểu hơn nhờ các anh giải thích code giùm em tí được ko, code ngắn gọn nhưng em ko hiểu nó hoạt động như thế nào, cái đoạn code nào kiểm tra đơn giá bằng nhau?

-bình thường em làm thì em nghĩ code kiểm tra hai dòng liền kề nhau nếu có cùng giá thì cộng lại nhưng nếu nó cách dòng nhau thì ko biết kiểm tra kiểu gì nếu một model có đơn giá bằng nhau ở

Tóm lại là em thắc mắc ở đoạn nếu một model có cùng đơn giá nhưng nằm cách dòng nhau ko liền kề thì thuật toán để kiểm tra như thế nào, cái code trên em chưa hiểu... gà quá mà --=0
cảm ơn nhiều.

Code mình viết phía trên chỉ là múa rìu qua mắt thợ thôi. Muốn hiểu thì chỉ cần bỏ ra 3 ngày ngâm cứu là hiểu thôi. Đọc tất cả mọi thứ trên diễn đàn nhé.
 
Upvote 0
Code mình viết phía trên chỉ là múa rìu qua mắt thợ thôi. Muốn hiểu thì chỉ cần bỏ ra 3 ngày ngâm cứu là hiểu thôi. Đọc tất cả mọi thứ trên diễn đàn nhé.

Hic hic bác giải thích cho em một tí là giúp em tiết kiệm được những 3 ngày đó, em mới học nên chưa hiểu,
bác là thầy giải thích giùm em tí đi...
 
Upvote 0
Hic hic bác giải thích cho em một tí là giúp em tiết kiệm được những 3 ngày đó, em mới học nên chưa hiểu,
bác là thầy giải thích giùm em tí đi...
Hic mình chỉ biết viết như thế còn giải thích thì mình chịu thua. Bạn muốn hiểu về VBA thì chịu khó tìm những bài căn bản mà đọc, rồi từng bước khám phá và chinh phục. Code trên tuy không khó nhưng phải có cơ bản mới hiểu được.
Đoạn này kiểm tra đơn giá nè


tam = dl(i, 1) & dl(i, 4)
 
Upvote 0
Hic mình chỉ biết viết như thế còn giải thích thì mình chịu thua. Bạn muốn hiểu về VBA thì chịu khó tìm những bài căn bản mà đọc, rồi từng bước khám phá và chinh phục. Code trên tuy không khó nhưng phải có cơ bản mới hiểu được.
Đoạn này kiểm tra đơn giá nè


tam = dl(i, 1) & dl(i, 4)

Vâng, cảm ơn bác nhiều, em phải tìm hiểu vậy.
 
Upvote 0
Em xin mạo muội hỏi: Bài này có dùng "thủ thuật" gì để có thể sử dụng Pivot table không ah? (em đang thích học cái này).
 
Upvote 0

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom