Nhờ anh chị em tư vấn tách dữ liệu và nhập vào bảng

Liên hệ QC

theanh_cntt

Thành viên mới
Tham gia
7/6/09
Bài viết
5
Được thích
0
Chào anh chị em,

Mình đang có 1 bảng excel khá dài với hình thức như file đính kèm. Mình muốn dùng thông tin ở cột B (cột SDT) đối chiếu sang cột C (TG); và lọc SĐT xuất hiện cùng trường thông tin cột B (cùng 1 SDT sẽ xuất hiện nhiều lần vì truy cập nhiều thời điểm khác nhau) thì đối chiếu sang cột C để lấy thời điểm sau đó list hàng ngang như file bên cạnh. Ví dụ 1 SDT 84989762921 sẽ xuất hiện 6 lần thì list bảng bên: thời điểm truy cập 1, thời điểm truy cập 2.... 6.

Mong anh chị em tư vấn giúp đỡ em,

Xin chân thành cảm ơn.
 

File đính kèm

Chào anh chị em,

Mình đang có 1 bảng excel khá dài với hình thức như file đính kèm. Mình muốn dùng thông tin ở cột B (cột SDT) đối chiếu sang cột C (TG); và lọc SĐT xuất hiện cùng trường thông tin cột B (cùng 1 SDT sẽ xuất hiện nhiều lần vì truy cập nhiều thời điểm khác nhau) thì đối chiếu sang cột C để lấy thời điểm sau đó list hàng ngang như file bên cạnh. Ví dụ 1 SDT 84989762921 sẽ xuất hiện 6 lần thì list bảng bên: thời điểm truy cập 1, thời điểm truy cập 2.... 6.

Mong anh chị em tư vấn giúp đỡ em,

Xin chân thành cảm ơn.

Xem file., nhớ Enable Macros khi mở fule
 

File đính kèm

Chào anh chị em,

Mình đang có 1 bảng excel khá dài với hình thức như file đính kèm. Mình muốn dùng thông tin ở cột B (cột SDT) đối chiếu sang cột C (TG); và lọc SĐT xuất hiện cùng trường thông tin cột B (cùng 1 SDT sẽ xuất hiện nhiều lần vì truy cập nhiều thời điểm khác nhau) thì đối chiếu sang cột C để lấy thời điểm sau đó list hàng ngang như file bên cạnh. Ví dụ 1 SDT 84989762921 sẽ xuất hiện 6 lần thì list bảng bên: thời điểm truy cập 1, thời điểm truy cập 2.... 6.

Mong anh chị em tư vấn giúp đỡ em,

Xin chân thành cảm ơn.
Bạn chạy thử:
PHP:
Sub Ghep()
Dim Sarr, Darr, i As Long, K As Long, j As Long, Tem, Rws
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet1
    Sarr = .Range(.[A4], .[A65000].End(xlUp)).Resize(, 3).Value
End With
ReDim Darr(1 To UBound(Sarr), 1 To UBound(Sarr, 2))
For i = 1 To UBound(Sarr, 1)
    Tem = Sarr(i, 2)
    If Not Dic.exists(Tem) Then
        K = K + 1
        Dic.Add Tem, K
        Darr(K, 1) = K
        Darr(K, 2) = Tem
        Darr(K, 3) = Sarr(i, 3)
    Else
        
        For j = 4 To 1000
            If j > UBound(Darr, 2) Then ReDim Preserve Darr(1 To UBound(Sarr), 1 To j)
                If Darr(Dic.Item(Tem), j) = "" Then
                    Darr(Dic.Item(Tem), j) = Sarr(i, 3)
                Exit For
                End If
        Next j
    End If
Next i
        [E5:V2000].ClearContents
        [E5].Resize(K, UBound(Darr, 2)).Value = Darr
Set Dic = Nothing
End Sub
 
Chân thành cảm ơn bác Ba Têcomet_1701 đã giúp đỡ nhiệt tình, các bác thật pro. Nhưng nhờ bác bác hướng dẫn thêm em cách làm được không? Để lần sau em còn biết mà làm ạ, chứ em đang hơi gà. Cảm ơn các bác lần nữa.
 
Chân thành cảm ơn bác Ba Têcomet_1701 đã giúp đỡ nhiệt tình, các bác thật pro. Nhưng nhờ bác bác hướng dẫn thêm em cách làm được không? Để lần sau em còn biết mà làm ạ, chứ em đang hơi gà. Cảm ơn các bác lần nữa.
Không biết là bạn đã biết VBA chưa, nếu chưa thì tùy thuộc thời gian, đam mê mà học và nghiên cứu thôi, nếu chỉ để dùng thì học qua một số cái cơ bản rồi lên GPE tìm bài phù hợp rồi chỉnh sửa bạn ah, mình cũng không biết phải hướng dẫn thế nào.
Nếu chưa biết Enable Macro thì bạn xem video nhé
https://www.youtube.com/watch?v=nYVhP7Avuj0&feature=youtu.be
 
Vs bài của chủ thớt.
Nếu thay đổi dạng báo cáo thời điểm truy cập từ cột sang hàng như file mình đính kèm.
Có cách nào dùng advace filter để lọc dữ liệu được không các bạn?
 

File đính kèm

Vs bài của chủ thớt.
Nếu thay đổi dạng báo cáo thời điểm truy cập từ cột sang hàng như file mình đính kèm.
Có cách nào dùng advace filter để lọc dữ liệu được không các bạn?

Sheet2, Từ C4:BB4 nhập chữ TG, thử chạy Sub này:
PHP:
Sub AdFilter()
Dim Cll As Range, Rng As Range, sRng As Range
Set sRng = Sheet1.Range("B3:C1000")
    With Sheet2
        Set Rng = .Range(.[C2], .[C2].End(xlToRight))
        For Each Cll In Rng
            sRng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Cll.Resize(2), CopyToRange:=Cll.Offset(2)
        Next Cll
    End With
Set Rng = Nothing
Set sRng = Nothing
End Sub
 
Sheet2, Từ C4:BB4 nhập chữ TG, thử chạy Sub này:
PHP:
Sub AdFilter()
Dim Cll As Range, Rng As Range, sRng As Range
Set sRng = Sheet1.Range("B3:C1000")
    With Sheet2
        Set Rng = .Range(.[C2], .[C2].End(xlToRight))
        For Each Cll In Rng
            sRng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Cll.Resize(2), CopyToRange:=Cll.Offset(2)
        Next Cll
    End With
Set Rng = Nothing
Set sRng = Nothing
End Sub
Bạn chỉ mình cách làm vs AF được ko bạn.
Xem code của bạn mình ko biết cách làm vs AF.
 
Bạn chỉ mình cách làm vs AF được ko bạn.
Xem code của bạn mình ko biết cách làm vs AF.
Bạn mở sheet1 (trong VBA là sheet2), nhập TG vào ô C4
- Vào AF.
- Click chọn Copy to another..
- Click vào khung List range cho con trỏ nhấp nháy, mở sheet có cái tên dài thoòng, quét chọn vùng B3:C100...
- Trở về sheet1, click vào khung Criteria... tô chọn ô C2:C3
- Khung Copy to: nhập C4
- OK
Làm tiếp tục với các cột tiếp theo, mệt nghỉ.
 
Bạn mở sheet1 (trong VBA là sheet2), nhập TG vào ô C4
- Vào AF.
- Click chọn Copy to another..
- Click vào khung List range cho con trỏ nhấp nháy, mở sheet có cái tên dài thoòng, quét chọn vùng B3:C100...
- Trở về sheet1, click vào khung Criteria... tô chọn ô C2:C3
- Khung Copy to: nhập C4
- OK
Làm tiếp tục với các cột tiếp theo, mệt nghỉ.
Nếu là làm AF thủ công từng cột thì mình đã thử và ra.
Nhưng mình muốn hỏi có cách nào làm 1 phát mà ra tất như Code của bạn không?
 
Web KT

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

Back
Top Bottom