Cách để dữ liệu ở ô sau khi gộp vào sẽ giống như ô đã merge trước đó (1 người xem)

Liên hệ QC

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

Ngo_Ngoc_Diep

Thành viên mới
Tham gia
23/9/19
Bài viết
7
Được thích
0
Em có 1 file bảng kê bán hàng, cần đánh STT và tính tổng tiền các hóa đơn theo mẫu ở ảnh 2
Tuy nhiên em đang không biết làm thế nào để tính tổng thành tiền theo số hóa đơn (ảnh 1) mà các ô nó được gộp lại theo số hóa đơn giống như ở cột STT
Có bác nào có phương án chỉ giúp em với ạ! File excel em đính kèm bên dưới ạ
Em cảm ơn nhiều!!!!
 

File đính kèm

  • ảnh 1.PNG
    ảnh 1.PNG
    38.8 KB · Đọc: 40
  • ảnh 2.PNG
    ảnh 2.PNG
    40.1 KB · Đọc: 38
  • Book1.xlsx
    Book1.xlsx
    9.6 KB · Đọc: 16
Lần chỉnh sửa cuối:
Em có 1 file bảng kê bán hàng, cần đánh STT và tính tổng tiền các hóa đơn theo mẫu ở ảnh 2
Tuy nhiên em đang không biết làm thế nào để tính tổng thành tiền theo số hóa đơn (ảnh 1) mà các ô nó được gộp lại theo số hóa đơn giống như ở cột STT
Có bác nào có phương án chỉ giúp em với ạ! File excel em đính kèm bên dưới ạ
Em cảm ơn nhiều!!!!
Thử công thức dưới đây vào G2, Fill xuống rồi chọn những Cell giống nhau trong cột G và click vào Merge&Center

G2 =SUMIF($B$2:$B$19,$B2,$F$2:$F$19)
 
Lần chỉnh sửa cuối:
Em có 1 file bảng kê bán hàng, cần đánh STT và tính tổng tiền các hóa đơn theo mẫu ở ảnh 2
Tuy nhiên em đang không biết làm thế nào để tính tổng thành tiền theo số hóa đơn (ảnh 1) mà các ô nó được gộp lại theo số hóa đơn giống như ở cột STT
Có bác nào có phương án chỉ giúp em với ạ! File excel em đính kèm bên dưới ạ
Em cảm ơn nhiều!!!!
Thử công thức dưới đây
Mã:
G2=IF(COUNTIF($B$2:B2,B2)<COUNTIF($B$2:$B$19,B2),"",SUMIF($B$2:$B$19,B2,$F$2:$F$19))
copy xuống dưới
 
Copy A2:A19 dán vào G2 sau đó nhập công thức sau rồi nhấn Ctrl + Enter:
Mã:
=SUM(F2:$F$20)-SUM(G3:$G$20)
 
Thử công thức dưới đây vào G2, Fill xuống rồi chọn những Cell giống nhau trong cột G và click vào Merge&Center

G2 =SUMIF($B$2:$B$19,$B2,$F$2:$F$19)
Em cảm ơn ạ, nhưng mà nếu bảng tính có ít thì em merge thủ công ntn được nhưng mà nó lên đến vài trăm hóa đơn 1 tháng thì ngồi merge từng cái như này thì cũng k khả quan lắm :fish:
Bài đã được tự động gộp:

Copy A2:A19 dán vào G2 sau đó nhập công thức sau rồi nhấn Ctrl + Enter:
Mã:
=SUM(F2:$F$20)-SUM(G3:$G$20)
Em đã thử nhưng lại không ra kết quả chính xác ạ?
 
Em cảm ơn ạ, nhưng mà nếu bảng tính có ít thì em merge thủ công ntn được nhưng mà nó lên đến vài trăm hóa đơn 1 tháng thì ngồi merge từng cái như này thì cũng k khả quan lắm.
Công thức trên chỉ là ý tưởng để viết thêm một đoạn code, khi chạy code thì nó tự gộp vào, vì nó còn dò Số HĐ để gán dữ liệu cho chính xác việc này rảnh thì tôi sẽ giúp sau.
 
Công thức trên chỉ là ý tưởng để viết thêm một đoạn code, khi chạy code thì nó tự gộp vào, việc này rảnh thì tôi sẽ giúp sau.
Dạ vâng, em cảm ơn nhiều ạ!
Bài đã được tự động gộp:

Thử công thức dưới đây
Mã:
G2=IF(COUNTIF($B$2:B2,B2)<COUNTIF($B$2:$B$19,B2),"",SUMIF($B$2:$B$19,B2,$F$2:$F$19))
copy xuống dưới
Em cảm ơn ạ, nhưng ngoài tính tổng thì em cũng cần gộp các ô lại để được 1 cái bảng theo mẫu như ảnh 2 ấy ạ, em đang loay hoay vụ gộp ô này kb xử lý ntn, nếu có ít thì em merge thủ công bằng tay được nhưng nếu nhiều thì ngồi merge từng cái như này rất mất thời gian nên mới muốn hỏi xem có cách nào hơn không
 
Lần chỉnh sửa cuối:
Em có 1 file bảng kê bán hàng, cần đánh STT và tính tổng tiền các hóa đơn theo mẫu ở ảnh 2
Tuy nhiên em đang không biết làm thế nào để tính tổng thành tiền theo số hóa đơn (ảnh 1) mà các ô nó được gộp lại theo số hóa đơn giống như ở cột STT
Có bác nào có phương án chỉ giúp em với ạ! File excel em đính kèm bên dưới ạ
Em cảm ơn nhiều!!!!
Copy code này cho vào 1 module rồi chạy thử
Mã:
Sub Merge_Cells()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim Dic As Object, sArr(), i As Long, tmp As String, sRange As Range, tam
Set Dic = CreateObject("scripting.dictionary")
sArr = Range([B2], [B65536].End(3)).Resize(, 6).Value
Set sRange = Range([B2], [B65536].End(3))
For i = 1 To UBound(sArr)
   tmp = sArr(i, 1)
   Dic(tmp) = Dic.item(tmp) + sArr(i, 5)
   tam = Dic.item(tmp)
Next
tam = Dic.keys
For i = UBound(tam) To 0 Step -1
   With sRange
      .AutoFilter 1, tam(i)
      .Offset(, 5).MergeCells = True
      .Offset(, 5).Value = Dic.item(tam(i))
      .Offset(, 5).VerticalAlignment = xlCenter
      .Offset(, 5).HorizontalAlignment = xlCenter
      .AutoFilter
   End With
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
 

File đính kèm

Copy code này cho vào 1 module rồi chạy thử
Mã:
Sub Merge_Cells()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim Dic As Object, sArr(), i As Long, tmp As String, sRange As Range, tam
Set Dic = CreateObject("scripting.dictionary")
sArr = Range([B2], [B65536].End(3)).Resize(, 6).Value
Set sRange = Range([B2], [B65536].End(3))
For i = 1 To UBound(sArr)
   tmp = sArr(i, 1)
   Dic(tmp) = Dic.item(tmp) + sArr(i, 5)
   tam = Dic.item(tmp)
Next
tam = Dic.keys
For i = UBound(tam) To 0 Step -1
   With sRange
      .AutoFilter 1, tam(i)
      .Offset(, 5).MergeCells = True
      .Offset(, 5).Value = Dic.item(tam(i))
      .Offset(, 5).VerticalAlignment = xlCenter
      .Offset(, 5).HorizontalAlignment = xlCenter
      .AutoFilter
   End With
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Em cảm ơn rất nhiều ạ, em chạy thử code ở file ban đầu thì rất ok nhưng sang đến dữ liệu này thì bị lỗi ở dòng đầu tiên (em có highlight vàng ạ), Anh có thể xem giúp em được không ạ?
 

File đính kèm

Bạn sửa code Tron_Cell() chổ B1 thành B2 thử coi.
 
Em có 1 file bảng kê bán hàng, cần đánh STT và tính tổng tiền các hóa đơn theo mẫu ở ảnh 2
Tuy nhiên em đang không biết làm thế nào để tính tổng thành tiền theo số hóa đơn (ảnh 1) mà các ô nó được gộp lại theo số hóa đơn giống như ở cột STT
Có bác nào có phương án chỉ giúp em với ạ! File excel em đính kèm bên dưới ạ
Em cảm ơn nhiều!!!!
MergeCel tự động phải dùng VBA
Mã:
Sub MergeCel()
  Dim eRow&, fRow&, i&
  Dim SoHD$, Tong#
  With Sheet1
    eRow = .Range("B" & Rows.Count).End(xlUp).Row
    If eRow < 3 Then Exit Sub
    .Range("G2:G" & eRow).MergeCells = False
    .Range("G2:G" & eRow).ClearContents
    For i = 2 To eRow
      If .Cells(i, 2).Value <> SoHD Then
        fRow = i
        SoHD = .Cells(i, 2).Value
      End If
      Tong = Tong + .Cells(i, 6).Value
      If .Cells(i + 1, 2).Value <> SoHD Then
        .Cells(fRow, 7).Value = Tong
        Tong = 0
        If i > fRow Then
          .Range(.Cells(fRow, 7), .Cells(i, 7)).MergeCells = True
          .Range(.Cells(fRow, 7), .Cells(i, 7)).VerticalAlignment = xlCenter
        End If
      End If
    Next i
    .Range("G2:G" & eRow).Borders.LineStyle = 1
  End With
End Sub
 
Em cảm ơn ạ, nhưng ngoài tính tổng thì em cũng cần gộp các ô lại để được 1 cái bảng theo mẫu như ảnh 2 ấy ạ, em đang loay hoay vụ gộp ô này kb xử lý ntn, nếu có ít thì em merge thủ công bằng tay được nhưng nếu nhiều thì ngồi merge từng cái như này rất mất thời gian nên mới muốn hỏi xem có cách nào hơn không
Bạn làm 2 bước sau
1. Thay công thức tại G2 như sau, copy xuống dưới.
Mã:
=IF(COUNTIF($B$2:B2,B2)>1,"",SUMIF($B$2:$B$19,B2,$F$2:$F$19))
2. Copy cột A từ A2 đến cuối cột -> Chuyển ô hiện hành sang G2 -> Nhấn alt+E+S+T -> nhấn enter -> nhấn Esc
 
MergeCel tự động phải dùng VBA
Mã:
Sub MergeCel()
  Dim eRow&, fRow&, i&
  Dim SoHD$, Tong#
  With Sheet1
    eRow = .Range("B" & Rows.Count).End(xlUp).Row
    If eRow < 3 Then Exit Sub
    .Range("G2:G" & eRow).MergeCells = False
    .Range("G2:G" & eRow).ClearContents
    For i = 2 To eRow
      If .Cells(i, 2).Value <> SoHD Then
        fRow = i
        SoHD = .Cells(i, 2).Value
      End If
      Tong = Tong + .Cells(i, 6).Value
      If .Cells(i + 1, 2).Value <> SoHD Then
        .Cells(fRow, 7).Value = Tong
        Tong = 0
        If i > fRow Then
          .Range(.Cells(fRow, 7), .Cells(i, 7)).MergeCells = True
          .Range(.Cells(fRow, 7), .Cells(i, 7)).VerticalAlignment = xlCenter
        End If
      End If
    Next i
    .Range("G2:G" & eRow).Borders.LineStyle = 1
  End With
End Sub
Em cảm ơn nhiều ạ :yahoo::hands::heart:
 
Làm không đến 1 phút mà nhiều người vẫn viết code nhỉ.
 
Web KT

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

Back
Top Bottom