newstar611
Thành viên chính thức
- Tham gia
- 7/11/12
- Bài viết
- 69
- Được thích
- 3
Sản phẩm A-1 |
Sản phẩm A-2 |
Sản phẩm A-3 |
Sản phẩm B-1 |
Sản phẩm B-2 |
Sản phẩm B-3 |
Sản phẩm C-1 |
Sản phẩm C-2 |
Sản phẩm C-3 |
Tên Sản phẩm | Nhóm Sản Phẩm |
A | 1 |
A | 2 |
A | 3 |
B | 1 |
B | 2 |
B | 3 |
C | 1 |
C | 2 |
C | 3 |
Bố trí dữ liệu một cách khéo léo mới là quan trọng. Thay vì gom chung một cục tên sản phẩm thì tại sao không tách ra từng cột để dễ dàng xử lý
Thay vì:
Sản phẩm A-1
Sản phẩm A-2
Sản phẩm A-3
Sản phẩm B-1
Sản phẩm B-2
Sản phẩm B-3
Sản phẩm C-1
Sản phẩm C-2
Sản phẩm C-3
Sao không là:
Tên Sản phẩm
Nhóm Sản Phẩm
A
1
A
2
A
3
B
1
B
2
B
3
C
1
C
2
C
3
Nếu chỉ muốn để học hỏi thêm thì chịu khó một chút, viết thử code đi rồi nhờ người ta chỉnh cho chỗ sai.Do em đang làm, dữ liệu từ nguồn khác nên không thể thay đổi được, em chỉ lấy làm ví vụ để học hỏi thêm
Bạn xem tham khảo nhé.Do em đang làm, dữ liệu từ nguồn khác nên không thể thay đổi được, em chỉ lấy làm ví vụ để học hỏi thêm
Sub tinhtong()
Dim arr, i As Long, dic As Object, arr1, dk As String, T, b As Long
Set dic = CreateObject("scripting.dictionary")
Range("B15:C20").ClearContents
arr = Range("A15:C20").Value
arr1 = Range("a3:C11").Value
For i = 1 To UBound(arr, 1)
dk = Split(arr(i, 1), " ")(1)
dic.Item(dk) = i
Next i
For i = 1 To UBound(arr1, 1)
dk = Split(arr1(i, 1), " ")(2)
For Each T In Split(dk, "-")
b = dic.Item(T)
If b Then
arr(b, 2) = arr1(i, 2) + arr(b, 2)
arr(b, 3) = arr1(i, 3) + arr(b, 3)
End If
Next
Next i
Range("A15:C20").Value = arr
End Sub
Em không biết bắt đầu từ đâu nên mới đưa file trắng không có code, chứ bình thường em đều có code kèm (tuy không đúng).Nếu chỉ muốn để học hỏi thêm thì chịu khó một chút, viết thử code đi rồi nhờ người ta chỉnh cho chỗ sai.
Cám ơn snow25 nhiều.Bạn xem tham khảo nhé.
Mã:Sub tinhtong() Dim arr, i As Long, dic As Object, arr1, dk As String, T, b As Long Set dic = CreateObject("scripting.dictionary") Range("B15:C20").ClearContents arr = Range("A15:C20").Value arr1 = Range("a3:C11").Value For i = 1 To UBound(arr, 1) dk = Split(arr(i, 1), " ")(1) dic.Item(dk) = i Next i For i = 1 To UBound(arr1, 1) dk = Split(arr1(i, 1), " ")(2) For Each T In Split(dk, "-") b = dic.Item(T) If b Then arr(b, 2) = arr1(i, 2) + arr(b, 2) arr(b, 3) = arr1(i, 3) + arr(b, 3) End If Next Next i Range("A15:C20").Value = arr End Sub
Vì AB bạn hiểu nó là 2 sản phẩm nhưng mà AB liền nhau không biết phân biệt kiểu gì.Em không biết bắt đầu từ đâu nên mới đưa file trắng không có code, chứ bình thường em đều có code kèm (tuy không đúng).
Bài đã được tự động gộp:
Cám ơn snow25 nhiều.
Riêng phần tính "Sản phẩm AB" không áp dụng được code này, có cách nào viết riêng cho phần này không snow25?
Ý của mình là tính tổng tất cả sản phẩm "A" - "B".Vì AB bạn hiểu nó là 2 sản phẩm nhưng mà AB liền nhau không biết phân biệt kiểu gì.