Chèn thêm các dòng vào các hàng liền kề nhau và gán giá trị lấy từ Sheet Option. Mình xin cám ơn!
Sub chen()
Dim dl(), kq(), i, j, k
dl = Range([A5], [A65536].End(3)).Resize(, 5).Value
ReDim kq(1 To UBound(dl) * 5, 1 To 5)
For i = 1 To UBound(dl)
For j = 1 To 4
kq(k + 1, j) = dl(i, j)
kq(k + 1 + j, 3) = "Thang 1 -" & 2008 + j
Next
k = k + 5
Next
[A5].Resize(k - 1, 5) = kq
End Sub
Bạn xem file coi đúng ý chưa
PHP:Sub chen() Dim dl(), kq(), i, j, k dl = Range([A5], [A65536].End(3)).Resize(, 5).Value ReDim kq(1 To UBound(dl) * 5, 1 To 5) For i = 1 To UBound(dl) For j = 1 To 4 kq(k + 1, j) = dl(i, j) kq(k + 1 + j, 3) = "Thang 1 -" & 2008 + j Next k = k + 5 Next [A5].Resize(k - 1, 5) = kq End Sub
Bạn thay code này vào sễ lấy được dữ liệu của ô B1:B4Mình cám ơn bạn. Nhưng bạn có thể sửa lại cho mình là lấy dự liệu ở Sheet option và link sang được không?
Sub chen()
Dim dl(), kq(), i, j, k, noidungchen
dl = Range([A5], [A65536].End(3)).Resize(, 5).Value
noidungchen = Sheet2.[b1:b4].Value
ReDim kq(1 To UBound(dl) * 5, 1 To 5)
For i = 1 To UBound(dl)
For j = 1 To 4
kq(k + 1, j) = dl(i, j)
kq(k + 1 + j, 3) = noidungchen(j, 1)
Next
k = k + 5
Next
[A5].Resize(k - 1, 5) = kq
End Sub
Tạm sửa thế nàyEm sửa code của anh "quanghai1969" ở bài #5 cho bài của mình nhưng khi chạy không ra được kết quả như mong muốn.
Nhờ anh "quanghai1969" và các ACE GPE xem sửa lại code giúp em trong file đính kèm.
Chân thành cảm ơn
Sub chen1()
Dim dl(), kq(), i, j, k, chen, C
dl = Range([B4], [B65536].End(3)).Resize(, 3).Value
chen = Sheet6.Range(Sheet6.[E1], Sheet6.[E65536].End(3)).Value
C = UBound(chen)
ReDim kq(1 To UBound(dl) * C, 1 To C)
For i = 1 To UBound(dl)
For j = 1 To C
If j < C Then kq(k + 1, j) = dl(i, j)
kq(k + j, C) = chen(j, 1)
Next
k = k + C
Next
[B4].Resize(k, C) = kq
End Sub
Option Explicit
Sub MergeCells()
Dim Rws As Long, J As Long
Rws = [d65500].End(xlUp).Row
For J = 4 To Rws Step 3
With Cells(J, "A")
.Value = (J - 1) \ 3
.Resize(3).MergeCells = True
.Offset(, 1).Resize(3).MergeCells = True
End With
Next J
End Sub
Viết cho bạn 1 code hoàn chỉnh theo cấu trúc file của bạn đây.Cảm ơn anh "quanghai1969".
Anh ơi, sau khi chèn dòng và dữ liệu vào rồi. Giờ Em muốn Merge ở cột A, B, C lại tưng ứng với nhóm dữ liệu đã chèn vào ở cột D và đánh số thứ tự ở cột A.
Anh "quanghai1969" và ACE GPE giúp em nhé.
Xin cảm ơn!
Sub chendong()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim chen(), I, II, J, K, Data(), kq(1 To 1000, 1 To 4), MerRng As Range
With Sheets("DM")
chen = .Range(.[E1], .[E65536].End(3)).Value
End With
With Sheets("chen")
Data = .Range(.[A4], .[C65536].End(3)).Value
For I = 1 To UBound(Data)
For J = 1 To 3
For II = 1 To UBound(chen)
kq(K + II, J) = Data(I, J)
kq(K + II, 4) = chen(II, 1)
Next
Next
K = K + UBound(chen)
Next
.[A4].Resize(K, 4) = kq
Set MerRng = .Range(.[A4], .[A65536].End(3))
End With
For I = 1 To Application.Max(MerRng)
With MerRng
.AutoFilter 1, I
.SpecialCells(12).MergeCells = True
.Offset(, 1).MergeCells = True
.Offset(, 2).MergeCells = True
.AutoFilter
End With
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Sửa code lại thế này chắc là đượcCảm ơn bác "quanghai1969".
Trong cấu trúc dữ liệu của em, cột A:C thường thì em lọc và copy ở nơi khác qua nên số thứ tự sẽ không tuần tự từ 1, 2, ...
Bác "Quanghai1969" cùng ACE giúp em thêm: đánh số thứ tự lại cho cột A nhé.
Xin chân thành cảm ơn!
Sub chendong()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim chen(), I, II, J, K, Data(), kq(1 To 1000, 1 To 4), MerRng As Range
With Sheets("DM")
chen = .Range(.[E1], .[E65536].End(3)).Value
End With
With Sheets("chen")
Data = .Range(.[A4], .[C65536].End(3)).Value
For I = 1 To UBound(Data)
For J = 2 To 3
For II = 1 To UBound(chen)
kq(K + II, J) = Data(I, J)
kq(K + II, 4) = chen(II, 1)
kq(K + II, 1) = I
Next
Next
K = K + UBound(chen)
Next
.[A4].Resize(K, 4) = kq
Set MerRng = .Range(.[A4], .[A65536].End(3))
End With
For I = 1 To Application.Max(MerRng)
With MerRng
.AutoFilter 1, I
.SpecialCells(12).MergeCells = True
.Offset(, 1).MergeCells = True
.Offset(, 2).MergeCells = True
.AutoFilter
End With
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub