nguyentruonglinh
Thành viên mới

- Tham gia
- 2/10/10
- Bài viết
- 17
- Được thích
- 0
Nếu biết xài code thì copy code này vào 1 module rồi chạy thử xemEm đã đưa câu hỏi ở phần sheet hành trình theo chân Bác. nhờ anh chị GPE giúp đở.
Sub test()
Dim sh, data(), kq(1 To 65536, 1 To 3), i, k
With CreateObject("scripting.dictionary")
For Each sh In Worksheets
If sh.CodeName <> "Sheet11" Then
data = sh.Range(sh.[A6], sh.[A65536].End(3)).Resize(, 30).Value
For i = 1 To UBound(data)
If data(i, 30) >= 5 Then
If Not .exists(data(i, 2)) Then
k = k + 1
.Add data(i, 2), k
kq(k, 1) = k
kq(k, 2) = data(i, 2)
kq(k, 3) = data(i, 30)
Else
kq(.Item(data(i, 2)), 3) = kq(.Item(data(i, 2)), 3) + data(i, 30)
End If
End If
Next
End If
Next
End With
Sheet11.[A6].Resize(k, 3) = kq
End Sub
Hình như...hình như tác giả còn yêu cầu Tổng nhân với 4 nữa Hải ơi.Nếu biết xài code thì copy code này vào 1 module rồi chạy thử xem
PHP:Sub test() Dim sh, data(), kq(1 To 65536, 1 To 3), i, k With CreateObject("scripting.dictionary") For Each sh In Worksheets If sh.CodeName <> "Sheet11" Then data = sh.Range(sh.[A6], sh.[A65536].End(3)).Resize(, 30).Value For i = 1 To UBound(data) If data(i, 30) >= 5 Then If Not .exists(data(i, 2)) Then k = k + 1 .Add data(i, 2), k kq(k, 1) = k kq(k, 2) = data(i, 2) kq(k, 3) = data(i, 30) Else kq(.Item(data(i, 2)), 3) = kq(.Item(data(i, 2)), 3) + data(i, 30) End If End If Next End If Next End With Sheet11.[A6].Resize(k, 3) = kq End Sub
Em muốn tính điểm hành trình như sau: (Tổng điểm môn toán >=5 + Tổng điểm môn lí >=5+Tổng điểm môn công nghệ >=5+Tổng điểm mônngữ văn >=5+Tổng điểm môn lịch sử >=5+Tổng điểm môn địa lí >=5+Tổng điểm môn GDCD >=5+Tổng điểm môn ngoai ngữ >=5+Tổng điểm môn tin học >=5+Tổng điểm môn sinh >=5)*4
Hình như...hình như tác giả còn yêu cầu Tổng nhân với 4 nữa Hải ơi.
Vậy:Với dạng này bác Ba Tê chỉnh lại code của anh Quang Hai trong vòng 30 giây ấy mà! Sao không chỉnh luôn đi còn théc méc ta???
Thấy Quang Hải còn đèn xanh lè, để Hải chỉnh lại cho "trọn bộ".Với dạng này bác Ba Tê chỉnh lại code của anh Quang Hai trong vòng 30 giây ấy mà! Sao không chỉnh luôn đi còn théc méc ta???
Option Explicit
Sub test()
Dim sh, data(), kq(1 To 65536, 1 To 3), i, k
With CreateObject("scripting.dictionary")
For Each sh In Worksheets
If sh.CodeName <> "Sheet11" Then
data = sh.Range(sh.[A6], sh.[A65536].End(3)).Resize(, 30).Value
For i = 1 To UBound(data)
If data(i, 30) >= 5 Then
If Not .exists(data(i, 2)) Then
k = k + 1
.Add data(i, 2), k
kq(k, 1) = k
kq(k, 2) = data(i, 2)
kq(k, 3) = data(i, 30)
Else
kq(.Item(data(i, 2)), 3) = kq(.Item(data(i, 2)), 3) + data(i, 30)
End If
End If
Next
End If
Next
End With
For i = 1 To UBound(kq, 1)
kq(i, 3) = kq(i, 3) * 4
Next i
Sheet11.[A6].Resize(k, 3) = kq
End Sub
Vậy:
Với dạng này Nghĩa chỉnh lại code của anh Quang Hai trong vòng "bi nhiêu" giây mà sao không chỉnh luôn lại đi còn "théc méc" tập 2 "dzị" ta ???
Híc, không chơi théc méc tiếp à nha
Em test rùi. mà kết quả ra sai anh oi. em tính tay thì em đầu tiên phải có số điểm = 1294.1, anh xem lại giúp em với
Em test rùi. mà kết quả ra sai anh oi. em tính tay thì em đầu tiên phải có số điểm = 1294.1, anh xem lại giúp em với
"Chời đất".Em test rùi. mà kết quả ra sai anh oi. em tính tay thì em đầu tiên phải có số điểm = 1294.1, anh xem lại giúp em với
Option Explicit
Public Sub GPE()
Dim Ws As Worksheet, Dic As Object, I As Long, J As Long, K As Long
Dim Tem As String, Tong As Double, Sarr(), Darr(1 To 100, 1 To 3)
Set Dic = CreateObject("Scripting.Dictionary")
For Each Ws In Worksheets
If Ws.Name <> Sheet11.Name Then
Sarr = Ws.Range(Ws.[A6], Ws.[A65000].End(xlUp)).Resize(, 30).Value
For I = 1 To UBound(Sarr, 1)
Tem = UCase(Sarr(I, 4))
For J = 5 To 30
If Sarr(I, J) >= 5 Then Tong = Tong + Sarr(I, J)
Next J
If Not Dic.Exists(Tem) Then
K = K + 1: Dic.Add Tem, K
Darr(K, 1) = K
Darr(K, 2) = Sarr(I, 2)
Darr(K, 3) = Tong
Else
Darr(Dic.Item(Tem), 3) = Darr(Dic.Item(Tem), 3) + Tong
End If
Tong = 0
Next I
End If
Next Ws
For I = 1 To UBound(Darr, 1)
Darr(I, 3) = Darr(I, 3) * 4
Next I
With Sheet11
.[A6:C100].ClearContents
If K Then .[A6].Resize(K, 3).Value = Darr
End With
Set Dic = Nothing
End Sub
Theo như code của anh Ba Tê thì có nghĩa là cộng tất tần tật điểm từ cột E đến cột AD"Chời đất".
Diễn tả khó hiểu nên mọi người làm theo kiểu khác.
Thử lại code này xem sao, kết quả em đầu tiên là 1294.8 không giống của bạn. Kiểm tra lại xem code sai hay bạn sai.
=4*SUMPRODUCT(SUMIF(INDIRECT("'"&$AE$1:$AE$10&"'!E"&ROWS($1:6)&":AD"&ROWS($1:6)),">=5"))