nhờ tách dữ liệu (1 người xem)

Người dùng đang xem chủ đề này

ngayvuinhat1

Thành viên mới
Tham gia
14/12/11
Bài viết
11
Được thích
0
em có 1 chuỗi các kí hiệu ví dụ 355eb 355exb trong các ô ở cột A . em muốn nhờ các bác lọc các kí hiệu này sang cột B ví dụ 355eb ở cột B1, 355exb ở cột B2 với điều kiên 355eb đã xuất hiện ở A1 rồi thì nếu xuất hiện ở A30 không cần lọc sang cột B nữa. cảm ơn các bác ạ
 

File đính kèm

em có 1 chuỗi các kí hiệu ví dụ 355eb 355exb trong các ô ở cột A . em muốn nhờ các bác lọc các kí hiệu này sang cột B ví dụ 355eb ở cột B1, 355exb ở cột B2 với điều kiên 355eb đã xuất hiện ở A1 rồi thì nếu xuất hiện ở A30 không cần lọc sang cột B nữa. cảm ơn các bác ạ
Bạn chịu khó ghi thêm kết quả mong muốn thì mới có người giúp, không chắc đành bó tay ^^
 
Cái này người ta làm tay chứ tự động làm chi.
1. copy thành môt sheet phụ.
2. trong sheet phụ, dùng text to columns
3. nối các columns lại
4. remove duplicates
5. copy trở lại sheet chính
6. delete sheet phụ
 
Thử chạy code sau
Mã:
ption Explicit
Public Sub GPE()
Dim Dic As Object, Tmp, Arr(), dArr, I&, J&, K&
Set Dic = CreateObject("Scripting.Dictionary")
Arr = Range([A1], [A65000].End(3)).Value
ReDim dArr(1 To 65000, 1 To 1)
On Error Resume Next
For I = 1 To UBound(Arr)
    If Len(Arr(I, 1)) > 1 Then
        Tmp = Split(Arr(I, 1), Chr(10))
        For J = 0 To UBound(Tmp)
            If Not Dic.Exists(Tmp(J)) Then
                Dic.Add Tmp(J), ""
                K = K + 1
                dArr(K, 1) = Tmp(J)
            End If
        Next J
    End If
Next I
Range("B1:B65000").ClearContents
Range("B1").Resize(K) = dArr
Set Dic = Nothing
End Sub
Có thể làm bài này bằng.. 1 vòng lập không? --=0
Đang nghĩ đến hướng thậm chí là.. không vòng lập luôn ấy chứ! Ẹc... Ẹc...
 
Cái này người ta làm tay chứ tự động làm chi.
1. copy thành môt sheet phụ.
2. trong sheet phụ, dùng text to columns
3. nối các columns lại
4. remove duplicates
5. copy trở lại sheet chính
6. delete sheet phụ

Đúng vậy, nhiều khi người ta lười cứ đưa lên, mọi người mang cưa máy ra cưa 1 cây mới lên mầm. Thời gian viết Code thì thao tác xong lâu rồi.
 
MSForms.DataObject
nhưng mà hổng phải hỏi mình . hahahha

Thì cứ làm thử xem! Được (kết quả chính xác) mới nói chứ --=0
------------------------
Đúng vậy, nhiều khi người ta lười cứ đưa lên, mọi người mang cưa máy ra cưa 1 cây mới lên mầm. Thời gian viết Code thì thao tác xong lâu rồi.
Bạn nói vậy chắc bạn biết cách làm? Vậy bạn làm rồi quay video gửi lên cho tôi học hỏi chút được không (bởi tôi vẫn chưa làm được)
 
Lần chỉnh sửa cuối:
Thì cứ làm thử xem! Được (kết quả chính xác) mới nói chứ --=0
------------------------
anh mời thì em uống hi hi
Mã:
Public Sub hello()
Dim dt As Object, st As String
Set dt = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
With Sheet1
    st = Join(WorksheetFunction.Transpose(.Range("A1:A" & .[A50000].End(xlUp).Row)), Chr(10))
    dt.SetText st
    dt.PutInClipboard
    .Range("B1:B50000").ClearContents
    .Range("B1").PasteSpecial
    .Range("B1:B" & .[B50000].End(xlUp).Row).RemoveDuplicates 1
End With
End Sub
 
anh mời thì em uống hi hi
Mã:
Public Sub hello()
Dim dt As Object, st As String
Set dt = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
With Sheet1
    st = Join(WorksheetFunction.Transpose(.Range("A1:A" & .[A50000].End(xlUp).Row)), Chr(10))
    dt.SetText st
    dt.PutInClipboard
    .Range("B1:B50000").ClearContents
    .Range("B1").PasteSpecial
    .Range("B1:B" & .[B50000].End(xlUp).Row).RemoveDuplicates 1
End With
End Sub
Kết quả hình như chưa đúng thì phải
Ngoài ra, nếu không cho dùng WorksheetFunction thì có.. được không ta?
 
Tại bạn nói dùng DataObject nên tôi nghĩ cứ Copy Range thì ta đã có thứ gì đó trong clipboard rồi. Xử lý chuỗi trong clipboard bằng cách nào đó rồi paste xuống sheet là được mà
í mình thấy rùi hi hi
Mã:
Public Sub hello()
Dim dt As Object, st As String
Set dt = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
With Sheet1
    .Range("A1:A" & .[A50000].End(xlUp).Row).Copy
    dt.GetFromClipboard
    st = dt.GetText
    st = Replace(st, Chr(34), "")
    dt.Clear
    dt.SetText st
    dt.PutInClipboard
    .Range("B1:B50000").ClearContents
    .Range("B1").PasteSpecial
    .Range("B1:B" & .[B50000].End(xlUp).Row).RemoveDuplicates 1
End With
End Sub

còn vụ kết quả sai là em hổng biết à nha , anh chỉ cho em biết sai ở đâu đi em mới tìm cách được chứ
 
Em xin phép cắt ngang một chút (em xin không tham gia trả lời bài).
Bài này thuộc box "Hàm và công thức Excel" nên chăng lựa chọn phương pháp hàm, công thức?
Thứ nữa, thấy bạn chủ topic post 1 bài (là bài yêu cầu) và 2 click cảm ơn, chưa thấy phản hồi gì thêm (không biết bạn ấy còn theo dõi chủ đề của mình?). Nếu chọn phương án code thì nên di chuyển bài sang box sử dụng VBA.
 
Em xin phép cắt ngang một chút (em xin không tham gia trả lời bài).
Bài này thuộc box "Hàm và công thức Excel" nên chăng lựa chọn phương pháp hàm, công thức?
Thứ nữa, thấy bạn chủ topic post 1 bài (là bài yêu cầu) và 2 click cảm ơn, chưa thấy phản hồi gì thêm (không biết bạn ấy còn theo dõi chủ đề của mình?). Nếu chọn phương án code thì nên di chuyển bài sang box sử dụng VBA.
tôi thấy bất cứ box nào của GPE cũng có thể chứa VBA , đâu có nhất thiết phải tuyệt đối
với lại anh NDU có lời mời bạn nào đó up Video hướng dẫn làm bằng các công cụ có sẵn của Excel mà bạn ấy không trả lời ấy chứ
Topic mở ra không chỉ dành riêng cho người hỏi mà còn dành cho tất cả mọi thành viên có nhu cầu
ví dụ tôi thấy bài này dùng VBA hợp lý , nhưng cũng có anh nói rằng dùng VBA bài này là đồ làm biếng , phải sử dụng các công cụ của Excel thì cứ việc đưa cách làm lên . Ai thích cách nào thuận cho công việc của mình thì làm .
 
cảm ơn các bác, e sử dụng code của bác doveandrose xong thì ra kết quả như ý.
e muốn hỏi bác thêm 1 chút là:
- kiểu dữ liệu này e là trích xuất từ 1 phần mềm ra . mỗi kí từ 335eb hay 355eb là kí hiệu của 1 loại thiết bị. do mỗi lần phần mềm sẽ trích ra dữ liệu dạng này . vậy lần sau nếu muốn xử lý dữ liệu kiểu này nữa cop đoạn code này của bác vào lại thì có thể xử lý tương tự không ạ.
 
e cũng k biết j về code nếu bác vietmimi có thể hướng dẫn cụ thể vụ text to column. vì khi làm thử cách của bác thì e không thể làm cho toàn bộ kí hiệu trong ô A1 của e sang từng ô bắt đầu từ B1. cảm ơn bác vietmimi
 
cảm ơn các bác, e sử dụng code của bác doveandrose xong thì ra kết quả như ý.
e muốn hỏi bác thêm 1 chút là:
- kiểu dữ liệu này e là trích xuất từ 1 phần mềm ra . mỗi kí từ 335eb hay 355eb là kí hiệu của 1 loại thiết bị. do mỗi lần phần mềm sẽ trích ra dữ liệu dạng này . vậy lần sau nếu muốn xử lý dữ liệu kiểu này nữa cop đoạn code này của bác vào lại thì có thể xử lý tương tự không ạ.

nếu muốn dùng Code thì lấy đoạn bài #3 ra mà sử dụng , Code ở trên tôi làm theo lời mời đố vui thôi , nên sử dụng bài #3 tốt hơn
bạn cứ việc dùng code cho bất cứ lần nào , miễn là dữ liệu nguyên thủy nằm ở cột A , kết quả sẽ đi sang cột B
 
Bạn đang nói đến tiên sư đó ah? Phán cứ như đúng rồi ấy nhỉ?:-=

tôi không ám chỉ ai cả , tôi nói tất cả muốn tham gia trả lời thì cần có lý lẽ để chứng minh cho lời mình nói
còn kiểu như trả lời a dua , khi được mời hướng dẫn cách làm thì tàng hình luôn thì những lời nói ở trên chỉ là Spam , không có trọng lượng
 
Với sự hỗ trợ của Unikey thì thao tác bằng tay không tới 1 phút.
[video=youtube;ywGJQXYiZVA]https://www.youtube.com/watch?v=ywGJQXYiZVA&feature=youtu.be[/video]
 
Với sự hỗ trợ của Unikey thì thao tác bằng tay không tới 1 phút.

Lúc trước cũng từng bị "dính chiêu" này. Mình cho rằng đó là cái sai của Unikey, may mắn lại nhờ cái sai ấy ta áp dụng đúng chỗ thành ra được việc
Ẹc... Ẹc...
 
Lúc trước cũng từng bị "dính chiêu" này. Mình cho rằng đó là cái sai của Unikey, may mắn lại nhờ cái sai ấy ta áp dụng đúng chỗ thành ra được việc
Ẹc... Ẹc...
Chính xác là tác giả Unikey chưa lường tới vụ này. Cũng như ta đưa dữ liệu vào DataObject mà thôi.
 
Em cũng góp một cách. Kết hợp với MS Word.

[video=youtube;DNk4hgeneeE]https://www.youtube.com/watch?v=DNk4hgeneeE[/video]
 

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

Back
Top Bottom