thao nguyen01
Thành viên thường trực
- Tham gia
- 8/12/19
- Bài viết
- 214
- Được thích
- 25
Cái này dung hàm có sẵn cũng được mà bạnKính gửi anh/chị trên diễn đàn,
Em đang bị vướng về vấn đề tách chuỗi ạ. Em muốn tách tên và chứng minh nhân dân từ cột A ạ. Em có mô tả trong file đính kèm. Anh/chị xem giúp em với ạ. Em cảm ơn ạ.
Cái này dung hàm có sẵn cũng được mà bạn
Cái hàm xịn của người ta mà còn chậm nữa thì hàm chế chỉ có đường nằm im thôi Bạn à. Nhiều vậy Bạn chuyển sang dung Sub điDạ, vì dữ liệu của em 1 tháng gần 10.000 dòng, 1 năm hơn 100.000 dòng, nên em dùng hàm sẽ chậm ạ.
Cái hàm xịn của người ta mà còn chậm nữa thì hàm chế chỉ có đường nằm im thôi Bạn à. Nhiều vậy Bạn chuyển sang dung Sub đi
Bạn thử:Kính gửi anh/chị trên diễn đàn,
Em đang bị vướng về vấn đề tách chuỗi ạ. Em muốn tách tên và chứng minh nhân dân từ cột A ạ. Em có mô tả trong file đính kèm. Anh/chị xem giúp em với ạ. Em cảm ơn ạ.
Sub Test()
Dim Cll As Range
For Each Cll In Range("A2", Range("A" & Rows.Count).End(xlUp))
Cll.Offset(, 1).Value = Replace(Replace(Replace(Split(Cll.Value, ":")(0), "CCCD", ""), "CMND", ""), ",", "")
Cll.Offset(, 2).Value = Split(Cll.Value, ":")(1)
Next Cll
End Sub
Nếu dữ liệu của bạn tổ chức 1 cách thống nhất thì có thể sử dụng chức năng Text to columns 2 lần. Nhanh gọn mà không cần tới công thức hay VBAKính gửi anh/chị trên diễn đàn,
Em đang bị vướng về vấn đề tách chuỗi ạ. Em muốn tách tên và chứng minh nhân dân từ cột A ạ. Em có mô tả trong file đính kèm. Anh/chị xem giúp em với ạ. Em cảm ơn ạ.
Nếu dữ liệu của bạn tổ chức 1 cách thống nhất thì có thể sử dụng chức năng Text to columns 2 lần. Nhanh gọn mà không cần tới công thức hay VBA
View attachment 234069
View attachment 234068
View attachment 234066View attachment 234067
Bạn thử:
PHP:Sub Test() Dim Cll As Range For Each Cll In Range("A2", Range("A" & Rows.Count).End(xlUp)) Cll.Offset(, 1).Value = Replace(Replace(Replace(Split(Cll.Value, ":")(0), "CCCD", ""), "CMND", ""), ",", "") Cll.Offset(, 2).Value = Split(Cll.Value, ":")(1) Next Cll End Sub
Sub Tachdulieu()
Dim sRng As Range, rng As Range
Dim sArr(), dArr(), I As Long, K As Long
On Error GoTo Thoat
Set sRng = Application.InputBox(Prompt:="chon vung du lieu ", Title:="Chon du lieu dau vao", Type:=8)
sArr = sRng.Value
ReDim dArr(1 To UBound(sArr), 1 To 2)
For I = 1 To UBound(sArr)
If sArr(I, 1) <> Empty Then
sArr(I, 1) = Replace(sArr(I, 1), ",", ""): sArr(I, 1) = Replace(sArr(I, 1), ";", "")
sArr(I, 1) = Replace(sArr(I, 1), "CMND", ""): sArr(I, 1) = Replace(sArr(I, 1), "CCCD", "")
K = K + 1
On Error Resume Next
dArr(K, 1) = Split(sArr(I, 1), ":")(0): dArr(K, 2) = Split(sArr(I, 1), ":")(1)
End If
Next I
Set rng = Application.InputBox(Prompt:="Chon o chua ket qua", Title:="Chon o", Type:=8)
rng.Resize(K, 2) = dArr
Thoat:
End Sub
Thử code dưới đâyKính gửi anh/chị trên diễn đàn,
Em đang bị vướng về vấn đề tách chuỗi ạ. Em muốn tách tên và chứng minh nhân dân từ cột A ạ. Em có mô tả trong file đính kèm. Anh/chị xem giúp em với ạ. Em cảm ơn ạ.
Sub Tach()
Dim Nguon
Dim Kq() As String
Dim i, j, k, rws
With Sheet1
rws = .Range("A1").End(xlDown).Row
Nguon = .Range("A2:A" & rws)
ReDim Kq(1 To rws - 1, 1 To 2)
For i = 1 To rws - 1
Nguon(i, 1) = Replace(Nguon(i, 1), ",", "")
k = InStr(Nguon(i, 1), ":")
Kq(i, 2) = Trim(Mid(Nguon(i, 1), k + 1, 100))
k = InStrRev(Left(Nguon(i, 1), k - 1), " ")
Kq(i, 1) = Trim(Left(Nguon(i, 1), k - 1))
Next i
.Range("B2").Resize(UBound(Kq), UBound(Kq, 2)).ClearContents
.Range("B2").Resize(UBound(Kq), UBound(Kq, 2)) = Kq
End With
End Sub
Mình chọt chẹt them 1 cách. Bạn tham khảo
PHP:Sub Tachdulieu() Dim sRng As Range, rng As Range Dim sArr(), dArr(), I As Long, K As Long On Error GoTo Thoat Set sRng = Application.InputBox(Prompt:="chon vung du lieu ", Title:="Chon du lieu dau vao", Type:=8) sArr = sRng.Value ReDim dArr(1 To UBound(sArr), 1 To 2) For I = 1 To UBound(sArr) If sArr(I, 1) <> Empty Then sArr(I, 1) = Replace(sArr(I, 1), ",", ""): sArr(I, 1) = Replace(sArr(I, 1), ";", "") sArr(I, 1) = Replace(sArr(I, 1), "CMND", ""): sArr(I, 1) = Replace(sArr(I, 1), "CCCD", "") K = K + 1 dArr(K, 1) = Split(sArr(I, 1), ":")(0): dArr(K, 2) = Split(sArr(I, 1), ":")(1) End If Next I Set rng = Application.InputBox(Prompt:="Chon o chua ket qua", Title:="Chon o", Type:=8) rng.Resize(K, 2) = dArr Thoat: End Sub
Thử code dưới đây
Mã:Sub Tach() Dim Nguon Dim Kq() As String Dim i, j, k, rws With Sheet1 rws = .Range("A1").End(xlDown).Row Nguon = .Range("A2:A" & rws) ReDim Kq(1 To rws - 1, 1 To 2) For i = 1 To rws - 1 Nguon(i, 1) = Replace(Nguon(i, 1), ",", "") k = InStr(Nguon(i, 1), ":") Kq(i, 2) = Trim(Mid(Nguon(i, 1), k + 1, 100)) k = InStrRev(Left(Nguon(i, 1), k - 1), " ") Kq(i, 1) = Trim(Left(Nguon(i, 1), k - 1)) Next i .Range("B2").Resize(UBound(Kq), UBound(Kq, 2)).ClearContents .Range("B2").Resize(UBound(Kq), UBound(Kq, 2)) = Kq End With End Sub
Bạn thay dòng cũ bang dòng này thửDạ, em cảm ơn ạ. Nhưng khi em chạy code bị vấn đề như trên ạ. Em Ví dụ: CCCD: 027071123078, thì khi chạy xong thiếu mất số 0 ở sub tachchuoi ạ. Anh xem giúp em ạ. Em cảm ơn ạ.
dArr(K, 1) = Split(sArr(I, 1), ":")(0): dArr(K, 2) = "'" & Split(sArr(I, 1), ":")(1)
Quản lý dữ klieeuj chừng này thì đi học một khoá quản lý đi.Dạ, vì dữ liệu của em 1 tháng gần 10.000 dòng, 1 năm hơn 100.000 dòng, nên em dùng hàm sẽ chậm ạ.
Bạn thay dòng cũ bang dòng này thử
Mã:dArr(K, 1) = Split(sArr(I, 1), ":")(0): dArr(K, 2) = "'" & Split(sArr(I, 1), ":")(1)
Quản lý dữ klieeuj chừng này thì đi học một khoá quản lý đi.
Điẻn hình là học cách quản lý csdl. Nếu vẫn còn dùng Excel thì cần học PowerQuery và Powerpivot.
Cốt kiếc này nọ chỉ là đắp vá tạm thời.
Flash Fill 1 triệu dòng cỡ hơn 1 nửa cái nháy mắt.
Flash Fill 1 triệu dòng cỡ hơn 1 nửa cái nháy mắt.
sau khi so sánh từng câu chử. có thể đoán là thành viên này 80%. do bị khóa nickKính gửi anh/chị trên diễn đàn,
Em đang bị vướng về vấn đề tách chuỗi ạ. Em muốn tách tên và chứng minh nhân dân từ cột A ạ. Em có mô tả trong file đính kèm. Anh/chị xem giúp em với ạ. Em cảm ơn ạ.
không phải. Khi người ta đánh đề người ta nhắn tin kiểu nội dung là vậy. bây giờ phải nhờ Excel tách raQuản lý dữ klieeuj chừng này thì đi học một khoá quản lý đi.
Điẻn hình là học cách quản lý csdl. Nếu vẫn còn dùng Excel thì cần học PowerQuery và Powerpivot.
Cốt kiếc này nọ chỉ là đắp vá tạm thời.
Thử lại code sau:Dạ, em cám ơn anh trước.
Sub TachDuLieu()
Dim xCell As Range: Dim Vung As Object
Set Vung = Range("A2", Range("A6000").End(xlUp))
For Each xCell In Vung
xCell.Offset(, 1).Value = Replace(Replace(Replace(Split(xCell.Value, ":")(0), "CCCD", ""), "CMND", ""), ",", "")
xCell.Offset(, 2).Value = "'" & Split(xCell.Value, ":")(1)
Next xCell
End Sub
DIỄN ĐÀN GIẢI PHÁP EXCEL