quangdiepctmbk
Thành viên hoạt động



- Tham gia
- 2/4/08
- Bài viết
- 169
- Được thích
- 52
- Nghề nghiệp
- Ky su



Bạn thử hàm này:Trước đây mình có nhờ các bạn trên diễn đàn làm phần xâu chuỗi ký tự và loại bỏ số 0, nhưng do dữ liệu có sự thay đổi nên mình có mong muốn bổ sung ở khung màu vàng.
Các bạn xem và giúp mình nhé.
Function NoiChuoi(ByVal Rng As Range, ByVal C As String) As String
Dim Arr, i As Long, j As Long
If Rng.Count = 1 Then
ReDim Arr(1 To 1, 1 To 1)
Arr(1, 1) = Rng.Value
Else
Arr = Rng.Value
End If
For i = 1 To UBound(Arr, 2)
For j = 1 To UBound(Arr, 1)
If Arr(j, i) <> "" Then NoiChuoi = NoiChuoi & C & Arr(j, i)
Next
Next
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "(" & C & "|-)0+"
NoiChuoi = .Replace(NoiChuoi, "$1")
End With
NoiChuoi = Replace(NoiChuoi, C, "", 1, 1)
End Function
=NoiChuoi(B3:B9,";")



Bạn thử hàm này:
Với công thức:PHP:Function NoiChuoi(ByVal Rng As Range, ByVal C As String) As String Dim Arr, i As Long, j As Long If Rng.Count = 1 Then ReDim Arr(1 To 1, 1 To 1) Arr(1, 1) = Rng.Value Else Arr = Rng.Value End If For i = 1 To UBound(Arr, 2) For j = 1 To UBound(Arr, 1) If Arr(j, i) <> "" Then NoiChuoi = NoiChuoi & C & Arr(j, i) Next Next With CreateObject("VBScript.RegExp") .Global = True .Pattern = "(" & C & "|-)0+" NoiChuoi = .Replace(NoiChuoi, "$1") End With NoiChuoi = Replace(NoiChuoi, C, "", 1, 1) End Function
Mã:=NoiChuoi(B3:B9,";")
Bạn thử lại với code mới đi, tôi có sửa lại code do lúc đầu không thấy dạng 0005-0010 trong dữ liệu.Mình đánh 0005-0010 nó không thành 5-10 bạn ah. Bạn xem lại giúp mình hoặc bạn gửi file bạn đã làm cho mình.
Cảm ơn bạn nhé.






Bạn thử sửa lại như thế nàyBạn cho mình hỏi thêm vấn đề nữa là nếu dữ liệu gốc ở một cell có dạng xuống dòng 005;
006
Có cách nào để khi gộp lại nó không xuống dòng nữa không?
Function NoiChuoi(ByVal Rng As Range, ByVal C As String) As String
Dim Arr, i As Long, j As Long
If Rng.Count = 1 Then
ReDim Arr(1 To 1, 1 To 1)
Arr(1, 1) = Rng.Value
Else
Arr = Rng.Value
End If
For i = 1 To UBound(Arr, 2)
For j = 1 To UBound(Arr, 1)
If Arr(j, i) <> "" Then NoiChuoi = NoiChuoi & C & Arr(j, i)
Next
Next
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "(" & C & "|-)0+"
NoiChuoi = .Replace(NoiChuoi, "$1")
End With
NoiChuoi = Replace(Replace(NoiChuoi, C, "", 1, 1), ChrW(10), "")
End Function



Bạn thử sửa lại như thế này
PHP:Function NoiChuoi(ByVal Rng As Range, ByVal C As String) As String Dim Arr, i As Long, j As Long If Rng.Count = 1 Then ReDim Arr(1 To 1, 1 To 1) Arr(1, 1) = Rng.Value Else Arr = Rng.Value End If For i = 1 To UBound(Arr, 2) For j = 1 To UBound(Arr, 1) If Arr(j, i) <> "" Then NoiChuoi = NoiChuoi & C & Arr(j, i) Next Next With CreateObject("VBScript.RegExp") .Global = True .Pattern = "(" & C & "|-)0+" NoiChuoi = .Replace(NoiChuoi, "$1") End With NoiChuoi = Replace(Replace(NoiChuoi, C, "", 1, 1), ChrW(10), "") End Function
À, tôi quên mất vụ này. Bạn thử code sau.Mình đã cho vào file nhưng kết quả lại là 5;006 nó không xuống dòng nữa nhưng lại không bỏ số 0 ở đầu.
Bạn xem lại giúp mình nhé.
Làm phiền bạn nhiều quá.
Function NoiChuoi(ByVal Rng As Range, ByVal C As String) As String
Dim Arr, i As Long, j As Long
If Rng.Count = 1 Then
ReDim Arr(1 To 1, 1 To 1)
Arr(1, 1) = Rng.Value
Else
Arr = Rng.Value
End If
For i = 1 To UBound(Arr, 2)
For j = 1 To UBound(Arr, 1)
If Arr(j, i) <> "" Then NoiChuoi = NoiChuoi & C & Arr(j, i)
Next
Next
NoiChuoi = Replace(NoiChuoi, ChrW(10), "")
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "(" & C & "|-)0+"
NoiChuoi = .Replace(NoiChuoi, "$1")
End With
NoiChuoi = Replace(NoiChuoi, C, "", 1, 1)
End Function