vanlinh_2904
Thành viên hoạt động



- Tham gia
- 20/10/12
- Bài viết
- 117
- Được thích
- 3






có ai giúp được mình không vậy?Chào các bạn!
Mình có 2 sheet "HN" & Sheet "SG", có các vật tư mua và bán, mình muốn tạo VBA để tổng hợp số lượng, thành tiền, và cước vận chuyển cho các mặt hàng ở 2 sheet. Nhờ các bạn giúp mình.cảm ơn các bạn nhiều
Có nhiều người xem rồi mà.có ai giúp được mình không vậy?



Trong 2 sheet HN, SG là mẫu cố định như vậy và chỉ có 2 sheet như vậy thôi, còn sheet TongHop như vậy cũng cố định rồi không chèn thêm cột, mục đích của mình là lọc mã duy nhất của 2 sheet HN,SG để tính tổng sang sheet TongHop theo điều kiện là mua và bán như file, cảm ơn bạn nhé.Có nhiều người xem rồi mà.
Chỉ có 2 sheet HN và SG mà 2 bảng cũng không giống nhau, 100 địa điểm thì 100 mẫu khác nhau sao?
Cột B sheet HN là Mã Vật tư, cột B sheet SG là Ngày, .....
Làm khó nhau quá nên không ai chịu làm thôi.
Bạn sửa lại cấu trúc 2 bảng nay cho giống hệt nhau, rồi nói rõ chỉ có 2 sheet HN,SG hay còn nhiều nhiều sheet nữa cũng cần tổng hợp chung về sheet "Tong hop"?
Biểu mẫu trong sheet TongHop như vây là cố định chưa? hay là còn chèn thêm cột.... tùy thích nữa?
Kết quả mẫu muốn có cũng phải nhập thủ công ít nhất cũng đầy đủ 1 hàng ngang để người không phải cũng "nghề" với bạn "có thể" hiểu được bạn muốn gì.
Giải quyết xong các chuyện trên thì sẽ có người giúp trong vòng "Một nốt nhạc"
Chỉ có 2 sheet mà lộn xộn cột, oải thiệt. Xem tạm code Quá Sợ nay coi sao:Trong 2 sheet HN, SG là mẫu cố định như vậy và chỉ có 2 sheet như vậy thôi, còn sheet TongHop như vậy cũng cố định rồi không chèn thêm cột, mục đích của mình là lọc mã duy nhất của 2 sheet HN,SG để tính tổng sang sheet TongHop theo điều kiện là mua và bán như file, cảm ơn bạn nhé.
Thấy sao viết vậy làm biếng suy nghĩ "túm gọn" nó lại.
Hy vọng có người khác "nhòm" qua sẽ viết gọn hơn cho bạn.
Public Sub QuaSo()
Dim Dic As Object, sArr(), dArr(1 To 65000, 1 To 19), i As Long, K As Long, iK As Long
Dim jD_MuaBan, jS_HnSg, jD, jS, dP As Long, j As Long, Tem As String
jD_MuaBan = Array(Array(3, 8, 9), Array(11, 18, 19))
jS_HnSg = Array(Array(5, 7, 8), Array(4, 6, 7))
Set Dic = CreateObject("Scripting.Dictionary")
For dP = 1 To 2 ''1 Hanoi 2 Saigon''
Select Case dP
Case 1: sArr = Sheets("HN").Range(Sheets("HN").[B2], Sheets("HN").[B2].End(xlDown)).Resize(, 8).Value
Case 2: sArr = Sheets("SG").Range(Sheets("SG").[C3], Sheets("SG").[C3].End(xlDown)).Resize(, 7).Value
End Select
jS = jS_HnSg(dP - 1)
For i = 1 To UBound(sArr, 1)
Tem = sArr(i, 1)
If Not Dic.Exists(Tem) Then
K = K + 1
Dic.Add Tem, K
iK = K
dArr(iK, 1) = sArr(i, 1)
dArr(iK, 2) = sArr(i, 2)
Else
iK = Dic.Item(Tem)
End If
If UCase(sArr(i, 3)) = "MUA" Then
jD = jD_MuaBan(0)
Else: jD = jD_MuaBan(1): End If
For j = 0 To UBound(jD)
dArr(iK, jD(j)) = dArr(iK, jD(j)) + sArr(i, jS(j))
Next
Next i
Next dP
With Sheets("TongHop")
.[B3:T65000].ClearContents
.[B3].Resize(K, 19) = dArr
End With
Set Dic = Nothing
End Sub
có ai giúp được mình không vậy?




Cảm ơn bạn nhiều, nhưng có cách nào để mỗi lần cập nhập lại dữ liệu thì chỉ xóa và ghi vào những cột cần điền, còn những cột khác không xóa ( mục đích của mình những cột còn lại mình còn đặt công thức nữa).Lười quá 3T ah, sao không rút gọn vậy
Nếu chủ topic thich rút gọn cho quá sợ hơn nữa thì ngắn gọn thế này
(các bước tính code, giống như 3T, nếu sai đúng cần hỏi cứ gõ cửa 3T nhé, ở đây chỉ rút gọn mà thui)
PHP:Public Sub QuaSo() Dim Dic As Object, sArr(), dArr(1 To 65000, 1 To 19), i As Long, K As Long, iK As Long Dim jD_MuaBan, jS_HnSg, jD, jS, dP As Long, j As Long, Tem As String jD_MuaBan = Array(Array(3, 8, 9), Array(11, 18, 19)) jS_HnSg = Array(Array(5, 7, 8), Array(4, 6, 7)) Set Dic = CreateObject("Scripting.Dictionary") For dP = 1 To 2 ''1 Hanoi 2 Saigon'' Select Case dP Case 1: sArr = Sheets("HN").Range(Sheets("HN").[B2], Sheets("HN").[B2].End(xlDown)).Resize(, 8).Value Case 2: sArr = Sheets("SG").Range(Sheets("SG").[C3], Sheets("SG").[C3].End(xlDown)).Resize(, 7).Value End Select jS = jS_HnSg(dP - 1) For i = 1 To UBound(sArr, 1) Tem = sArr(i, 1) If Not Dic.Exists(Tem) Then K = K + 1 Dic.Add Tem, K iK = K dArr(iK, 1) = sArr(i, 1) dArr(iK, 2) = sArr(i, 2) Else iK = Dic.Item(Tem) End If If UCase(sArr(i, 3)) = "MUA" Then jD = jD_MuaBan(0) Else: jD = jD_MuaBan(1): End If For j = 0 To UBound(jD) dArr(iK, jD(j)) = dArr(iK, jD(j)) + sArr(i, jS(j)) Next Next i Next dP With Sheets("TongHop") .[B3:T65000].ClearContents .[B3].Resize(K, 19) = dArr End With Set Dic = Nothing End Sub
Từ bài #3 tôi đã thấy tác giả "mập mờ" rồi. Dấu cột tùm lum mà bảo mẫu mã nó chỉ có bi nhiêu thôi, không chèn thêm cột... hóa ra là đã chèn sẵn, lại không nói trước là có các cột bị dấu là công thức.Lười quá 3T ah, sao không rút gọn vậy
Nếu chủ topic thich rút gọn cho quá sợ hơn nữa thì ngắn gọn thế này
(các bước tính code, giống như 3T, nếu sai đúng cần hỏi cứ gõ cửa 3T nhé, ở đây chỉ rút gọn mà thui)
Cảm ơn bạn nhiều, nhưng có cách nào để mỗi lần cập nhập lại dữ liệu thì chỉ xóa và ghi vào những cột cần điền, còn những cột khác không xóa ( mục đích của mình những cột còn lại mình còn đặt công thức nữa).
Từ bài #3 tôi đã thấy tác giả "mập mờ" rồi. Dấu cột tùm lum mà bảo mẫu mã nó chỉ có bi nhiêu thôi, không chèn thêm cột... hóa ra là đã chèn sẵn, lại không nói trước là có các cột bị dấu là công thức.
Xem bài #8 và ai rút gọn thì tiếp tục nhé. Tui mà làm tiếp thì code sẽ dài thêm gấp 3 lần cái cũ.
Ẹc..



Mình vẫn chưa làm được, mình làm theo code của anh 3T nhưng mỗi lần chạy lại cập nhập dữ liệu thì xóa luôn những cột khác không liên quan, đồng thời dữ liệu 2 sheet HN,SG nếu có dòng trống thì không thực hiện được dòng tiếp theoKhông thấy chủ topic phản hồi gì,
Chắc tự xử được rui
Đã có giải pháp, nhưng không rõ bạn có cần nữa không?
Đúng thế bạn ah,Mình vẫn chưa làm được, mình làm theo code của anh 3T nhưng mỗi lần chạy lại cập nhập dữ liệu thì xóa luôn những cột khác không liên quan, đồng thời dữ liệu 2 sheet HN,SG nếu có dòng trống thì không thực hiện được dòng tiếp theo




Yên tâm nhé, cứ réo tên anh Ba Tê là mọi chuyện đâu vào đó thôi. Mấy vụ này mình biết mà.Mình vẫn chưa làm được, mình làm theo code của anh 3T nhưng mỗi lần chạy lại cập nhập dữ liệu thì xóa luôn những cột khác không liên quan, đồng thời dữ liệu 2 sheet HN,SG nếu có dòng trống thì không thực hiện được dòng tiếp theo
Bánh trái luôn chọn chỗ ngon, còn mấy chỗ gần "thiu" thì "xúi" người ta réo.Yên tâm nhé, cứ réo tên anh Ba Tê là mọi chuyện đâu vào đó thôi. Mấy vụ này mình biết mà.