Cô Bé Dễ Thương
Thành viên thường trực
- Tham gia
- 30/9/16
- Bài viết
- 223
- Được thích
- 48
- Giới tính
- Nữ
Sub thay "chỉ" bằng "viết". Buồn quá chú Mỹ ạ, cháu ngẫm nghĩ mãi không được. Bí bách kiểu như là trên bảo dưới không nghe ấy ạ. Vì ít vốn vba quá, hay dùng chính là excel, cháu mới tự học được dăm bữa vba. Chú làm ơn " run sub viết" cho cháu với.Này thì chỉ:
- Không dùng Dict
- Dùng 1 vòng lặp duyệt qua các dòng của Range Data: nếu color1 = color2 thì tăng biến MN lên, nếu color2 = color3 thì tăng biến NQ lên
- gán 2 biến xuống 2 ô kết quả
Lại dùng từ ngữ gợi cảm ...xúc. Nhỏ này sao sao á.Sub thay "chỉ" bằng "viết". Buồn quá chú Mỹ ạ, cháu ngẫm nghĩ mãi không được. Bí bách kiểu như là trên bảo dưới không nghe ấy ạ.
Sub SumSameColor()
Dim DataRng As Range
Dim LastRw As Long, MN As Long, NQ As Long
With Sheet1
LastRw = .Cells(1000, 3).End(xlUp).Row
Set DataRng = .Range("D23:G" & LastRw)
For i = 1 To DataRng.Rows.Count
If DataRng.Cells(i, 1).Interior.Color = _
DataRng.Cells(i, 2).Interior.Color Then _
MN = MN + DataRng.Cells(i, 4)
If DataRng.Cells(i, 2).Interior.Color = _
DataRng.Cells(i, 3).Interior.Color Then _
NQ = NQ + DataRng.Cells(i, 4)
Next
.[I23].Value = MN
.[J23].Value = NQ
End With
End Sub
Bạn đọc lại Nick name sẽ thấy lạ hơnLại dùng từ ngữ gợi cảm ...xúc. Nhỏ này sao sao á.
Anh đọc hướng dẫn ở bài #4 rồi xem người ta thực hiện ở bài #5 như thế nào. Nhìn kỹ hình *** thì tôi biết là trình độ của người ta có thể ở mức mà gợi ý của anh không đủ đâu. Tôi mà gặp những người như thế thì bỏ qua hoặc cầy hộ từ A đến Z. Không gợi ý nào đủ khi mà người ta còn không biết tự thêm Sub ... End Sub. Chưa kể là có thể phải thêm chút mắm muối (vd. tạo đít sần).Này thì chỉ:
- Không dùng Dict
- Dùng 1 vòng lặp duyệt qua các dòng của Range Data: nếu color1 = color2 thì tăng biến MN lên, nếu color2 = color3 thì tăng biến NQ lên
- gán 2 biến xuống 2 ô kết quả
Tôi có xem hình bài 5, vì bài 4 của lão kia nên tôi đợi lão ấy vào mắng, nhưng lão ấy không thích "em gái mưa ... rào" hay sao ấy. Tuy nhiên khi tải file bài 19 tôi thấy đã bớt chỏng chơ, chỉ thiếu khai báo biến. Không chạy được là do lão kia viết chay nên lỗi.Anh đọc hướng dẫn ở bài #4 rồi xem người ta thực hiện ở bài #5 như thế nào.
***: nhìn một khúc code chỏng chơ mà tôi thấy buồn cười quá.
Thêm sub và end sub vẫn đỏ. Lúc đó em nghĩ thầy VPE chỉ gợi ý nên cố tình viết thiếu. Mà bài 1 bài 2 với vốn ít ỏi bọn em hay gặp kiểu lỗi biên dịch dạng thừa thiếu dấu cách, dấu phảy, cách thể hiện 1 câu lệnh... mỗi cái nho nhỏ khiến tự biên tự diễn rất khó. Nên em hay xin bài mẫu để tự học từng câu.Anh đọc hướng dẫn ở bài #4 rồi xem người ta thực hiện ở bài #5 như thế nào. Nhìn kỹ hình *** thì tôi biết là trình độ của người ta có thể ở mức mà gợi ý của anh không đủ đâu. Tôi mà gặp những người như thế thì bỏ qua hoặc cầy hộ từ A đến Z. Không gợi ý nào đủ khi mà người ta còn không biết tự thêm Sub ... End Sub. Chưa kể là có thể phải thêm chút mắm muối (vd. tạo đít sần).
***: nhìn một khúc code chỏng chơ mà tôi thấy buồn cười quá.
Cháu cảm ơn chú ạ.Tôi có xem hình bài 5, vì bài 4 của lão kia nên tôi đợi lão ấy vào mắng, nhưng lão ấy không thích "em gái mưa ... rào" hay sao ấy. Tuy nhiên khi tải file bài 19 tôi thấy đã bớt chỏng chơ, chỉ thiếu khai báo biến. Không chạy được là do lão kia viết chay nên lỗi.
Chuyện đỏ đỏ là chuyện sai, nhầm lẫn, tôi không bàn. Lý do? Vì lỗi và nhầm lẫn thì ai cũng có thể mắc phải, kể cả "cao thủ", chỉ cần một phút không tập trung. Còn chuyện không có Sub ... End Sub mới đáng nói, vì lần đầu tôi mới nhìn thấy. Nó không phải là một dấu phẩy, dấu cách để mà nhấn nhầm trong vô thức. Bỏ Sub và End Sub là phải chủ ý, hoặc không biết là nó phải có. Không thể bỏ Sub ... End Sub do sơ ý được.Thêm sub và end sub vẫn đỏ.
Có ai cắt đâu à? Code đầy đủ sửa từ gợi ý bài 4, so sánh để biết đã sửa gì, ở đâu.Chỉ vì chút đỏ cắt bài mẫu của em thì em buồn quá thầy ơi.
Sub testdemsomau()
Dim ditSan, ki
Set ditSan = CreateObject("Scripting.Dictionary")
For Each rg In Range("B5:E14").Rows
ki = CStr(rg.Cells(1, 2).Interior.Color) & "|" & CStr(rg.Cells(1, 3).Interior.Color) & "|" & CStr(rg.Cells(1, 4).Interior.Color)
ditSan(ki) = ditSan(ki) + 1
Next rg
Set rg = Range("G5:K5").Resize(ditSan.Count, 5)
For i = 1 To ditSan.Count
ki = Split(ditSan.keys()(i - 1), "|")
rg.Cells(i, 1).Value = i
rg.Cells(i, 2).Interior.Color = CLng(ki(0))
rg.Cells(i, 3).Interior.Color = CLng(ki(1))
rg.Cells(i, 4).Interior.Color = CLng(ki(2))
rg.Cells(i, 5).Value = ditSan.items()(i - 1)
Next i
End Sub
Vâng. Đầu tiên cũng phải làm cho hết báo lỡi mới kích run, em chủ ý không động 1 tý gì. Để xin full code. Vì em trọng chữ, trọng thầy, không đủ trình thêm những chỗ còn thiếu.Chuyện đỏ đỏ là chuyện sai, nhầm lẫn, tôi không bàn. Lý do? Vì lỗi và nhầm lẫn thì ai cũng có thể mắc phải, kể cả "cao thủ", chỉ cần một phút không tập trung. Còn chuyện không có Sub ... End Sub mới đáng nói, vì lần đầu tôi mới nhìn thấy. Nó không phải là một dấu phẩy, dấu cách để mà nhấn nhầm trong vô thức. Bỏ Sub và End Sub là phải chủ ý, hoặc không biết là nó phải có. Không thể bỏ Sub ... End Sub do sơ ý được.
Code này thích thế. Dễ chế cháo cho nhiều bài tập.Lại dùng từ ngữ gợi cảm ...xúc. Nhỏ này sao sao á.
PHP:Sub SumSameColor() Dim DataRng As Range Dim LastRw As Long, MN As Long, NQ As Long With Sheet1 LastRw = .Cells(1000, 3).End(xlUp).Row Set DataRng = .Range("D23:G" & LastRw) For i = 1 To DataRng.Rows.Count If DataRng.Cells(i, 1).Interior.Color = _ DataRng.Cells(i, 2).Interior.Color Then _ MN = MN + DataRng.Cells(i, 4) If DataRng.Cells(i, 2).Interior.Color = _ DataRng.Cells(i, 3).Interior.Color Then _ NQ = NQ + DataRng.Cells(i, 4) Next .[I23].Value = MN .[J23].Value = NQ End With End Sub
Tôi vốn làm việc với con số, và giải trí bằng văn (hoặc đôi khi, nghệ thuật). Ít khi tôi trộn lẫn hai thứ.... vì bài 4 của lão kia nên tôi đợi lão ấy vào mắng, ...
Code nào cũng hay, cũng chế cháo được. Biết đọc code là được rồi, sau đó sẽ tự viếtCode này thích thế. Dễ chế cháo cho nhiều bài tập.
Vâng. Với bài #30 này cháu làm theo chế được nhiều bài tập. Có bài cháu chế đến 20 biến mà vẫn gọn gàng. Chế được chạy đúng, mà vẫn mơ màng chỗ vòng For sao không "Next i" mà lại Next range = MN(NQ).Code nào cũng hay, cũng chế cháo được. Biết đọc code là được rồi, sau đó sẽ tự viết
Vậy cho tôi xem code cháo cho biến thứ 3 là MQ.Vâng. Với bài #30 này cháu làm theo chế được nhiều bài tập. Có bài cháu chế đến 20 biến mà vẫn gọn gàng.
Đừng mơ, thắc mắc thì hỏi và hỏi cho rõ ràngmơ màng chỗ vòng For sao không "Next i" mà lại Next range = MN(NQ).
Vậy cho tôi xem code cháo cho biến thứ 3 là MQ.
Đừng mơ, thắc mắc thì hỏi và hỏi cho rõ ràng
Sub SumSameColor()
Dim DataRng As Range
Dim LastRw As Long, MN As Long, NQ As Long, MQ As Long
With Sheet1
LastRw = .Cells(1000, 3).End(xlUp).Row
Set DataRng = .Range("D23:G" & LastRw)
For i = 1 To DataRng.Rows.Count
If DataRng.Cells(i, 1).Interior.Color = _
DataRng.Cells(i, 2).Interior.Color Then _
MN = MN + DataRng.Cells(i, 4)
If DataRng.Cells(i, 2).Interior.Color = _
DataRng.Cells(i, 3).Interior.Color Then _
NQ = NQ + DataRng.Cells(i, 4)
If DataRng.Cells(i, 1).Interior.Color = _
DataRng.Cells(i, 3).Interior.Color Then _
MQ = MQ + DataRng.Cells(i, 4)
Next
.[I23].Value = MN
.[J23].Value = NQ
.[K23].Value = MQ
End With
End Sub
Cháo ngon đấy bé. Còn Next không có i là viết tắt, VBA hiểu là Next của For đầu tiên nhìn thấy từ dưới lên. Nếu nhiều vòng for lồng nhau thì không nên viết tắt, nhưng nếu tắt thì VBA vẫn hiểu Next theo thứ tự từ trong ra ngoàiMã:.[K23].Value = MQ
Vâng.Giống như dùng "If - End If" thì có thể viết tắt để bỏ "End if" như trong bài #30.Cháo ngon đấy bé. Còn Next không có i là viết tắt, VBA hiểu là Next của For đầu tiên nhìn thấy từ dưới lên. Nếu nhiều vòng for lồng nhau thì không nên viết tắt, nhưng nếu tắt thì VBA vẫn hiểu Next theo thứ tự từ trong ra ngoài
Thử code với điều kiện khác: cộng các trường hợp M và N đảo ngược nhau, N và Q đảo ngược nhau, M và Q đảo ngược nhau.Vâng.Giống như dùng "If - End If" thì có thể viết tắt để bỏ "End if" như trong bài #30.
Code hay ở bảng bao nhiêu cột, dòng cũng dc, muốn trích cái gì ra cũng đc. Cháu chẻ nhỏ MN, NQ, MQ:Thử code với điều kiện khác: cộng các trường hợp M và N đảo ngược nhau, N và Q đảo ngược nhau, M và Q đảo ngược nhau.