MERGE các hàng lại với nhau

  • Thread starter Thread starter LOIKS
  • Ngày gửi Ngày gửi
Liên hệ QC

LOIKS

Thành viên chính thức
Tham gia
10/8/18
Bài viết
97
Được thích
7
chào mọi người
cho mình hỏi là làm sao có thể merge một hàng tổng khi biết được số hàng con nhỉ, số hàng con có thể thay đổi ít đi hoặc tăng lên
mọi người có thể xem sheet" KET QUA" ở file đinh kèm nhé
 

File đính kèm

tạm vậy đi
Mã:
Sub merge()
Dim LR As Long, i As Long, Arr As Range, Rng As Range
LR = Sheets("du lieu").Cells(Rows.Count, "B").End(xlUp).Row
Set Arr = Sheets("du lieu").Range("B2:B" & LR)
For Each Rng In Arr
    With Sheets("du lieu")
        If Rng = .Range("M2") Or Rng = .Range("N2") Or Rng = .Range("O2") Then
            Rng.Offset(0, -1).Value = "A11"
        End If
        If Rng = .Range("M3") Or Rng = .Range("N3") Or Rng = .Range("O3") Then
            Rng.Offset(0, -1).Value = "A12"
        End If
    End With
Next Rng
'-------------meger
Application.DisplayAlerts = False
For i = LR To 2 Step -1
    With Sheets("du lieu")
        If Cells(i, "A") = Cells(i + 1, "A") Then
            Range(Cells(i, "A"), Cells(i + 1, "A")).merge
        End If
    End With
Next i
Application.DisplayAlerts = True
Set Arr = Nothing
End Sub
 
tạm vậy đi
Mã:
Sub merge()
Dim LR As Long, i As Long, Arr As Range, Rng As Range
LR = Sheets("du lieu").Cells(Rows.Count, "B").End(xlUp).Row
Set Arr = Sheets("du lieu").Range("B2:B" & LR)
For Each Rng In Arr
    With Sheets("du lieu")
        If Rng = .Range("M2") Or Rng = .Range("N2") Or Rng = .Range("O2") Then
            Rng.Offset(0, -1).Value = "A11"
        End If
        If Rng = .Range("M3") Or Rng = .Range("N3") Or Rng = .Range("O3") Then
            Rng.Offset(0, -1).Value = "A12"
        End If
    End With
Next Rng
'-------------meger
Application.DisplayAlerts = False
For i = LR To 2 Step -1
    With Sheets("du lieu")
        If Cells(i, "A") = Cells(i + 1, "A") Then
            Range(Cells(i, "A"), Cells(i + 1, "A")).merge
        End If
    End With
Next i
Application.DisplayAlerts = True
Set Arr = Nothing
End Sub
cảm ơn bạn nhé,cho mình hỏi là 2 code này ý nghĩa là gì hả bạn ?
LR = Sheets("du lieu").Cells(Rows.Count, "B").End(xlUp).Row
Set Arr = Sheets("du lieu").Range("B2:B" & LR)
 
cảm ơn bạn nhé,cho mình hỏi là 2 code này ý nghĩa là gì hả bạn ?
LR = Sheets("du lieu").Cells(Rows.Count, "B").End(xlUp).Row
Set Arr = Sheets("du lieu").Range("B2:B" & LR)
Mã:
LR = Sheets("du lieu").Cells(Rows.Count, "B").End(xlUp).Row '==> Dòng cuối cùng có dữ liệu của cột B
Set Arr = Sheets("du lieu").Range("B2:B" & LR) ' ==> đặt biến mảng thôi
 
tạm vậy đi
Mã:
Sub merge()
Dim LR As Long, i As Long, Arr As Range, Rng As Range
LR = Sheets("du lieu").Cells(Rows.Count, "B").End(xlUp).Row
Set Arr = Sheets("du lieu").Range("B2:B" & LR)
For Each Rng In Arr
    With Sheets("du lieu")
        If Rng = .Range("M2") Or Rng = .Range("N2") Or Rng = .Range("O2") Then
            Rng.Offset(0, -1).Value = "A11"
        End If
        If Rng = .Range("M3") Or Rng = .Range("N3") Or Rng = .Range("O3") Then
            Rng.Offset(0, -1).Value = "A12"
        End If
    End With
Next Rng
'-------------meger
Application.DisplayAlerts = False
For i = LR To 2 Step -1
    With Sheets("du lieu")
        If Cells(i, "A") = Cells(i + 1, "A") Then
            Range(Cells(i, "A"), Cells(i + 1, "A")).merge
        End If
    End With
Next i
Application.DisplayAlerts = True
Set Arr = Nothing
End Sub
trongbaif chỉ có 2 "STT" nếu có tới 10 "STT" thì đoạn code này phải làm 10 lần hả bạn?
If Rng = .Range("M2") Or Rng = .Range("N2") Or Rng = .Range("O2") Then
Rng.Offset(0, -1).Value = "A11"
End If
If Rng = .Range("M3") Or Rng = .Range("N3") Or Rng = .Range("O3") Then
Rng.Offset(0, -1).Value = "A12"
 
trongbaif chỉ có 2 "STT" nếu có tới 10 "STT" thì đoạn code này phải làm 10 lần hả bạn?
If Rng = .Range("M2") Or Rng = .Range("N2") Or Rng = .Range("O2") Then
Rng.Offset(0, -1).Value = "A11"
End If
If Rng = .Range("M3") Or Rng = .Range("N3") Or Rng = .Range("O3") Then
Rng.Offset(0, -1).Value = "A12"
sửa lại thành
Mã:
Sub merge()
Dim LR As Long, i As Long, Arr As Range, Rng As Range
Dim k As Long, LR1 As Long
LR1 = Sheets("du lieu").Cells(Rows.Count, "L").End(xlUp).Row
LR = Sheets("du lieu").Cells(Rows.Count, "B").End(xlUp).Row
Set Arr = Sheets("du lieu").Range("B2:B" & LR)
For Each Rng In Arr
    With Sheets("du lieu")
        For k = 2 To LR1
            If Rng = .Range("M" & k) Or Rng = .Range("N" & k) Or Rng = .Range("O" & k) Then
                Rng.Offset(0, -1).Value = .Range("L" & k)
            End If
        Next k
    End With
Next Rng
'-------------meger
Application.DisplayAlerts = False
For i = LR To 2 Step -1
    With Sheets("du lieu")
        If .Cells(i, "A") = .Cells(i - 1, "A") Then
            .Range(Cells(i, "A"), Cells(i - 1, "A")).merge
        End If
    End With
Next i
Application.DisplayAlerts = True
Set Arr = Nothing
End Sub
 
Lần chỉnh sửa cuối:
sửa lại thành
Mã:
Sub merge()
Dim LR As Long, i As Long, Arr As Range, Rng As Range
Dim k As Long, LR1 As Long
LR1 = Sheets("du lieu").Cells(Rows.Count, "L").End(xlUp).Row
LR = Sheets("du lieu").Cells(Rows.Count, "B").End(xlUp).Row
Set Arr = Sheets("du lieu").Range("B2:B" & LR)
For Each Rng In Arr
    With Sheets("du lieu")
        For k = 2 To LR1
            If Rng = .Range("M" & k) Or Rng = .Range("N" & k) Or Rng = .Range("O" & k) Then
                Rng.Offset(0, -1).Value = .Range("L" & k)
            End If
        Next k
    End With
Next Rng
'-------------meger
Application.DisplayAlerts = False
For i = LR To 2 Step -1
    With Sheets("du lieu")
        If .Cells(i, "A") = .Cells(i - 1, "A") Then
            .Range(Cells(i, "A"), Cells(i - 1, "A")).merge
        End If
    End With
Next i
Application.DisplayAlerts = True
Set Arr = Nothing
End Sub
cảm ơn nha
mà code này nó có ý nghĩa gì vậy bạn ?
Rng.Offset(0, -1).Value = .Range("L" & k)
 
bạn ơi hiện tại code mà bạn viết nó chỉ Merge theo số lượng cấu kiện ví dụ số lượng cấu kiện là 3 thì nó chỉ merge là 3,mà nó không thể nào nhận định được tên cấu kiện
bạn có thể giúp mình làm cho nó nhận định được tên cấu kiện để merge ko ?
cảm ơn bạn nhé
 

File đính kèm

bạn ơi hiện tại code mà bạn viết nó chỉ Merge theo số lượng cấu kiện ví dụ số lượng cấu kiện là 3 thì nó chỉ merge là 3,mà nó không thể nào nhận định được tên cấu kiện
bạn có thể giúp mình làm cho nó nhận định được tên cấu kiện để merge ko ?
cảm ơn bạn nhé
Minh ko hiểu ý bạn lắm. Nghĩa là tên cấu kiện không liền nhau đúng ko?
 
đúng rồi bạn, dữ liệu ở cột "B"sau khi merge nó phải liền nhau, bạn có thể tham khảo sheet"KET QUA mong muon" mà mình gửi kèm theo
vậy thêm 1 bước sort nữa trước khi chạy đoạn code merge là được mà, bạn biết record macro chứ?
 
Web KT

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

Back
Top Bottom