tanthanh94
Thành viên mới
- Tham gia
- 24/8/14
- Bài viết
- 46
- Được thích
- 3
Trước bạn có giúp viết code để phân bổ nên mình dựa vào đấy để lấy kết quả là tính tổng nhiều điều kiện thôi, nhưng nó ghi ra kết quả ở tất cả các dòng giống như trong bài này nên mình mới vào hỏi cách để ghi ra dữ liệu ở dòng đầu tiên, nếu rảnh bạn có thể xem lại giúp mình chi tiết mình ghi ở trong file rồiBạn đưa file "giống thật" lên đi, rồi nêu rõ yêu cầu, vài dòng kết quả mẫu.
Trong code tôi gán dữ liệu vào cột S, bạn chỉnh lại vào cột nào tùy ý.Trước bạn có giúp viết code để phân bổ nên mình dựa vào đấy để lấy kết quả là tính tổng nhiều điều kiện thôi, nhưng nó ghi ra kết quả ở tất cả các dòng giống như trong bài này nên mình mới vào hỏi cách để ghi ra dữ liệu ở dòng đầu tiên, nếu rảnh bạn có thể xem lại giúp mình chi tiết mình ghi ở trong file rồi
Public Sub GPE()
Dim sArr(), dArr(), I As Long, R As Long, Tem As String, Rws As Long
sArr = Range("A8", Range("A8").End(xlDown)).Resize(, 13).Value
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 1)
With CreateObject("Scripting.Dictionary")
For I = 1 To R
Tem = sArr(I, 1) & "#" & sArr(I, 2) & "#" & sArr(I, 4) & "#" & sArr(I, 5)
If Not .Exists(Tem) Then
.Item(Tem) = I
dArr(I, 1) = sArr(I, 11)
Else
Rws = .Item(Tem)
dArr(Rws, 1) = dArr(Rws, 1) + sArr(I, 11)
End If
Next I
End With
Range("S8").Resize(R) = dArr
End Sub
Trước bạn có giúp viết code để phân bổ nên mình dựa vào đấy để lấy kết quả là tính tổng nhiều điều kiện thôi, nhưng nó ghi ra kết quả ở tất cả các dòng giống như trong bài này nên mình mới vào hỏi cách để ghi ra dữ liệu ở dòng đầu tiên, nếu rảnh bạn có thể xem lại giúp mình chi tiết mình ghi ở trong file rồi
MaNV | congviec | ca | Sum of Diemluong | Cột phụ lấy max | Cột kết quả |
606 | congviec2 | 3 | 60.625 | ||
647 | congviec2 | 3 | 37.30769231 | ||
661 | congviec2 | 3 | 39.58333333 | ||
853 | congviec2 | 3 | 60.625 | ||
939 | congviec1 | 3 | 72.71428571 | ||
1,120 | congviec2 | 3 | 158.3333333 | ||
1,124 | congviec1 | 3 | 56.55555556 | ||
3,901 | congviec2 | 3 | 37.30769231 | ||
3,913 | congviec1 | 3 | 84.83333333 |
Có lẽ do bạn lâu quá chưa trở lại diễn đàn (hoặc bạn mượn tên của mọt người cũ) nên không biết đường lối giải quyết của hầu nhết ngừoi ở đây:Mình diễn ý lại đúng ý bạn không nhé:
Bạn cần kết quả của những nhân viên có làm ca 3 và đảm bảo những nhân viên này không vượt max (dữ liệu mẫu của bạn không đầy đủ!). Nếu bài toán chỉ như vậy thì theo mình để nhanh chỉ cần như sau: Tonghop --> Pivot + filter ca3 + field công việc --> tạo cột max; cột kq so sánh tổng điểm + max --> Pivot lần nữa hoặc dùng trực tiếp { 1 }
Bài toán hiện tại của bạn thực sự viết code càng khó cho bạn quản lý sau này { 2 }. Viết code cho vụ này thì phí lắm và bạn cũng chưa học được việc khai thác hết sức mạnh add-in của Excel { 3 }
Chuẩn rồi bạn bài này mình muốn dùng pivot để lấy dữ liệu từ 2 bảng ra, mình không biết pivot kiểu j ra được cái cột max đấy, mình đang làm thì pivot ra cột điểm lương xong vlookup ra bảng phụ để điền cột max (nó có nhược điểm hàng ngày số mã nv thay đổi nên dòng tổng thay đổi dẫn đến phải sửa lại bảng phụ) mình có đăng bài rồi nhưng ko đc hướng dẫn nên buộc phải nghĩ cách điền cái tổng ra trước vlookup theo cái đấy rồi mới pivotMình diễn ý lại đúng ý bạn không nhé:
Bạn cần kết quả của những nhân viên có làm ca 3 và đảm bảo những nhân viên này không vượt max (dữ liệu mẫu của bạn không đầy đủ!). Nếu bài toán chỉ như vậy thì theo mình để nhanh chỉ cần như sau: Tonghop --> Pivot + filter ca3 + field công việc --> tạo cột max; cột kq so sánh tổng điểm + max --> Pivot lần nữa hoặc dùng trực tiếp
Bài toán hiện tại của bạn thực sự viết code càng khó cho bạn quản lý sau này. Viết code cho vụ này thì phí lắm và bạn cũng chưa học được việc khai thác hết sức mạnh add-in của Excel
MaNV congviec ca Sum of Diemluong Cột phụ lấy max Cột kết quả 606 congviec2 3 60.625647 congviec2 3 37.30769231661 congviec2 3 39.58333333853 congviec2 3 60.625939 congviec1 3 72.714285711,120 congviec2 3 158.33333331,124 congviec1 3 56.555555563,901 congviec2 3 37.307692313,913 congviec1 3 84.83333333
Có lẽ do bạn lâu quá chưa trở lại diễn đàn (hoặc bạn mượn tên của mọt người cũ) nên không biết đường lối giải quyết của hầu nhết ngừoi ở đây:
{ 1 } Cái bạn đề nghị cần khá nhiều động tác. Mà dân hỏi bài ở đây chỉ muốn 1 động tác là bấm nút. Nhiều người thẳng thừng phân bày là nhiều đọng tác thì "dễ bị nhầm lẫn". Muốn gọi đó là tinh thần hưởng ứng kỹn nghệ tiên tiến hay do lười quen ỷ lại tuỳ thuộc vào quan điểm của bạn. Nhưng sự thật là vậy.
{ 2 } Người ta chỉ làm cho xong việc rồi biến đi, để cái "khó quản lý sau này" cho người kế vị. Ở đây bạn gặp trườngn hợp này không ít. Dânn ở đay có nthois quen "yêu cuồng sống vội". Đòi hỏi người ta phải nghĩ đến tương lại là đòi hỏi nhiều quá.
{ 3 } Khia thác sức mạnh của Excel hầu như không cần thiết nếu bạn biết khai thác sức mạnh của GPE.
Tôi có đồng ý với bạn hay không hoàn toàn vôn nghĩa ở đây.Vấn đề giải pháp là trong tình huống cụ thể mình đưa ra đỡ tốn sức nhất, nhanh nhất. Bạn đồng ý như vậy không? ...
Cách dễ nhất, nhanh nất là nhờ ngừoi khác viết code giùm mình rồi bấm nút chạy.... Chính vì vậy theo mình đưa ra cách thức dễ nhất, nhanh nhất để thực hiện.
Mô hình là tiếng Ma rốc ở diễn đàn này....Để có thể giải quyết gốc với một nút bấm mà không có mô hình + viết macros hoặc VBA lai thì sao thực hiện được. Đó là chưa kể bug lỗi..
Thử làm thống kê xem có bao nhiêu người dùng "rút ra cho mình cái gì đó".... Và người dùng tham khảo còn rút ra cho mình cái gì đó chứ giải quyết một lần thì lần sau cũng sẽ tiếp tục hỏi vấn đề tương đương thôi.