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 ?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)
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
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?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
sửa lại thànhtrongbaif 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"
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
i= LR -1For i = LR To 2 Step -1
em cảm ơn anh ại= LR -1
cảm ơn nhasử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
từ Rng lùi lại "1" cột và "0" dòng, đặt giá trị của ô đó là bằng ".Range("L" & k)"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)
Em tưởng cái Arr là Range chứ. Sao nó lại là mảng ạ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
Srr là RangeEm tưởng cái Arr là Range chứ. Sao nó lại là mảng ạ
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ệnSrr là Range
Minh ko hiểu ý bạn lắm. Nghĩa là tên cấu kiện không liền nhau đúng ko?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é
Hị hị trên Excel tối kỵ là hòa ô mừ anhMinh 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 theoMinh ko hiểu ý bạn lắm. Nghĩa là tên cấu kiện không liền nhau đúng ko?
Cảm ơn nhé. Thực ra file của mình cũng ít khi mẻge lắmHị hị trên Excel tối kỵ là hòa ô mừ anh
Dạ. Em cũng theo dõi Topic này từ khi Chủ Topic đăng bài. Nhưng em thấy cái gì gì ấy (Khó nói). Vì thấy Anh khổ cực em nhắc vậy thui. Có gì anh bỏ qua cho em nhaCảm ơn nhé. Thực ra file của mình cũng ít khi mẻge lắm
Khổ gì đâu. Thời gian rảnh nen mình chon làm những gì mình thích thôi màDạ. Em cũng theo dõi Topic này từ khi Chủ Topic đăng bài. Nhưng em thấy cái gì gì ấy (Khó nói). Vì thấy Anh khổ cực em nhắc vậy thui. Có gì anh bỏ qua cho em nha
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ứ?đú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