Hỏi nhanh, đáp nhanh Update...2020

Liên hệ QC

Lasderybi

Thành viên hoạt động
Tham gia
9/12/11
Bài viết
191
Được thích
20
Trước hết em xin lỗi vì đã mạo muội mở 1 Topic ạ, chả là em không biết hỏi những câu hỏi dạng "ngớ ngẩn" này ở đâu nên mới tạo để cho ai có những câu hỏi ngắn vào đây hỏi cho tiện ạ.
Hôm trước có người hỏi em em thấy hơi lạ nên em mới lên đây hỏi các anh các chị các thầy ạ.
Giả sử em có 1 bảng dữ liệu từ A1 đến D10 và 1 dòng Tổng ở cuối.
Bây giờ em muốn làm thế nào đó như là Bôi mầu, quét chọn...hoặc tương tự như thế 1 vùng bất kỳ ví dụ từ A1 dến D3 hay từ A2 đến D4. Lúc đó em muốn dòng Tổng ở dưới hiển thị Tổng của vùng em muốn chứ không phải Tổng của cả bảng ạ.
Nghe có vẻ lạ và mơ hồ, nếu các anh chị thấy ngớ ngẩn quá thì cho em xin lỗi vì đã làm mất thì giờ ạ.
 
Trước hết em xin lỗi vì đã mạo muội mở 1 Topic ạ, chả là em không biết hỏi những câu hỏi dạng "ngớ ngẩn" này ở đâu nên mới tạo để cho ai có những câu hỏi ngắn vào đây hỏi cho tiện ạ.
Hôm trước có người hỏi em em thấy hơi lạ nên em mới lên đây hỏi các anh các chị các thầy ạ.
Giả sử em có 1 bảng dữ liệu từ A1 đến D10 và 1 dòng Tổng ở cuối.
Bây giờ em muốn làm thế nào đó như là Bôi mầu, quét chọn...hoặc tương tự như thế 1 vùng bất kỳ ví dụ từ A1 dến D3 hay từ A2 đến D4. Lúc đó em muốn dòng Tổng ở dưới hiển thị Tổng của vùng em muốn chứ không phải Tổng của cả bảng ạ.
Nghe có vẻ lạ và mơ hồ, nếu các anh chị thấy ngớ ngẩn quá thì cho em xin lỗi vì đã làm mất thì giờ ạ.
Google tìm từ khóa "Worksheet Selection Change event", bạn sẽ tìm được giải pháp.
 
Tổng theo cột hay tổng cả vùng đã chọn. Ví dụ
1/ Vùng chọn A2: C5 thì tổng = Sum(A2:A5), Sum(B2:B5), Sum(C2:C5) =====> Tổng theo cột
2/ Vùng chọn A2:C5 thi tổng = Sum(A2:C5) =====> Tỏng cả vùng chọn
Nói không rõ khó có người giúp
Tốt nhất gửi file lên và nói rõ ý định
 
Trước hết em xin lỗi vì đã mạo muội mở 1 Topic ạ, chả là em không biết hỏi những câu hỏi dạng "ngớ ngẩn" này ở đâu nên mới tạo để cho ai có những câu hỏi ngắn vào đây hỏi cho tiện ạ.
Hôm trước có người hỏi em em thấy hơi lạ nên em mới lên đây hỏi các anh các chị các thầy ạ.
Giả sử em có 1 bảng dữ liệu từ A1 đến D10 và 1 dòng Tổng ở cuối.
Bây giờ em muốn làm thế nào đó như là Bôi mầu, quét chọn...hoặc tương tự như thế 1 vùng bất kỳ ví dụ từ A1 dến D3 hay từ A2 đến D4. Lúc đó em muốn dòng Tổng ở dưới hiển thị Tổng của vùng em muốn chứ không phải Tổng của cả bảng ạ.
Nghe có vẻ lạ và mơ hồ, nếu các anh chị thấy ngớ ngẩn quá thì cho em xin lỗi vì đã làm mất thì giờ ạ.
Di chuột vào sheet muốn thực hiện, chuột phải, chọn view code, dán đoạn code dưới đây vào, nhấn alt+q rồi thử
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i, j, x, z, Kq(1 To 4)
If Not Intersect(Target, Range("A1:D10")) Is Nothing Then
    x = Target(1, 1).Row
    z = Target(1, 1).Column
    For j = z To z + Target.Columns.Count - 1
        If j > 4 Then Exit For
        For i = x To x + Target.Rows.Count - 1
            If i > 10 Then Exit For
            Kq(j) = Kq(j) + Target(i - x + 1, j - z + 1)
        Next i
    Next j
    Range("A12:D12").Clear
    Range("A12:D12") = Kq
End If
End Sub
 
Tổng theo cột hay tổng cả vùng đã chọn. Ví dụ
1/ Vùng chọn A2: C5 thì tổng = Sum(A2:A5), Sum(B2:B5), Sum(C2:C5) =====> Tổng theo cột
2/ Vùng chọn A2:C5 thi tổng = Sum(A2:C5) =====> Tỏng cả vùng chọn
Nói không rõ khó có người giúp
Tốt nhất gửi file lên và nói rõ ý định
Xin lỗi mình không nói rõ, là TỔNG THEO CỘT bạn ạ. Phần 1 như bạn nói đó, nếu được thì giúp mình với nhé!
Bài đã được tự động gộp:

Di chuột vào sheet muốn thực hiện, chuột phải, chọn view code, dán đoạn code dưới đây vào, nhấn alt+q rồi thử
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i, j, x, z, Kq(1 To 4)
If Not Intersect(Target, Range("A1:D10")) Is Nothing Then
    x = Target(1, 1).Row
    z = Target(1, 1).Column
    For j = z To z + Target.Columns.Count - 1
        If j > 4 Then Exit For
        For i = x To x + Target.Rows.Count - 1
            If i > 10 Then Exit For
            Kq(j) = Kq(j) + Target(i - x + 1, j - z + 1)
        Next i
    Next j
    Range("A12:D12").Clear
    Range("A12:D12") = Kq
End If
End Sub
Cám ơn bạn đã quan tâm, mình thử rồi nhưng thấy nó cứ lộn xộn sao ý, chưa theo đúng ý :)
 
Di chuột vào sheet muốn thực hiện, chuột phải, chọn view code, dán đoạn code dưới đây vào, nhấn alt+q rồi thử
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i, j, x, z, Kq(1 To 4)
If Not Intersect(Target, Range("A1:D10")) Is Nothing Then
    x = Target(1, 1).Row
    z = Target(1, 1).Column
    For j = z To z + Target.Columns.Count - 1
        If j > 4 Then Exit For
        For i = x To x + Target.Rows.Count - 1
            If i > 10 Then Exit For
            Kq(j) = Kq(j) + Target(i - x + 1, j - z + 1)
        Next i
    Next j
    Range("A12:D12").Clear
    Range("A12:D12") = Kq
End If
End Sub
À được rồi bạn ạ, nhưng cho mình hỏi nếu muốn sửa cho vùng đó rộng hơn thì sửa như nào? Mình thử thay D bằng E nhưng không được
 
À được rồi bạn ạ, nhưng cho mình hỏi nếu muốn sửa cho vùng đó rộng hơn thì sửa như nào? Mình thử thay D bằng E nhưng không được
Ngoài khai báo D thành E, bạn sửa số 4 thành 5. Đây là số cột
Về số dòng thì sửa 10 thành số dòng bạn muốn
 
Tổng quát hơn, chọn vùng tính tổng bất kỳ rồi chạy code sau
Mã:
Sub TinhTong()
    Dim rng As Range, Cot As Integer, Dong As Integer, n As Long, i As Integer
    Dim rd As Integer, rc As Integer, cd As Integer, cc As Integer
    Set rng = Selection
    Cot = rng.Columns.Count
    Dong = rng.Rows.Count
    rd = rng.Row
    rc = rd + Dong - 1
    cd = rng.Column
    cc = cd + Cot - 1
    n = Range("A65000").End(xlUp).Row
    For i = cd To cc
        Cells(n + 1, i) = "=Sum(R" & rd & "C" & i & ":R" & rc & "C" & i & ")"
    Next
End Sub
 
Đến giờ là bài #10.
"Hỏi nhanh, đáp nhanh" cái quái gì.
Nhiều người cho rằng chỉ cần "vắn tắt câu hỏi", và bên trả lời chỉ cần "vắn tắt" là xong hết.
10 x "vắn tắt" <= 1 x "chi tiết, tuần tự rõ rệt"
 
Chào các thầy cô ạ. Cho em hỏi 1 xíu. Khi em muốn duyệt qua từng worksheet theo nhóm tên được quy định sẵn rồi thì em phải code thế nào ạ:
Mã:
tenshet = Array(a,b,c,d)
for each ws in tensheet
.......
next ws
Như trên có đúng ko ạ.
Em cám ơn ạ
 
Chào các thầy cô ạ. Cho em hỏi 1 xíu. Khi em muốn duyệt qua từng worksheet theo nhóm tên được quy định sẵn rồi thì em phải code thế nào ạ:
Mã:
tenshet = Array(a,b,c,d)
for each ws in tensheet
.......
next ws
Như trên có đúng ko ạ.
Em cám ơn ạ
1. Tuỳ theo a, c, c, d là kiểu gì. Có phải kiểu string hay không.
2. tuỳ theo bên trong vòng lặp ws được dùng như thế nào

For each là vòng lặp duyệt qua từng phần tử của một tập hợp.

Đã nói. Ở diễn đàn này chuyện "hỏi nhanh, đáp nhanh" là chuyện mơ tưởng
 
Đến giờ là bài #10.
"Hỏi nhanh, đáp nhanh" cái quái gì.
Nhiều người cho rằng chỉ cần "vắn tắt câu hỏi", và bên trả lời chỉ cần "vắn tắt" là xong hết.
10 x "vắn tắt" <= 1 x "chi tiết, tuần tự rõ rệt"
Bạn nói cũng có lý, tuy nhiên nói là Hỏi nhanh đáp nhanh nhưng thực ra là để dành cho các câu hỏi nhỏ không đáng phải mở hẳn 1 Topic. Bởi mình thấy nhiều người mở hẳn 1 top chỉ để hỏi nguyên 1 câu, như vậy bài viết sẽ loãng và lan man phải không ạ?
 
Em nhờ tý ạ, em có File Word tự nhiên bị hỏng, có ai rảnh kiểm tra hộ em xem có khắc phục được k ạ.
Em cảm ơn
 

File đính kèm

  • Bao cao.doc
    105 KB · Đọc: 3
Web KT
Back
Top Bottom