Merge center chuyển về hàng dọc

Liên hệ QC

uronbeo

Thành viên mới
Tham gia
2/6/12
Bài viết
31
Được thích
0
Chào các bác, em có 1 file như đính kèm đã merge center.
Em muốn chuyển về thành hang dọc thì làm thế nào ạ.
Xin các bác giúp em với.
Em cảm ơn
 

File đính kèm

Thử công thức này tại A2:

=IF(B2="",A1,B2)
 
Thử công thức này tại A2:

=IF(B2="",A1,B2)
Nếu làm lệnh này mà kéo dài xuống thì giá trị ko đúng bác ạ
Bài đã được tự động gộp:

Hiểu rồi bạn. Nêu vây thì dung VBA cho nhanh có được hay không
Hiểu rồi bạn. Nêu vây thì dung VBA cho nhanh có được hay không
dạ, bác giúp em với….
 
@uronbeo
Với dữ liệu bắt đầu từ B25, kết quả điền vào cột A
Mã:
Sub Macro1()
Dim Arr As Variant
Dim i As Long, j
With Sheet1
    i = .UsedRange.Rows.Count
    Arr = .Range("b25", "b" & i)
    For i = 1 To UBound(Arr)
        If Arr(i, 1) <> "" Then
            j = Arr(i, 1)
        Else
            Arr(i, 1) = j
        End If
    Next i
    .Range("a25").Resize(UBound(Arr), UBound(Arr, 2)) = Arr
End With
End Sub
Công thức của bài 2 có sai đâu bạn
 
@uronbeo
Với dữ liệu bắt đầu từ B25, kết quả điền vào cột A
Mã:
Sub Macro1()
Dim Arr As Variant
Dim i As Long, j
With Sheet1
    i = .UsedRange.Rows.Count
    Arr = .Range("b25", "b" & i)
    For i = 1 To UBound(Arr)
        If Arr(i, 1) <> "" Then
            j = Arr(i, 1)
        Else
            Arr(i, 1) = j
        End If
    Next i
    .Range("a25").Resize(UBound(Arr), UBound(Arr, 2)) = Arr
End With
End Sub
Công thức của bài 2 có sai đâu bạn
cảm ơn bác nhé
 
đáng nhẽ nếu muốn thì phải thêm thế này chứ mới đúng yêu cầu mà
Mã:
Sub Macro1()
Dim Arr As Variant
Dim i As Long, j
With Sheet1
    i = .UsedRange.Rows.Count
    Arr = .Range("b25", "b" & i)
    For i = 1 To UBound(Arr)
        If Arr(i, 1) <> "" Then
            Arr(i, 1) = Left(Arr(i, 1), 1) & "-" & Mid(Arr(i, 1), 2, 2) & "-" & Right(Arr(i, 1), 2)
            j = Arr(i, 1)
        Else
            Arr(i, 1) = j
        End If
    Next i
    .Range("c25").Resize(UBound(Arr), UBound(Arr, 2)) = Arr
End With
End Sub
 
đáng nhẽ nếu muốn thì phải thêm thế này chứ mới đúng yêu cầu mà
Mã:
Sub Macro1()
Dim Arr As Variant
Dim i As Long, j
With Sheet1
    i = .UsedRange.Rows.Count
    Arr = .Range("b25", "b" & i)
    For i = 1 To UBound(Arr)
        If Arr(i, 1) <> "" Then
            Arr(i, 1) = Left(Arr(i, 1), 1) & "-" & Mid(Arr(i, 1), 2, 2) & "-" & Right(Arr(i, 1), 2)
            j = Arr(i, 1)
        Else
            Arr(i, 1) = j
        End If
    Next i
    .Range("c25").Resize(UBound(Arr), UBound(Arr, 2)) = Arr
End With
End Sub
e thử chạy nó ra ko đúng ạ

A-02-06
->
A--0-06A--0-06A--0-06A--0-06A--0-06A--0-06A--0-06
 
đáng nhẽ nếu muốn thì phải thêm thế này chứ mới đúng yêu cầu mà
Mã:
Sub Macro1()
Dim Arr As Variant
Dim i As Long, j
With Sheet1
    i = .UsedRange.Rows.Count
    Arr = .Range("b25", "b" & i)
    For i = 1 To UBound(Arr)
        If Arr(i, 1) <> "" Then
            Arr(i, 1) = Left(Arr(i, 1), 1) & "-" & Mid(Arr(i, 1), 2, 2) & "-" & Right(Arr(i, 1), 2)
            j = Arr(i, 1)
        Else
            Arr(i, 1) = j
        End If
    Next i
    .Range("c25").Resize(UBound(Arr), UBound(Arr, 2)) = Arr
End With
End Sub
Tại thấy dòng 119:122 viết là : "dòng bị merge center sẽ chuyển vào từng dòng" nên gán sang luôn, không để ý dấu "-" của các dòng bên trên. Code của bạn mới là sát ví dụ nhất, Tks!
 
dòng 718-721 giá trị A12A01 nếu muốn chuyển thành A-12-A01 thì như thế nào được bác, kết quả bác chạy mất A (hoặc B)
đây là dữ liệu chạy theo mẫu ở trên còn bạn muốn thêm điều kiện thì bạn ghi ví dụ chứ.để mình xem nhé
 
đây là dữ liệu chạy theo mẫu ở trên còn bạn muốn thêm điều kiện thì bạn ghi ví dụ chứ.để mình xem nhé
bạn sửa theo code này nhé
Mã:
Sub Macro1()
Dim Arr As Variant
Dim i As Long, j
With Sheet1
    i = .UsedRange.Rows.Count
    Arr = .Range("b25", "b" & i)
    For i = 1 To UBound(Arr)
        If Arr(i, 1) <> "" Then
            Arr(i, 1) = Left(Arr(i, 1), 1) & "-" & Mid(Arr(i, 1), 2, 2) & "-" & Mid((Arr(i, 1)), 3, (Len(Arr(i, 1)) - 3))
            j = Arr(i, 1)
            
        Else
            Arr(i, 1) = j
        End If
    Next i
    .Range("c25").Resize(UBound(Arr), UBound(Arr, 2)) = Arr
End With
End Sub
 
Web KT

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

Back
Top Bottom