Cộng các ô Merge & center (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

nammkn02

Thành viên chính thức
Tham gia
24/3/15
Bài viết
66
Được thích
6
Nhờ mọi người giúp đỡ em tính tổng các ô ở cột A ra kết quả SUM ở ô B (đã được Merge & center) như file đính kèm với ạ
0011.jpg
 

File đính kèm

Nhờ mọi người giúp đỡ em tính tổng các ô ở cột A ra kết quả SUM ở ô B (đã được Merge & center) như file đính kèm với ạ
Ô đã merge không giống nhau thì bạn coppy công thức kiểu gì được, muốn copy sang ô khác cũng phải vào từng ô một để paste. Công thức từ ô dưới cũng lên tùy bạn chọn
Mã:
B19=SUM(INDIRECT(ADDRESS(ROW();1)):$A$26)-SUM(INDIRECT(ADDRESS(ROW()+1;2)):$B$26)
C19=SUM(A19:$A$26)-SUM(C20:$C$26)
1621930621626.png
 
Ô đã merge không giống nhau thì bạn coppy công thức kiểu gì được, muốn copy sang ô khác cũng phải vào từng ô một để paste. Công thức từ ô dưới cũng lên tùy bạn chọn
Mã:
B19=SUM(INDIRECT(ADDRESS(ROW();1)):$A$26)-SUM(INDIRECT(ADDRESS(ROW()+1;2)):$B$26)
C19=SUM(A19:$A$26)-SUM(C20:$C$26)
View attachment 259387
ko thể VBA được ạ anh
 
ko thể VBA được ạ anh
VBA dành cho bạn:
Sub CongCellMerge()
Dim Rw As Long, Rws As Long, Col As Long

Application.ScreenUpdating = False
Range("B1").Activate
Col = ActiveCell.Column
Do Until ActiveCell.Offset(, -1) = ""
Rw = ActiveCell.Row
Rws = Selection.Rows.Count
ActiveCell = WorksheetFunction.Sum(Range(Cells(Rw, Col - 1), Cells(Rw + Rws - 1, Col - 1)))
ActiveCell.Offset(1).Activate
Loop
Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
VBA dành cho bạn:
Sub CongCellMerge()
Dim Rw As Long, Rws As Long, Col As Long

Application.ScreenUpdating = False
Col = ActiveCell.Column
Range("B1").Activate
Do Until ActiveCell.Offset(, -1) = ""
Rw = ActiveCell.Row
Rws = Selection.Rows.Count
ActiveCell = WorksheetFunction.Sum(Range(Cells(Rw, Col - 1), Cells(Rw + Rws - 1, Col - 1)))
ActiveCell.Offset(1).Activate
Loop
Application.ScreenUpdating = True
End Sub
Đổi
Col = ActiveCell.Column
Range("B1").Activate
thành
Range("B1").Activate
Col = ActiveCell.Column
mới đúng nhé anh
 
Cảm ơn các Anh nhiều ạ; Sẵn tiện nhờ giúp em cộng các Merge & Center đây nữa với ạ
 

File đính kèm

Cảm ơn các Anh nhiều ạ; Sẵn tiện nhờ giúp em cộng các Merge & Center đây nữa với ạ
Sub CongCellMerge()
Dim Rw As Long, Col As Long

Application.ScreenUpdating = False
Range("R2").Activate
Col = ActiveCell.Column
Do Until ActiveCell.Offset(, -14) = ""
Rw = ActiveCell.Row
ActiveCell = WorksheetFunction.Sum(Range(Cells(Rw, Col - 5), Cells(Rw, Col - 2)))
ActiveCell.Offset(1).Activate
Loop
Application.ScreenUpdating = True
End Sub
 
Sub CongCellMerge()
Dim Rw As Long, Col As Long

Application.ScreenUpdating = False
Range("R2").Activate
Col = ActiveCell.Column
Do Until ActiveCell.Offset(, -14) = ""
Rw = ActiveCell.Row
ActiveCell = WorksheetFunction.Sum(Range(Cells(Rw, Col - 5), Cells(Rw, Col - 2)))
ActiveCell.Offset(1).Activate
Loop
Application.ScreenUpdating = True
End Sub
có cách nào để khỏi phải refresh ko ạ. Tức thay đổi số liệu là tự động cộng luôn. Mặc định cột R là Sum hết chứ ko cần phải mất công bôi đen
 
1. Nhờ anh *1.000đ vào ô giúp em với ạ. (hiển thị số nghìn đồng)
2. Nhờ anh mặc định hết cả cột R giúp em. Mặc định ô merge R = Tổng các ô Merge M + N + O + P
3. Cho em hỏi câu ngoài lề, có cách nào để liên kết Marco tự động copy và chạy module ko ạ
Cảm ơn và biết ơn các Anh ở group nhiều đã bỏ thời gian ra giải quyết các vấn đề công việc giúp em. Em muốn học về khai báo Dim Rw As Long, Col As Long ... thì học ở đâu ạ. Xin được hướng dẫn tài liệu giúp em ạ
 
1. Nhờ anh *1.000đ vào ô giúp em với ạ. (hiển thị số nghìn đồng)
2. Nhờ anh mặc định hết cả cột R giúp em. Mặc định ô merge R = Tổng các ô Merge M + N + O + P
3. Cho em hỏi câu ngoài lề, có cách nào để liên kết Marco tự động copy và chạy module ko ạ
Cảm ơn và biết ơn các Anh ở group nhiều đã bỏ thời gian ra giải quyết các vấn đề công việc giúp em. Em muốn học về khai báo Dim Rw As Long, Col As Long ... thì học ở đâu ạ. Xin được hướng dẫn tài liệu giúp em ạ
1. Không hiểu nhân 1000 sao phải nhờ?
2. Mặc định cả cột để làm gì? hiện tại mặc định cứ cột D có dữ liệu đến đâu thì code có tác dụng đến đó
3. Macro tự động copy nào? Muốn nói gì thì bày cái file ra đây!
Học trên mạng, search google đầy.
 
1. Không hiểu nhân 1000 sao phải nhờ?
2. Mặc định cả cột để làm gì? hiện tại mặc định cứ cột D có dữ liệu đến đâu thì code có tác dụng đến đó
3. Macro tự động copy nào? Muốn nói gì thì bày cái file ra đây!
Học trên mạng, search google đầy.
Anh cho em số zalo được ko ạ? Em cứ phải chờ nhiều thời gian để được trả lời lâu quá anh à
 
Có bạn sắp thành Bác sĩ riêng rồi, thân chủ mà ới thì tới liền.
 
Anh @Hoàng Tuấn 868 cho em cái code mà làm khổ thằng em.
Code của anh ở link quá ok rồi, nhưng mỗi lần áp dụng cứ phải Alt + F11, sau đó copy code vào module mất công :bounce:
 
Lần chỉnh sửa cuối:
Có cách nào để bấm vào macro là tự động chạy code của anh ko; em toàn phải copy code của anh vào đây thì mới chạy được
Á à là cái bạn có cái bài mà mình bỏ thời gian ngồi code cho xong không í ới gì hết đây à
 
Mọi người ngủ rồi ạ %$$ xem cho em file trên với
 
Ý mình là bài mà bạn "trời, giờ mình mới thấy bài trả lời của bạn. " đây cơ, bạn nhờ gì?
 
VBA dành cho bạn:
Sub CongCellMerge()
Dim Rw As Long, Rws As Long, Col As Long

Application.ScreenUpdating = False
Range("B1").Activate
Col = ActiveCell.Column
Do Until ActiveCell.Offset(, -1) = ""
Rw = ActiveCell.Row
Rws = Selection.Rows.Count
ActiveCell = WorksheetFunction.Sum(Range(Cells(Rw, Col - 1), Cells(Rw + Rws - 1, Col - 1)))
ActiveCell.Offset(1).Activate
Loop
Application.ScreenUpdating = True
End Sub
Mà thực ra bài này thì thế này là đủ bác ạ:
Mã:
Sub abc()
Dim Cll As Range
For Each Cll In Sheets("Sheet1").Range("B1:B26")
    Cll.Value = Application.WorksheetFunction.Sum(Cll.MergeArea.Offset(, -1).Resize(Cll.MergeArea.Rows.Count, 1))
Next
End Sub
Còn bài mới của thớt thì lười quá, thớt tự vận dụng vậy
 
Ngoài module anh đã tạo, anh có thể giải thích cho em đoạn code anh tạo trong sheet 1 được ko ạ. (Nhờ có đoạn code này mà em đỡ mất công F5 liên tục), tuy nhiên vì đặc thù công việc phải Import file excel ra liên tục, anh có thể đính kèm đoạn code này của anh vô trong marco hoặc gộp vô module luôn được không ạ?

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 1 And Target.Row <= Range("D65536").End(xlUp).Row And Target.Column > 12 And Target.Column < 17 Then
Range("R" & Target.Row) = WorksheetFunction.Sum(Range(Cells(Target.Row, 13), Cells(Target.Row, 16)))
End If
End Sub
Bài đã được tự động gộp:

Mà thực ra bài này thì thế này là đủ bác ạ:
Mã:
Sub abc()
Dim Cll As Range
For Each Cll In Sheets("Sheet1").Range("B1:B26")
    Cll.Value = Application.WorksheetFunction.Sum(Cll.MergeArea.Offset(, -1).Resize(Cll.MergeArea.Rows.Count, 1))
Next
End Sub
Còn bài mới của thớt thì lười quá, thớt tự vận dụng vậy
điền 1 con số lại phải bấm lệnh mới ra được đáp số nên mất công quá anh
 
Ngoài module anh đã tạo, anh có thể giải thích cho em đoạn code anh tạo trong sheet 1 được ko ạ. (Nhờ có đoạn code này mà em đỡ mất công F5 liên tục), tuy nhiên vì đặc thù công việc phải Import file excel ra liên tục, anh có thể đính kèm đoạn code này của anh vô trong marco hoặc gộp vô module luôn được không ạ?

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 1 And Target.Row <= Range("D65536").End(xlUp).Row And Target.Column > 12 And Target.Column < 17 Then
Range("R" & Target.Row) = WorksheetFunction.Sum(Range(Cells(Target.Row, 13), Cells(Target.Row, 16)))
End If
End Sub
Bài đã được tự động gộp:


điền 1 con số lại phải bấm lệnh mới ra được đáp số nên mất công quá anh


Việc chép đoạn code này vào trang code VBA mà không làm được sao bạn? Tuy nhiên đoạn này chỉ có giá trị với trang trong file tôi gửi, không chép chỗ khác được.
 
Lần chỉnh sửa cuối:
Việc chép đoạn code này vào trang code VBA mà không làm được sao bạn? Tuy nhiên đoạn này chỉ có giá trị với trang trong file tôi gửi, không chép chỗ khác được.
không chép chỗ khác được thì rốt cuộc cũng không giải quyết được vấn đề anh
 
Đổi
Col = ActiveCell.Column
Range("B1").Activate
thành
Range("B1").Activate
Col = ActiveCell.Column
mới đúng nhé anh
Sub CongCellMerge()
Dim Rw As Long, Rws As Long, Col As Long

Application.ScreenUpdating = False
Range("T1").Activate
Col = ActiveCell.Column
Do Until ActiveCell.Offset(, -1) = ""
Rw = ActiveCell.Row
Rws = Selection.Rows.Count
ActiveCell = WorksheetFunction.Sum(Range(Cells(Rw, Col - 1), Cells(Rw + Rws - 1, Col - 1)))
ActiveCell.Offset(1).Activate
Loop
Application.ScreenUpdating = True
End Sub



Mỗi lần em nhập số liệu lại phải mất công click chạy code thì mới ra được kết quả. Có cách nào để code trên tự động cộng khi mình nhập liệu không ạ
Bài đã được tự động gộp:

Đề bài không ra ngay từ đầu, cứ thêm lắt nhắt nên không có hứng sửa.
Hic anh cho em xin zalo được không ạ :=\+
 
Chúc Anh ngủ ngon.
 

File đính kèm

  • 111.jpg
    111.jpg
    49.3 KB · Đọc: 6
Mà thực ra bài này thì thế này là đủ bác ạ:
Mã:
Sub abc()
Dim Cll As Range
For Each Cll In Sheets("Sheet1").Range("B1:B26")
    Cll.Value = Application.WorksheetFunction.Sum(Cll.MergeArea.Offset(, -1).Resize(Cll.MergeArea.Rows.Count, 1))
Next
End Sub
Còn bài mới của thớt thì lười quá, thớt tự vận dụng vậy
Bác sửa cho em chỉ cần nhập số liệu là tự động ra kết quả luôn được ko ạ!
 

Bài viết mới nhất

Back
Top Bottom