Tính tổng doanh thu từng loại mặt hàng

Liên hệ QC

hoanglam1233

Thành viên mới
Tham gia
24/9/10
Bài viết
11
Được thích
0
Tiêu đề là v nhưng vấn đề của em khá phức tạp nên vô đây e sẽ nói kỹ ntn

Hiện giờ em đang có 1 danh sách các loại đá tiêu thụ trong tháng 1

Trong đó thì sẽ có 2 trường hợp, đó là tiêu thụ có mã số Hoá Đơn và tiêu thụ chưa có hoá đơn.

Yêu cầu đặt ra ở đây là phải tính tổng doanh thu bán cho từng loại đá, đối với những hoá đơn tiêu thụ của từng loại đá thì phải tính riêng ra cho từng mã hoá đơn.

VD: đá 1x2 có 2 mã hoá đơn nhưng phát sinh nhiều lần thì phải tính tổng DT cho từng mã đó

Còn đối với những lần tiêu thụ nào mà không có hoá đơn, thì phải lọc ra và tính tổng theo từng nội dung cuộc mua bán đó.

VD: đá 1x2 bán cho CTCP 456, Bán Lẻ, CTABC, tính như có hoá đơn nhưng chỉ khác là căn cứ vào nội dung thôi.

Có 1 vấn đề khá trọng yếu là sẽ có mã hoá đơn bán cho không chỉ 1 loại đá.

Đáng nhẽ là sẽ còn phải thêm phần phân loại đơn giá cho từng đối tượng mua bán nhưng như v thì sẽ quá phức tạp nên e lược bỏ ó bớt, dưới đây là vd 1 đoạn ngắn trong cái danh sách dài 11k dòng của em, mong mn lập giùm e cái công thức +-+-+-+
 

File đính kèm

Chẳng ai tính giùm cho bạn được, vì bạn nêu tính riêng ra cho từng mã hoá đơn, nhưng trong File không có cột nào có mã hoá đơn thì lấy cái gì để tính.
 
Tính được, nếu hiểu 'số HĐ' thay vì 'mã HĐ'

Chẳng ai tính giùm cho bạn được, vì bạn nêu tính riêng ra cho từng mã hoá đơn, nhưng trong File không có cột nào có mã hoá đơn thì lấy cái gì để tính.

Mình làm bằng DSUM() với sự trợ giúp của VBA
(Nhớ cho macro nó được chạy nhe)
 

File đính kèm

Mình làm bằng DSUM() với sự trợ giúp của VBA
(Nhớ cho macro nó được chạy nhe)
làm như bác thì hơi bị phức tạp quá bác ơi, tại vì mình làm là để cho ra 1 bảng tính tóm tắt mà nhìn vào là có thể hiểu rõ thằng này bán cho những thằng nào, số lượng bao nhiêu, nói trắng ra là làm cho sếp xem, mà sếp thì sẽ k thích vụ rườm rà ngồi click chuột từng cái ntn để xem, hơn nữa cái sheet báo cáo của bác nó còn bị 1 lỗi ntn, nếu muốn chọn thì trước tiên phải biết loại đá đó bán cho những ai và số hoá đơn, thì khi chọn đúng nó mới ra kết quả đúng được, mình có thử qua thì có vẻ như là loại đá nào cũng có thể chọn bất kỳ shđ và nội dung, nhưng mà nếu như chọn sai thì nó sẽ không ra kết quả, như v thì sẽ k đáp ứng được yêu cầu của sếp mình.

bởi vì cái file gốc của mình nó rất lớn, số lượng loại đá cũng khá nhiều, khách hàng với mã hoá đơn thì vô số kể, nên không thể nhớ hết chính xác mà chọn dựa trên cái mẫu của bạn đc
 
Tiêu đề là v nhưng vấn đề của em khá phức tạp nên vô đây e sẽ nói kỹ ntn

Hiện giờ em đang có 1 danh sách các loại đá tiêu thụ trong tháng 1

Trong đó thì sẽ có 2 trường hợp, đó là tiêu thụ có mã số Hoá Đơn và tiêu thụ chưa có hoá đơn.

Yêu cầu đặt ra ở đây là phải tính tổng doanh thu bán cho từng loại đá, đối với những hoá đơn tiêu thụ của từng loại đá thì phải tính riêng ra cho từng mã hoá đơn.

VD: đá 1x2 có 2 mã hoá đơn nhưng phát sinh nhiều lần thì phải tính tổng DT cho từng mã đó

Còn đối với những lần tiêu thụ nào mà không có hoá đơn, thì phải lọc ra và tính tổng theo từng nội dung cuộc mua bán đó.

VD: đá 1x2 bán cho CTCP 456, Bán Lẻ, CTABC, tính như có hoá đơn nhưng chỉ khác là căn cứ vào nội dung thôi.

Có 1 vấn đề khá trọng yếu là sẽ có mã hoá đơn bán cho không chỉ 1 loại đá.

Đáng nhẽ là sẽ còn phải thêm phần phân loại đơn giá cho từng đối tượng mua bán nhưng như v thì sẽ quá phức tạp nên e lược bỏ ó bớt, dưới đây là vd 1 đoạn ngắn trong cái danh sách dài 11k dòng của em, mong mn lập giùm e cái công thức +-+-+-+
Thử xem file đính kèm với đoạn code sau
Trường hợp không có hóa đơn sẽ tổng hợp theo tên khách hàng.
Mã:
Public Sub TongHopHD()
Dim DL, Tam, kq() As String, r As Long

With Sheet1
DL = .Range("A2", "F" & .Range("A1000000").End(xlUp).Row)
End With

ReDim Tam(2)
With CreateObject("Scripting.Dictionary")
For r = 1 To UBound(DL)
Tam(0) = DL(r, 2): Tam(1) = DL(r, 3): Tam(2) = DL(r, 4)

If DL(r, 6) <> "" Then
If Not .exists(DL(r, 6)) Then
.Add DL(r, 6), Tam
Else
Tam = .Item(DL(r, 6))
Tam(1) = Tam(1) + DL(r, 3)
.Item(DL(r, 6)) = Tam
End If

Else
If Not .exists(DL(r, 1)) Then
.Add DL(r, 1), Tam
Else
Tam = .Item(DL(r, 1))
Tam(1) = Tam(1) + DL(r, 3)
.Item(DL(r, 1)) = Tam
End If
End If

Next r
Tam = .keys
ReDim kq(1 To .Count, 1 To 4)

For r = 1 To UBound(kq)
kq(r, 1) = Tam(r - 1)
kq(r, 2) = .Item(Tam(r - 1))(0)
kq(r, 3) = .Item(Tam(r - 1))(1)
kq(r, 4) = .Item(Tam(r - 1))(2)
Next r
End With

Sheet2.Range("A2:D" & UBound(DL)).Clear
Sheet2.Range("A2").Resize(UBound(kq), UBound(kq, 2)) = kq
Sheet2.UsedRange.Columns.AutoFit
End Sub
 

File đính kèm

bác nhìn cái file mà k hiểu cái số HĐ với mã HĐ nó là 1 à @@

Bạn nêu vấn đề chưa cụ thể và phân tích chưa đúng với thực tế, tôi thì hiểu khác với cái File bạn nêu, ví dụ: Tôi có hợp đồng số 0000212 (theo File của bạn).


Theo hợp đồng số 0000212 cung cấp hàng hóa là 18,7 tấn, khi cung cấp hàng hóa thì có 2 đơn vị nhận:


1/ Công ty Nhật Anh nhận 14,2 tấn (xuất 1 hóa đơn khác).


2/ Công ty ABC nhận 4,5 tấn (xuất 1 hóa đơn khác).


Vậy theo File của bạn thì khi thanh toán tiền dựa vô cái nào số hợp đồng hay đơn vị nhận (vì hợp đồng số 0000212 có 2 đơn vị nhận khác nhau). Như vậy do bạn nhập dữ liệu sai, do đưa dữ liệu chưa cụ thể hay do tôi không hiểu cái hợp đồng đó.

Theo yêu cầu trên thì có thể dùng PivotTable là được.
 
Lần chỉnh sửa cuối:
làm như bác thì hơi bị phức tạp quá bác ơi, tại vì mình làm là để cho ra 1 bảng tính tóm tắt mà nhìn vào là có thể hiểu rõ thằng này bán cho những thằng nào, số lượng bao nhiêu, nói trắng ra là làm cho sếp xem, mà sếp thì sẽ k thích vụ rườm rà ngồi click chuột từng cái ntn.

bởi vì cái file gốc của mình nó rất lớn, số lượng loại đá cũng khá nhiều, khách hàng với mã hoá đơn thì vô số kể, nên không thể nhớ hết chính xác mà chọn dựa trên cái mẫu của bạn đc

Bài trả lời cho bạn chứ có cho sếp bạn đâu kia chứ?

Thêm 2 câu lệnh này sẽ quen hơn nà:
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [E3]) Is Nothing Then
    Dim WF As Object, CSDL As Range
    Dim Rws As Long
    
    Set WF = Application.WorksheetFunction
    With Sheets("CSDL")
        Rws = .[B2].CurrentRegion.Rows.Count
        Set CSDL = .[A1].Resize(Rws, 6)
        If Target.Value <> "" Then
            .[ac2].Value = Target.Value
            [c6].Value = WF.DSum(CSDL, .[e1], .[ab1:ac2])
            [g3].Font.ColorIndex = 35           '<=|'
        Else
            .[ac2].Value = Target.Value
            [c6].Value = WF.DSum(CSDL, .[e1], .[aA1:ac2])
            [g3].Font.ColorIndex = 3            '<=|'
        End If
    End With
 End If
End Sub
 
Tổng thành tiền 11 dòng đầu là 11,5 triệu. Nếu file có trên 11k dòng thì doanh thu trên 10 tỷ.
Có công ty nào cỡ này mà không biết Pivot đâu bác.


Bài trên là tôi muốn phân tích rõ ở câu này của chủ Topic (trích nguyên văn bài #1):

Trong đó thì sẽ có 2 trường hợp, đó là tiêu thụ có mã số Hoá Đơn và tiêu thụ chưa có hoá đơn.

Và trích nguyên văn bài #4.

bác nhìn cái file mà k hiểu cái số HĐ với mã HĐ nó là 1 à @@

Nhưng chủ Topic nêu nó là 1, trong khi đó tôi hiểu số Hợp đồng và số Hóa đơn là 2 cái hoàn toàn khác nhau:

1/ Hợp đồng là bản ký kết giữa đơn vị cung ứng hàng hóa với đơn vị nhận cung ứng (cái này chỉ có 1 số duy nhất) hoặc có thể có 1 phụ lục hợp đồng.

2/ Hóa đơn: Là nhiều chứng từ của 1 Hợp đồng cung ứng hàng hóa có thể cung cấp làm nhiều đợt hàng hóa, mỗi đợt có 1 Hóa đơn riêng.

Vì vậy, nên tôi mới nêu thiếu cột mã số Hoá Đơn, nhưng tác giả nêu số Hoá Đơn cũng là số Hợp đồng, thì tôi chẳng hiểu nổi????????
 
Lần chỉnh sửa cuối:
...

1/ Hợp đồng là bản ký kết giữa đơn vị cung ứng hàng hóa với đơn vị nhận cung ứng (cái này chỉ có 1 số duy nhất) hoặc có thể có 1 phụ lục hợp đồng.

2/ Hóa đơn: Là nhiều chứng từ của 1 Hợp đồng cung ứng hàng hóa có thể cung cấp làm nhiều đợt hàng hóa, mỗi đợt có 1 Hóa đơn riêng.

Vì vậy, nên tôi mới nêu thiếu cột mã số Hoá Đơn, nhưng tác giả nêu số Hoá Đơn cũng là số Hợp đồng, thì tôi chẳng hiểu nổi????????

Ý tôi muốn nêu ra là công ty doanh thu bạc chục tỷ mà dữ liệu chứng từ quá sơ sài. Phân tích tổng tiếc làm gì cho mệt.

tb. Tôi cũng không hiểu, đây là lần đầu tôi thấy có chuyện mã hợp đồng cũng là mã hoá đơn.
 
Web KT

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

Back
Top Bottom