Làm thử một ví dụ đi bạnChà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
Làm thử một ví dụ đi bạn
e ví dụ như dòng 25 trở xuống như trong file rùi bácLàm thử một ví dụ đi bạn
Hiểu rồi bạn. Nêu vây thì dung VBA cho nhanh có được hay khônge ví dụ như dòng 25 trở xuống như trong file rùi bác
Nếu làm lệnh này mà kéo dài xuống thì giá trị ko đúng bác ạThử công thức này tại A2:
=IF(B2="",A1,B2)
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….Hiểu rồi bạn. Nêu vây thì dung VBA cho nhanh có được hay không
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ảm ơn bác nhé@uronbeo
Với dữ liệu bắt đầu từ B25, kết quả điền vào cột A
Công thức của bài 2 có sai đâu bạnMã: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
đáng nhẽ nếu muốn thì phải thêm thế này chứ mới đúng yêu cầu màcảm ơn bác nhé
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 ạđá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
đây mà đúng mà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
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!đá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
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 mà đúng mà
đâ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é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)
bạn sửa theo code này 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é
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