Các câu hỏi về lọc ra danh sách duy nhất (loại bỏ dữ liệu trùng) (2 người xem)

Liên hệ QC

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

uhm,tại vì CSDL khách hàng của mình cũng rắc rối, vừa trùng lặp,vừa thiếu,lại còn nhiều nữa nên...m add nick yahoo của bạn rùi thỉnh thoảng nhờ bạn chỉ cho m được ko?
 
Mình muốn chỉ lọc những dữ liệu trùng giữa 2 cột

Mình muốn lọc những dữ liệu chỉ trùng giữa 2 cột 1 và 2.Ko tính những dữ liệu trùng nhau trong 1 cột.Mình đã thử lọc bỏ những dữ liệu trùng nhau trong cột 1 và 2,rồi lọc những dữ liệu trùng giữa 2 cột mà sao ko đc. :(
CÁc bạn chỉ giúp mình với!!!
Mình kém excel lắm.CÁc bạn chỉ giúp mình từng bc với.
Cám ơn lắm lắm!!!
 

File đính kèm

Mình muốn lọc những dữ liệu chỉ trùng giữa 2 cột 1 và 2.Ko tính những dữ liệu trùng nhau trong 1 cột.Mình đã thử lọc bỏ những dữ liệu trùng nhau trong cột 1 và 2,rồi lọc những dữ liệu trùng giữa 2 cột mà sao ko đc. :(
CÁc bạn chỉ giúp mình với!!!
Mình kém excel lắm.CÁc bạn chỉ giúp mình từng bc với.
Cám ơn lắm lắm!!!
Xem file đính kèm nha.
 

File đính kèm

Hờ hờ,chả hiểu sao mình đánh code y hệt bạn mà nó lại ko ra
 
Hờ hờ,chả hiểu sao mình đánh code y hệt bạn mà nó lại ko ra
Vậy thì bạn xem lại đi chứ sao nữa. Rõ ràng trên file bạn upload tôi làm được đây thôi. Nếu không được thì nén file gốc lại upload lên tôi làm cho.
 
ÔI TRỜI ƠI!!! SR,T THỬ LẠI BẢN CŨ CÓ ĐOẠN T ĐÁNH NHẦM 2 DẤU CÁCH .NÊN NÓ CHỈ RA 1 KQUẢ.NGẠI GHÊ.cÁM ƠN BẠN NHÉ!!!MẮT VỚI MŨI
 
Dùng cái này thì khỏi bc gì sất.

PHP:
Option Explicit
Sub TimTrung()
  Dim Rng As Range, Clls As Range, sRng As Range
  Columns("A:A").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1
  Set Rng = Range([B1], [B1].End(xlDown))
  For Each Clls In Range([a1], [a1].End(xlDown))
    If Clls.Offset(1) <> Clls Then
      Set sRng = Rng.Find(Clls.Value, , xlFormulas, xlWhole)
      If Not sRng Is Nothing Then _
        [e65500].End(xlUp).Offset(1).Value = Clls.Value
    End If
  Next Clls
End Sub

Chú í: 'Cty D' sẽ không được thu nhận do khoảng trắng giữa 2 từ này ở 2 cột là khác nhau.
 
Giúp mình lọc dữ liệu 2 cột trong Excel

Mình mới vào 4rum lần đầu )*&^), có chuyện thắc mắc muốn hỏi ;;;;;;;;;;;, pác nào rành Excel thì giúp mình nhé . Thanks a lot ^^! |||||

Mình up file Excel lên , các pác lọc giùm mình dữ liệu 2 cột C D , xem có cột nào trùng thì viết ra 1 cột riêng giùm mình --=0
 

File đính kèm

Hic ... thì dữ liệu 2 cột C và D đó , nhìn vào , cái nào trùng thì giúp em lọc ra 1 cột khác , đó gọi là "Tiếng Việt" đó bạn .
Mình viết Tiếng Việt chứ có viết tiếng Pakistan đâu mà sao khó tính thế -0-/.
 
Hic ... thì dữ liệu 2 cột C và D đó , nhìn vào , cái nào trùng thì giúp em lọc ra 1 cột khác , đó gọi là "Tiếng Việt" đó bạn .
Mình viết Tiếng Việt chứ . . .
Chưa thật sự hiểu hết ý bạn;

(*) Bạn cần lọc trang tính nào (Nó tên là gì). Bạn chỉ cần đưa lên trang tính cần lọc thôi. Đưa lên nhiều chẳng ích gì!

(*) Trang tính đó có được sắp xếp lại theo cột 'C' & 'D' bằng bất cứ cách nào không? Hay Bạn đã sắp xếp chúng rồi?

(*) Theo mình hiểu là các dòng nào trùng dữ liệu tại 2 trường này sẽ được lọc ra;
Vậy chỉ cần tô màu cho bạn được không? Nếu lọc cột khác là phải chép sang trang khác cho dễ xem xét có tiện cho bạn không?

Chờ tin bạn!

Nếu đúng nh7 ý mình hiểu sẽ có 17 dòng trùng nhau cả 2 trường trong đó có 9 dòng cả 2 trường không dữ liệu.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Mình mới vào 4rum lần đầu )*&^), có chuyện thắc mắc muốn hỏi ;;;;;;;;;;;, pác nào rành Excel thì giúp mình nhé . Thanks a lot ^^! |||||

Mình up file Excel lên , các pác lọc giùm mình dữ liệu 2 cột C D , xem có cột nào trùng thì viết ra 1 cột riêng giùm mình --=0
Bạn xem file này có phải ý của bạn muốn làm không nhé rồi tính tiếp
 

File đính kèm

Nhờ các anh chị trên diễn đàn làm công thức để trích lọc những dữ liệu trùng nhau trên 2 cột để cho ra kết quả 1 dữ liệu duy nhất.
Sheet Data có nhiều những dữ liệu giống nhau trên cả 2 cột
Sheet Ketqua có dữ liệu khong trùng nhau. và phải nằm liền kề với nhau trên cùng 1 cột( không có dòng trống).
Với yều cầu như thế thì dùng công thức được không vậy? .
Cám ơn các anh chị nhiều

Mình gửi kèm file nhờ các bạn chỉ giúp dùm. Rất cám ơn các bạn.
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
PHP:
Sub unique()
   Dim i As Long, K As Long
   Dim Vung1 As Range, Vung2 As Range, vung as range
   Set Vung1 = Sheets(1).Range("A2:A" & [A1000].End(xlUp).Row)
   Set Vung2 = Sheets(1).Range("B2:B" & [A1000].End(xlUp).Row)
   Vung = Union(Vung1, Vung2)
   
   For Each Cells In Vung
        If Cells <> "" Then
            K = K + 1
            
            If i = Application.WorksheetFunction.Match(Cells, Vung, 0) Then
                    i = i + 1
            End If
        
            If K = i Then Sheets(2).Range("B:" & K) = Cells: Exit For
            End If
        End If
   Next
  
End Sub

Thưa các Anh
Em thử nghịch một đoạn code nhưng không chạy được, vào tool/macro phần Run cứ bị mờ nên chẳng biết code trên sai hay đúng?

Chỉ dạy thêm cho em với

Cám ơn
 
Lần chỉnh sửa cuối:
Hãy thử với macro này

PHP:
Option Explicit
Sub Macro1()
 Dim eR As Long, lR As Long
 Dim Sh As Worksheet
 
   Application.ScreenUpdating = False:       Sheets("Data").Select
    Columns("A:B").Select:                   Selection.Insert Shift:=xlToRight
    eR = [C65500].End(xlUp).Row
 
    Range("B1:B" & eR - 1).Value = Range([c2], Cells(eR, "C")).Value
    lR = [d65500].End(xlUp).Row
    Range(Cells(eR, "B"), Cells(eR + lR - 2, "B")).Value = Range([d2], Cells(lR, "D")).Value
 
    Range("B1:B" & eR + lR).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[a1], Unique:=True
    eR = [a65500].End(xlUp).Row
    Set Sh = Sheets("KetQua"):            Sh.Range(Sh.[a2], Sh.[a2].End(xlDown)).Clear
 
    Sh.Range(Sh.[a2], Sh.Cells(eR, "A")).Value = Range([a1], [a1].End(xlDown)).Value
    Columns("A:B").Delete
End Sub
 
Lần chỉnh sửa cuối:
PHP:
Option Explicit
Sub Macro1()
 Dim eR As Long, lR As Long
 Dim Sh As Worksheet
 
   Application.ScreenUpdating = False:       Sheets("Data").Select
    Columns("A:B").Select:                   Selection.Insert Shift:=xlToRight
    eR = [C65500].End(xlUp).Row
 
    Range("B1:B" & eR - 1).Value = Range([c2], Cells(eR, "C")).Value
    lR = [d65500].End(xlUp).Row
    Range(Cells(eR, "B"), Cells(eR + lR - 2, "B")).Value = Range([d2], Cells(lR, "D")).Value
 
    Range("B1:B" & eR + lR).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[a1], Unique:=True
    eR = [a65500].End(xlUp).Row
    Set Sh = Sheets("KetQua"):            Sh.Range(Sh.[a2], Sh.[a2].End(xlDown)).Clear
 
    Sh.Range(Sh.[a2], Sh.Cells(eR, "A")).Value = Range([a1], [a1].End(xlDown)).Value
    Columns("A:B").Delete
End Sub
Bạn ChanhTQ ơi!Bạn tải file đính kèm của mình về rồi bạn gắn macro này test thử dùm mình với, nếu đúng như kết quả thì bạn up cho mình ha. Tại vì mình chạy macro này nó bị báo lỗi. cám ơn sự nhiệt tình của bạn rất nhiều.
 
Bạn tải file đính kèm của mình , nếu macro cho đúng như kết quả thì bạn up cho mình ha. Tại vì mình chạy macro này nó bị báo lỗi.
Đó là lỗi gì vậy, đừng bí mật nữa có được không?

Macro của mình làm những việc sau:
Thêm mới 2 cột A & B - ở đây có thể phát sinh lỗi, nên CSDL của bạn xài 1 trong 2 cột cuối trang tính;
Chép nối dữ liệu 2 cột sang cột 'B'
Lập danh sách duy nhứt, bằng cách AdvancedFiilter (Unique)
Chép sang trang tính 'KQua'
Xóa 2 cột vừa tạo


:-= )(&&@@ @!## &&&%$R )(&&@@
 

File đính kèm

Lần chỉnh sửa cuối:
PHP:
Sub unique()
   Dim i As Long, K As Long
   Dim Vung1 As Range, Vung2 As Range, vung as range
   Set Vung1 = Sheets(1).Range("A2:A" & [A1000].End(xlUp).Row)
   Set Vung2 = Sheets(1).Range("B2:B" & [A1000].End(xlUp).Row)
   Vung = Union(Vung1, Vung2)
   
   For Each Cells In Vung
        If Cells <> "" Then
            K = K + 1
            
            If i = Application.WorksheetFunction.Match(Cells, Vung, 0) Then
                    i = i + 1
            End If
        
            If K = i Then Sheets(2).Range("B:" & K) = Cells: Exit For
            End If
        End If
   Next
  
End Sub
Thưa các Anh
Em thử nghịch một đoạn code nhưng không chạy được, vào tool/macro phần Run cứ bị mờ nên chẳng biết code trên sai hay đúng?

Chỉ dạy thêm cho em với

Cám ơn
Sai nhiều lắm bạn ơi!
1>
Set Vung1 = Sheets(1).Range("A2:A" & [A1000].End(xlUp).Row)
---> Cái này sai vì đoạn [A1000].End(xlUp).Row chả biết thuộc sheet nào (đúng tại sheet nào chạy code thì nó sẽ theo sheet đó)
Đúng ra phải:
Set Vung1 = Range(Sheets(1).[A2], Sheets(1).[A1000].End(xlUp))
Vung2 cũng sai tương tự
---------------------------
2> Vung = Union(Vung1, Vung2) ---> Sai
Đúng ra phải:
Set Vung = Union(Vung1, Vung2)
---------------------------
3>
For Each Cells In Vung ---> Sai vì Cells không thể đặt làm 1 biến được
Có thể sửa thành:
For Each Clls In Vung (chử gì cũng được, miển khác chử Cells)
--------------------------
4>
If i = Application.WorksheetFunction.Match(Cells, Vung, 0) Then ---> Sai cú pháp hàm MATCH... hàm MATCH chỉ dò trong 1 cột hoặc 1 dòng...
Và thêm nữa: Ngay từ vòng lập đầu tiên sẽ báo lổi vì i chưa tồn tại (phải cho i = bao nhiêu trước chứ)
vân vân và vân vân như:
Sheets(2).Range("B:" & K) ---> Sai
--------------------
Nói tóm lại sau khi sửa xong toàn bộ thì code vẫn chưa chạy, hoặc chạy sai ---> Có lẽ liên quan đến thuật toán (bạn bị lạc đường)
 
Mình nhầm!, macro không có lỗi nhung cho KQ không đúng: có dữ liệu bị trùng và có dữ liệu không bị thiếu.
 
Gôm nhiều danh mục thành một danh mục chung

Hiện mình có một bảng gồm nhiều danh mục khác nhau nằm ở nhiều sheet,những danh mục đó gồm nhiều dữ liệu trùng và không trùng mình muốn lấy một danh mục chung sang một sheet khác để tạo danh mục chung vào ko trùng.
Xin hãy hướng dẫn mình dùm hàm gì?
 
Mình hay gom bằng cách chép tất cả vào 1 sheet rồi dùng pivot table 1 nhát là có bảng danh mục chuẩn.
 
Bạn muốn lọc các danh mục không trùng nhau ra một sheet riêng? Mình nghĩ bạn copy hết tất cả các danh mục đó vào 1 sheet rồi dùng Advanced Filter là được. Bạn gởi file lên thử xem.
 
Hiện mình có một bảng gồm nhiều danh mục khác nhau nằm ở nhiều sheet,những danh mục đó gồm nhiều dữ liệu trùng và không trùng mình muốn lấy một danh mục chung sang một sheet khác để tạo danh mục chung vào ko trùng.
Xin hãy hướng dẫn mình dùm hàm gì?
Bạn thử dùng code của anh ndu96081631 thử xem sao nhé
Mã:
Sub Test()
  Sheet3.Range("A1:C1000").Clear
  With Sheet1.Range("A28").CurrentRegion.Offset(1)
    .Copy
    With Sheet2.Range("A1").CurrentRegion
      .Offset(.Rows.Count)(1, 1).PasteSpecial
      With Sheet2.Range("A1").CurrentRegion
        .AdvancedFilter 2, , Sheet3.Range("A1"), True
      End With
      With .Offset(.Rows.Count)
        Range(.Cells, .End(xlDown)).Clear
      End With
    End With
  End With
End Sub
Có cả file test luôn nhé.
Thân
 

File đính kèm

Lần chỉnh sửa cuối:
Hỏi về cách lọc dữ liệu không trung theo 2 cột

Mình có dữ liệu gốc là 4 cột A,B,C,D HAI CỘT C VA D ĐƯỢC SORT THEO GIÁ TRỊ TĂNG DẦN
CẦN SO SÁNH GIỮA CỘT C VÀ CỘT D NẾU CÓ GIÁ TRỊ BẰNG NHAU (SỐ LƯỢNG CŨNG BẰNG NHAU) CHÌ CHUYỂN SANG SHEET TRÙNG NHAU
CÒN NẾU GIÁ TRỊ CỘT C (HOẶC D) KHÔNG CÓ GIÁ TRỊ TRÙNG TẠI CỘT D (HOẶC C) HAY SỐ LƯỢNG GIÁ TRỊ KHÔNG BẰNG NHAU THÌ SẼ CHUYỂN SANG SHEET LỆCH
vd:mình đã tự làm trong file excel gửi kèm (mình muốn số liệu có thể chuyển sang 2 sheet trùng nhau và sheet lệch từ sheet đầu bài giống file gửi kèm)
Xin cảm ơn các thầy và các bạn thanks
 

File đính kèm

Đã đọc kỹ, xem file đính kèm nhưng vẫn không hiểu.
 
Viết như vầy dễ trở thành người nói 1 đường, làm 1 nẽo!

Bà con làng xóm xem đây: Trang tính đầu bài như vầy:
A|B|C|D|
1A|1|2|2b|=> Trùng
2A|2|4|4b|
3A|3|4|4b|
4A|4|6|6b|
5A|5|6|6b|
6A|6|7|7b|=> Trùng
7A|7|8|8b|=> Trùng
8A|8|10|10b| >> không đem
||||!$@!!

(Cớ sao dòng cuối không được đem sang trang 'Trùng'?)
 
Bà con làng xóm xem đây: Trang tính đầu bài như vầy:
A|B|C|D|
1A|1|2|2b|=> Trùng
2A|2|4|4b|
3A|3|4|4b|
4A|4|6|6b|
5A|5|6|6b|
6A|6|7|7b|=> Trùng
7A|7|8|8b|=> Trùng
8A|8|10|10b| >> không đem
||||!$@!!
(Cớ sao dòng cuối không được đem sang trang 'Trùng'?)
Vì cột C không có 10 mà bác,các giá trị trùng là có cả ở cột B và C (cả giá trị và số lượng) hai cột A và D chỉ lấy theo C và D tương ứng thôi,cám ơn bác đã quan tâm
 
Vì cột C không có 10 mà bác,các giá trị trùng là có cả ở cột B và C (cả giá trị và số lượng) hai cột A và D chỉ lấy theo C và D tương ứng thôi,cám ơn bác đã quan tâm

Theo tôi hiểu thì tác giả topic yêu cầu so sánh 2 cột B và C, trích trùng khi :
=AND(có xuất hiện ở 2 cột, có số lượng trên mỗi cột bằng nhau)
Còn lệch thì chưa hiểu thế nào hichic
 

File đính kèm

Lần chỉnh sửa cuối:
Đầu bài lủng củng nhất Dosnet từng gặp !

CẦN SO SÁNH GIỮA CỘT C VÀ CỘT D NẾU CÓ GIÁ TRỊ BẰNG NHAU (SỐ LƯỢNG CŨNG BẰNG NHAU) CHÌ CHUYỂN SANG SHEET TRÙNG NHAU

Riêng có mỗi điều kiện này đã phải chuyển cả bảng sang sheet trùng nhau rồi ! Đề nghị tác giả "Mafia" làm rõ thêm
 
THANKS BÁC viendo nhiều nhiều nhé,bác giúp em được cái lệch nữa thì hay quá (em dốt văn thật)
 
Dùng hàm để lọc ra dữ liệu không trùng nhau

Hi mấy bác, mấy bác giúp em có hàm nào lọc ra dữ liệu mà ko bị trùng ko? Máy bác xem file đính kèm của em.
 

File đính kèm

File đính kèm

Lần chỉnh sửa cuối:
Bác domfootwear có cách nào khác ngoài Advance filter không. Có hàm nào làm được điều đó ko? Dùng hàm nhé bác.
Mình cũng biết là dùng Advance rồi chọn copy to another location và chọn unique ... Ở mục copy to chọn ô để parst dữ liệu đã copy ( ko trùng).
 
Lần chỉnh sửa cuối:
Bác domfootwear có cách nào khác ngoài Advance filter không. Có hàm nào làm được điều đó ko? Dùng hàm nhé bác.
Mình cũng biết là dùng Advance rồi chọn copy to another location và chọn unique ... Ở mục copy to chọn ô để parst dữ liệu đã copy ( ko trùng).
Vậy bạn tham khảo file đính kèm nhé.
Thân
 

File đính kèm

Hi mấy bác, mấy bác giúp em có hàm nào lọc ra dữ liệu mà ko bị trùng ko? Máy bác xem file đính kèm của em.

Nếu bạn chưa biết nhiều về mảng và công thức mảng thì bạn nên dùng cột phụ cho dễ hiểu.
bạn xem file nha
 

File đính kèm

Thanks Máy bác nhiều nhé.
 
Nhờ trợ giúp v/v: Lọc danh mục duy nhất bị lỗi?!

Chào cả nhà!

Trong file đính kèm tại sheet DATA, căn cứ vào cột bộ phận, cột chức danh, tôi dùng code lọc danh mục duy nhất sang sheet "Tổng hợp nguồn nhân lực" để tính toán tổng hợp số liệu, các chỉ tiêu (theo như bảng biểu trong sheet "Tổng hợp nguồn nhân lực".

Phát sinh vấn đề sai lỗi, mình tìm mãi chẳng ra, như thế này:

  1. Cột Bộ phận tại sheet DATA, nếu lọc ra danh mục duy nhất thì phải là 38 bộ phận. Không hiểu tại sao, code này chỉ lọc ra được 33 bộ phận (thiếu mất 5 bộ phận), nhưng khi ta gõ thêm những ký tự bất kỳ vào những dòng trống dưới cùng của cột bộ phận tại sheet DATA thì lúc này nó lại lọc đủ ra 38 bộ phận.

  2. Tương tự trường hợp trên: Cột Chức danh tại sheet DATA, nếu lọc ra danh mục duy nhất thì phải là 19 chức danh. Không hiểu tại sao, code này chỉ lọc ra được 14 bộ phận (thiếu mất 5 chức danh)...

Nhờ các bác nghiên cứu, xem xét (file gửi kèm)!

Cảm ơn các bác nhiều!
 

File đính kèm

Chào cả nhà!

Trong file đính kèm tại sheet DATA, căn cứ vào cột bộ phận, cột chức danh, tôi dùng code lọc danh mục duy nhất sang sheet "Tổng hợp nguồn nhân lực" để tính toán tổng hợp số liệu, các chỉ tiêu (theo như bảng biểu trong sheet "Tổng hợp nguồn nhân lực".

Phát sinh vấn đề sai lỗi, mình tìm mãi chẳng ra, như thế này:

  1. Cột Bộ phận tại sheet DATA, nếu lọc ra danh mục duy nhất thì phải là 38 bộ phận. Không hiểu tại sao, code này chỉ lọc ra được 33 bộ phận (thiếu mất 5 bộ phận), nhưng khi ta gõ thêm những ký tự bất kỳ vào những dòng trống dưới cùng của cột bộ phận tại sheet DATA thì lúc này nó lại lọc đủ ra 38 bộ phận.
  2. Tương tự trường hợp trên: Cột Chức danh tại sheet DATA, nếu lọc ra danh mục duy nhất thì phải là 19 chức danh. Không hiểu tại sao, code này chỉ lọc ra được 14 bộ phận (thiếu mất 5 chức danh)...

Nhờ các bác nghiên cứu, xem xét (file gửi kèm)!

Cảm ơn các bác nhiều!


Bạn trừ mất 5 dòng thì hỏi làm sao ra 38 được? Sửa lại như sau :

PHP:
Sub TaoBoPhan()
    Dim BoPhan As Range
    S01.Select
    On Error Resume Next
    S01.ShowAllData
    Range("HH3:HH1000").Clear
    eR = Range("D10000").End(xlUp).Row
    Set BoPhan = S01.Range("D3:D" & eR)
    With S01
        With BoPhan
            .AdvancedFilter Action:=xlFilterCopy, CopyToRange:=S01.Range( _
                "HH3"), Unique:=True
        End With
        .Names("Extract").Delete
        eR1 = .Range("HH1000").End(xlUp).Row
        S17.Range("A7:B55").ClearContents
        S17.Range("B7:B" & eR1 + 4).Value = .Range("HH3:HH" & eR1).Value
        S17.Range("A7:A" & eR1 + 4).FormulaR1C1 = "=ROW()-6"
        S17.Range("A7:A" & eR1 + 4).Value = S17.Range("A7:A" & eR1 + 4).Value
        .Range("HH3:HH" & eR1).Clear
    End With
    Set BoPhan = Nothing
End Sub


Nói cho rõ thêm : Cột HH của S01 bạn tính từ hàng thứ 3, cột A và B của S17 bạn tính bắt đầu từ hàng thứ 7, vì thế phải lấy eR1+4 là vì thế
Thân
 
Lần chỉnh sửa cuối:
Bạn trừ mất 5 dòng thì hỏi làm sao ra 38 được? Sửa lại như sau :

PHP:
Sub TaoBoPhan()
    Dim BoPhan As Range
    S01.Select
    On Error Resume Next
    S01.ShowAllData
    Range("HH3:HH1000").Clear
    eR = Range("D10000").End(xlUp).Row
    Set BoPhan = S01.Range("D3:D" & eR)
    With S01
        With BoPhan
            .AdvancedFilter Action:=xlFilterCopy, CopyToRange:=S01.Range( _
                "HH3"), Unique:=True
        End With
        .Names("Extract").Delete
        eR1 = .Range("HH1000").End(xlUp).Row
        S17.Range("A7:B55").ClearContents
        S17.Range("B7:B" & eR1 + 4).Value = .Range("HH3:HH" & eR1).Value
        S17.Range("A7:A" & eR1 + 4).FormulaR1C1 = "=ROW()-6"
        S17.Range("A7:A" & eR1 + 4).Value = S17.Range("A7:A" & eR1 + 4).Value
        .Range("HH3:HH" & eR1).Clear
    End With
    Set BoPhan = Nothing
End Sub


Nói cho rõ thêm : Cột HH của S01 bạn tính từ hàng thứ 3, cột A và B của S17 bạn tính bắt đầu từ hàng thứ 7, vì thế phải lấy eR1+4 là vì thế
Thân

Cảm ơn anh / chị nhiều!
Chúc anh / chị ngày càng nhiều sức khỏe, thành đạt & hạnh phúc!
 
Cảnh báo:
- Bạn Tony Jaa dùng Advanced Filter như thế chưa đúng đâu nha
- Dử liệu cần lọc tại sheet Data, tính từ cell D3 trở xuống ---> Như vậy bạn đã bỏ mất tiêu đề
- Cũng may là trong cột này chỉ có duy nhất 1 Record mang tên "Ban Tổng giám đốc"... nếu không bạn sẽ nhận được 2 Record trùng nhau sau khi lọc ---> Vì Advanced Filter luôn luôn tính cell đầu tiên là TIÊU ĐỀ
Bạn cẩn thận nha ---> Không phải lần nào cũng may mắn như lần này đâu
 
Cảnh báo:
- Bạn Tony Jaa dùng Advanced Filter như thế chưa đúng đâu nha
- Dử liệu cần lọc tại sheet Data, tính từ cell D3 trở xuống ---> Như vậy bạn đã bỏ mất tiêu đề
- Cũng may là trong cột này chỉ có duy nhất 1 Record mang tên "Ban Tổng giám đốc"... nếu không bạn sẽ nhận được 2 Record trùng nhau sau khi lọc ---> Vì Advanced Filter luôn luôn tính cell đầu tiên là TIÊU ĐỀ
Bạn cẩn thận nha ---> Không phải lần nào cũng may mắn như lần này đâu

Vậy phải sửa chỗ nào cho đúng tuyệt đối, bác chỉ cho em luôn đi?
Cảm ơn bác!
 
Lần chỉnh sửa cuối:
Vậy phải sửa chỗ nào cho đúng tuyệt đối, bác chỉ cho em luôn đi?
Cảm ơn bác!
Đúng như bạn yeudoi nói ấy... khi xác định vùng dử liệu sẽ lọc bằng Advanced Filter, bạn phải lấy luôn tiêu đề (cụ thể với file của bạn phải lấy từ cell D2 trở xuống) ---> Sau khi lọc ra vùng phụ, bạn xóa tiêu đề đi rồi muốn làm gì tiếp tùy thích
 
Cảnh báo:
- Bạn Tony Jaa dùng Advanced Filter như thế chưa đúng đâu nha
- Dử liệu cần lọc tại sheet Data, tính từ cell D3 trở xuống ---> Như vậy bạn đã bỏ mất tiêu đề
- Cũng may là trong cột này chỉ có duy nhất 1 Record mang tên "Ban Tổng giám đốc"... nếu không bạn sẽ nhận được 2 Record trùng nhau sau khi lọc ---> Vì Advanced Filter luôn luôn tính cell đầu tiên là TIÊU ĐỀ
Bạn cẩn thận nha ---> Không phải lần nào cũng may mắn như lần này đâu

Đúng là hôm qua chỉ chú ý đến vụ Thiếu dữ liệu mà không xem kỹ phần AD này. Khi lọc theo AD cần chú ý cả dòng tiêu đề
Thân
 
Đếm dữ liệu trùng

Vậy bạn tham khảo file đính kèm nhé.
Thân

Cám ơn anh đã coa một lời giải rất hay, nhưng nếu đặt trong vấn đề của tôi, thì nó đã giải quyết được 50% rồi, tức là anh đã tạo một cột mới, có các giá trị không trùng.

Tiếp theo, tôi muốn nhờ anh tao ra một cột nữa tương ứng mà nội dung là số lần một đối tượng trùng lặp như file tôi đính kèm.

Xin cám ơn!
 

File đính kèm

Cám ơn anh đã coa một lời giải rất hay, nhưng nếu đặt trong vấn đề của tôi, thì nó đã giải quyết được 50% rồi, tức là anh đã tạo một cột mới, có các giá trị không trùng.

Tiếp theo, tôi muốn nhờ anh tao ra một cột nữa tương ứng mà nội dung là số lần một đối tượng trùng lặp như file tôi đính kèm.

Xin cám ơn!

Bạn dùng hàm CountIf nhé

Cell H4=COUNTIF(Data!$B$2:$B$21,G4)

Thân
 
Lần chỉnh sửa cuối:
Vừa lọc ra 1 danh sách duy nhất lại vừa đếm số lần trùng ---> Vậy sao không dùng công cụ Consolidate cho nhanh, công thức chi cho rách việc!
 
Đây là công tức mình đang cần . cảm ơn các bác nhiều lắm
 
Em đã làm cách của bác nhưng nó copy y nguyên sang chứ không lọc các số trùng nhau được
Tại bạn làm chưa quen nên mới bị thế, chứ đây là cách nhanh nhất trong các cách đấy ---> Quy trình như sau:
- Vào menu Data\Filter\Advanced Filter
a) Mục Action chọn Filter the lis, in-place
b) Đặt con trỏ vào khung List range rồi quét chọn cột nào đó mà bạn muốn lọc (chỉ quét cột có chứa dử liệu trùng, không quét toàn bộ bảng tính)
c) Khung Criteria rangeCopy to: không dùng
d) Check vào mục Unique Records only
- Sau khi bấm OK, bảng tính sẽ được lọc ra với các phần tử duy nhất ---> Việc còn lại của bạn là copy chúng sang 1 nơi nào đó tùy thích
===> Không làm được, hãy đưa file mẩu lên đây!
-----------
Chứ lọc duy nhất mà dùng công thức hoặc AutoFilter là.. quá dở!
 
Giúp mình trong cái này luôn nhe

Mình muốn sắp xếp theo cột Suburb trong đó trước, sau đó lại tiếp tục sắp xếp theo địa chỉ ....

Mấy sếp giúp tui với nhé
Cách đơn giản nhất thôi
 

File đính kèm

Lọc dữ liệu trong một bảng(mảng hai chiều)

Giúp tôi lọc dữ liệu là thời khóa biểu của các giáo viên! đê kê khai giờ giảng trong tuần! tôi sắp vỡ đầu vì nó rồi+-+-+-++-+-+-++-+-+-+
làm ơn chỉ giáo!**~**
 

File đính kèm

Lần chỉnh sửa cuối:
Giúp Tôi Lọc thời khóa biểu của các giáo viên! để kê khai giờ giảng dạy trong tuần! Tôi sắp chết vì nó rồi không cách nào làm được. Xin cao chỉ giáo!

Giúp tôi lọc dữ liệu là thời khóa biểu của các giáo viên! đê kê khai giờ giảng trong tuần! tôi sắp vỡ đầu vì nó rồi+-+-+-+
làm ơn chỉ giáo!**~**
Thứ nhất: Bài của bạn phạm quy vì chen ngang vô topic có chủ đề hoàn toàn khác. (Sao bạn không qua BOX 'Giáo dục' hỏi vấn đề của bạn; Ở đó đề cập rất nhiều về thời khóa biểu)

Thứ hai: Đúng là bạn đưa ví dụ đó thì muốn hiểu cũng phải đoán thôi thầy/cô à!
Này nha, đây là ví dụ của thầy/cô:
|2|3|4|5|6|7|
| VH13 | VH32 || VH32 | VH13 | VH23 |
| VH32 | VH13 | VH32 | VH13 | VH23 | VH13 |
|VH8|VH8||VH8||VH8|
||| ||VH8|
||||VH14||
||VH31||VH31|||
Khi đó thầy/cô lại thống kê:
Nam|VH13|VH32|VH8|VH14|VH31|(Lớp)
(Số tiết)|8|12|8|2|4|

Thứ nhất: Bạn thiếu lịch lãm, khi bắt người đọc phải suy diễn để hiểu là 1 ô biểu thị 2 tiết học; Bạn nên nhớ rằng không phải ai cũng phải hiểu là 1 ô phải tính là 2 tiết học. Lỗi này sẽ nhỏ, nếu bạn thống kê hoàn toàn đúng, nhưng đằng này sai ở 3 nới khác nữa làm cho 1 số người trong đó có tôi tốn thêm thời gian không cần thiết cho lỗi sai của bạn;

Thứ hai (Ba lỗi đó là:)
(*) VH13 chiếm 5 ô mà thầy/cô thống kê chỉ 8 tiết;
(*) VH23 chiếm 2 ô mà thầy/cô không thống kê;
(*) VH32 lại chỉ chiếm 4 ô, nhưng thầy/cô ghi 12 tiết
Ở đây không thể gọi là nhầm lẫn giữa các lớp trong tuần, Thày/cô Nam được ghi đến 19 ô có tiết giảng, vị chi 38 tiết dạy!

. . . . . . . (Định nói nữa, nhưng thấy nặng lời quá, đành thôi)
 
Macro của bạn đây, xin mời

Giúp tôi lọc dữ liệu là thời khóa biểu của các giáo viên! đê kê khai giờ giảng trong tuần! tôi sắp vỡ đầu vì nó rồi+-+-+-++-+-+-++-+-+-+
làm ơn chỉ giáo!**~**

PHP:
Option Explicit:           Option Base 1
Sub AutoFilter()
 Dim Rng As Range, Clls As Range, sRng As Range, dRng As Range
 Dim MyAdd As String, Lop As String
 Dim Dong As Long
 Dim VTr As Byte, Tiet As Byte, Cot As Byte
 
 Set Rng = Selection:            Set dRng = Rng.Cells(1, 1)
 Dong = dRng.Row:                Cot = dRng.Column
 ReDim MDL(Dong To Dong + Rng.Rows.Count, Cot To Cot + Columns.Count) As Boolean
 Set dRng = Rng.Cells(1, 1).Offset(, 8)
 With dRng
   .Resize(2, 30).ClearContents
   .Value = "Lop":            .Offset(1).Value = "So Tiet"
 End With
 
 For Each Clls In Rng
   If MDL(Clls.Row, Clls.Column) = False Then
      VTr = InStr(Clls.Value, "(")
      If VTr > 0 Then Lop = Left(Clls.Value, VTr - 1)
      Set sRng = Rng.Find(Lop, , xlFormulas, xlPart)
      If Not sRng Is Nothing Then
         Tiet = 0
         If MDL(sRng.Row, sRng.Column) = False Then
            MyAdd = sRng.Address
            Do
               Tiet = Tiet + 1
               MDL(sRng.Row, sRng.Column) = True
               Set sRng = Rng.FindNext(sRng)
            Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
         End If
         If Tiet > 0 Then
            With Cells(dRng.Row, "IV").End(xlToLeft).Offset(, 1)
               .Value = Lop:           .Offset(1).Value = Tiet
            End With
         End If
      End If
   End If
 Next Clls
End Sub

(Đọc kỹ hướng dẫn sử dụng trước khi dùng:)

(*) Chép macro này vô CS VBE & gán nó 1 tổ hợp phím, VD {CTRL}+(SHIFT}+A
(*) Điều quan trong là phải chọn vùng cần lọc;
Thí dụ, bạn hãy chọn vùng 'B15:G18' bằng chuột
& bấm tổ hợp phím mà bạn đã gán cho macro để nó cung cấp cho bạn kết quả ở bên phải liền kề với vùng chọn của bạn

(+) Số tiết mình chưa nhân đôi
(+) Nếu vẫn chưa được thì, hoặc:
. Đọc trên diễ đàn tiếp
. Sẽ đưa file lên để bạn xem, nếu yêu cầu của bạn là chính đán.

Chúc vui!
 
Giúp tôi lọc dữ liệu là thời khóa biểu của các giáo viên! đê kê khai giờ giảng trong tuần! tôi sắp vỡ đầu vì nó rồi+-+-+-++-+-+-++-+-+-+
làm ơn chỉ giáo!**~**
Tại cell K7 bạn gõ vào công thức này xem:
PHP:
=COUNTIF($B$6:$G$11,K$6&"*")*2
Thêm 1 chuyện quan trọng:
- Dử liệu nhập thì ghi là VH32 nhưng vùng thống kê bạn lại gõ VH 32 (có khoảng trắng) thì trời nào tìm ra được ---> Sửa lại cho thống nhất trước!
 
Tôi thây vô cùng xấu hổ với lòng tốt của mọi người, rất mong được sự thông cảm-\\/.
Rất cám ơn sự giúp đơ của mọi người
Ban HYen17 đã cho tôi thấy sự cẩu thả của mình thật sự không còn lời nào để nói, kinh mong bạn ân xá
 
Lần chỉnh sửa cuối:
Vô cùng cám ơn bạn
Macro của bản chạy rất tốt nhưng nó chỉ chạy khi vùng chọn không chứa Hàm. Mà phàn lịch dạy của các giáo viên toàn chứa hàm " cai lan truoc up chỉ là mẫu tôi sẽ up cụ thể lịch giang dạy tôi đang sắp ngay ở dưoi đây". và tỗi cân bạn giúp một phần nữa là khi sắp trùng lịch thì tự động đổi mầu tiết trùng đó" Nội dung tôi ghi ỏ sheet T5 ". Xin giúp đỡ!$@!!
 

File đính kèm

Lần chỉnh sửa cuối:
Thân bác SA_QD
Bac có thể chuyên Macro thanh Ham tự định nghĩa giúp em không chứ cứ Tuần nào cũng phải dùng tay để thông kê cho gân hai chục giao viên. Macro cua
Bác chỉ chạy khi vùng chọn không chứa Hàm điều này làm em cu phai coopy di coopy lại rôi mới dùng duoc. Bac Thuong thi thuong cho chot**~**, en cam on nhiều}}}}}

Hu Hu! có ai Quen Bác SA_QD không nhờ Bác ấy giúp em nốt với!**~****~****~****~****~****~****~**

̣
 

File đính kèm

Lần chỉnh sửa cuối:
Bác chuyên Macro thanh Ham tự định nghĩa giúp em chứ. Bac Thuong thi thuong cho chot**~**, en cam on nhiều}}}}}
̣

Viết hàm cho bạn đã lâu, nhưng cáp của FPT bị ông Nhà đèn cúp mất tiêu; hôm nay mới gởi được:

PHP:
Option Explicit:           Option Base 1

Function TKTietHoc(LookUpRange As Range)
 Dim Clls As Range:                             ReDim KQua(2, 6)
 Dim SoLop As Byte, VTr As Byte, STt As Byte, vT2 As Byte
 Dim Lop As String, SLop As String
 
 KQua(1, 1) = "Lop":                            KQua(2, 1) = "So Tiet"
 SLop = "GPE"
 For Each Clls In LookUpRange
   If Clls.Value <> "" Then
      VTr = InStr(Clls.Value, "(")
      Lop = IIf(VTr > 0, Left(Clls.Value, VTr - 1), Clls.Value)
      If InStr(SLop, Lop) < 3 Then _
         SLop = SLop & Left(Lop & " ", 4)
      vT2 = InStr(SLop, Lop)
      STt = Switch(vT2 = 4, 2, vT2 = 8, 3, vT2 = 12, 4, vT2 = 16, 5, vT2 = 20, 6)
      
      If STt > 1 Then
         KQua(1, STt) = Lop
         KQua(2, STt) = 1 + KQua(2, STt)
      End If
   End If
 Next Clls
 TKTietHoc = KQua
End Function

Hướng dẫn sử dụng hàm mảng tự tạo:

(*) Dùng chuột chọt vùng J340:L343;
(*) Nhấn chuột lên thanh công thức & nhập cú pháp: =TKTietHoc(B330:G335)
(*) Kết thúc cũng bằng tổ hợp 3 phím giành cho hàm mảng.
 
Xóa các dòng giống nhau Exel2007

Tôi có một cột chứa danh sách mail (hàng chục nghìn mail, mỗi dòng là một địa chỉ mail), có quá nhiều mail giống nhau, bây giờ tôi muốn xóa các dòng có chứa những mail giống nhau đó đi

Làm ơn chỉ giùm tôi với !
Thanks !
 
Tôi có một cột chứa danh sách mail (hàng chục nghìn mail, mỗi dòng là một địa chỉ mail), có quá nhiều mail giống nhau, bây giờ tôi muốn xóa các dòng có chứa những mail giống nhau đó đi

Làm ơn chỉ giùm tôi với !
Thanks !
- Quét chọn cột dử liệu
- Vào tab Data, chọn mục Remove Duplicates
 
Lọc dữ liệu sang sheet khác đồng thời phân loại dữ liệu luôn

Em có 2 sheet dữ liệu: Giờ em muốn tạo một marco để mỗi khi mình chạy marco thì dữ liệu ở sheet 2 sẽ sắp xếp theo định dạng dữ liệu ở sheet1.Mong các bác giúp giùm. Tks a lot!
 

File đính kèm

Macro của bạn đây, xin mời

PHP:
Option Explicit
Sub GPE_Macro()
 Dim StrC As String, eRs As Long, Dem As Byte
 Dim Clls As Range
 
 eRs = [A65500].End(xlUp).Row
 Columns("A:E").Insert Shift:=xlToRight
 Range("G1:I" & eRs).Sort Key1:=[H2], Order1:=xlDescending, Header:=xlGuess
 [A1].Resize(, 2).Value = [f1].Resize(, 2).Value:        [c1].Value = [I1].Value
 [A1].Resize(, 3).Font.Bold = True
 For Each Clls In [H2].Resize(eRs - 1)
   If StrC <> Clls.Value Then
      StrC = Clls.Value:                                 Dem = 1
      With [b65500].End(xlUp).Offset(1)
         .Value = Clls.Value:                            .Font.Bold = True
         
         .Offset(1, 1) = Clls.Offset(, 1).Value
         .Offset(1).Value = Clls.Offset(, -1).Value:     .Offset(1, -1) = Dem
      End With
   Else
      Dem = Dem + 1
      With [b65500].End(xlUp).Offset(1)
         .Offset(, 1) = Clls.Offset(, 1).Value
         .Value = Clls.Offset(, -1).Value:               .Offset(, -1) = Dem
      End With
   End If
 Next Clls
End Sub
Đôi điều chú í: Chạy macro tại S2;
Lúc đó macro sẽ thêm vài cột để chép dữ liệu sang đó

Chúc vui!
 
Bác ơi! em muốn chuyển dữ liệu sang sheet mới thì làm thế nào?
 
Thì đây, tại Sheet1 đã được gán vô biến Sh

PHP:
Option Explicit
Sub GPE_Macro()
 Dim StrC As String, eRs As Long, Dem As Byte
 Dim Clls As Range, Sh As Worksheet '<='
 
 Sheet2.Select:                                    eRs = [A65500].End(xlUp).Row
 Range("b1:d" & eRs).Sort Key1:=[c2], Order1:=xlDescending, Header:=xlGuess
 Set Sh = Sheet1
 
 Sh.[A1].Resize(, 2).Value = [A1].Resize(, 2).Value:     Sh.[c1].Value = [D1].Value
 Sh.[A1].Resize(, 3).Font.Bold = True
 For Each Clls In [c2].Resize(eRs - 1)
   If StrC <> Clls.Value Then
      StrC = Clls.Value:                                 Dem = 1
      With Sh.[b65500].End(xlUp).Offset(1)
         .Value = Clls.Value:                            .Font.Bold = True
         
         .Offset(1, 1) = Clls.Offset(, 1).Value
         .Offset(1).Value = Clls.Offset(, -1).Value:     .Offset(1, -1) = Dem
      End With
   Else
      Dem = Dem + 1
      With Sh.[b65500].End(xlUp).Offset(1)
         .Offset(, 1) = Clls.Offset(, 1).Value
         .Value = Clls.Offset(, -1).Value:               .Offset(, -1) = Dem
      End With
   End If
 Next Clls
End Sub
 
bác ChanhTQ ơi!bác có thể giải thích giùm em đoạn lệnh từ for trở đi không?E ngâm mãi mà chưa hiểu đc.
 
Rất hay, cảm ơn bạn. Bạn xem nếu so sánh dữ liệu 1 cột của 2 sheet khác nhau, và giá trị trả lại là 1 sheet khác thì làm như thế nào. Giúp mình với nha
 
Hỏi về lọc ra danh sách duy nhất

Em có 1 cái danh sách khoảng 300 dòng, cấu trúc như sau:
Họ và tên / loại tài liệu mượn
1- Nguyễn Văn A / Sách 1
2- Trần Văn B / Sách 2
3- Nguyễn Văn C / Sách 3
4. Nguyễn Văn A / Sách 4
5- Trần Văn B / Sách 10
6- Nguyễn Văn C / Sách 11
.............

Nghĩa là 1 người có thể mượn nhiều loại sách
Bây giờ em muốn thống kê xem có bao nhiêu người mượn sách
Các bác giúp em cái nhé
 
Em có 1 cái danh sách khoảng 300 dòng, cấu trúc như sau:
Họ và tên / loại tài liệu mượn
1- Nguyễn Văn A / Sách 1
2- Trần Văn B / Sách 2
3- Nguyễn Văn C / Sách 3
4. Nguyễn Văn A / Sách 4
5- Trần Văn B / Sách 10
6- Nguyễn Văn C / Sách 11
.............

Nghĩa là 1 người có thể mượn nhiều loại sách
Bây giờ em muốn thống kê xem có bao nhiêu người mượn sách
Các bác giúp em cái nhé
Cho mình hỏi thêm là chuổi trên là trong cùng 1 cột hay là gồm có 3 cột khác nhau
Bạn nên gửi file lên xem nhé.
Nếu chưa gửi được bạn gửi về địa chỉ david@dowell-plus.co.kr mình sẽ up lên giúp bạn.
 
Em có 1 cái danh sách khoảng 300 dòng, cấu trúc như sau:
Họ và tên / loại tài liệu mượn
1- Nguyễn Văn A / Sách 1
2- Trần Văn B / Sách 2
3- Nguyễn Văn C / Sách 3
4. Nguyễn Văn A / Sách 4
5- Trần Văn B / Sách 10
6- Nguyễn Văn C / Sách 11
.............

Nghĩa là 1 người có thể mượn nhiều loại sách
Bây giờ em muốn thống kê xem có bao nhiêu người mượn sách
Các bác giúp em cái nhé

Ý bạn là đếm xem có bao nhiêu người khác nhau trong danh sách đó phải không??? Nếu vậy thì làm như sau :

Giả sử tên người mượn nằm trong vùng A2:A300, tại ô nào đó dùng công thức :
PHP:
=SUMPRODUCT(1/COUNTIF(A2:A300,A2:A300))
 
Em có 1 cái danh sách khoảng 300 dòng, cấu trúc như sau:
Họ và tên / loại tài liệu mượn
1- Nguyễn Văn A / Sách 1
2- Trần Văn B / Sách 2
3- Nguyễn Văn C / Sách 3
4. Nguyễn Văn A / Sách 4
5- Trần Văn B / Sách 10
6- Nguyễn Văn C / Sách 11
.............

Nghĩa là 1 người có thể mượn nhiều loại sách
Bây giờ em muốn thống kê xem có bao nhiêu người mượn sách
Các bác giúp em cái nhé


1/ Nếu chỉ muốn đếm xem có bao nhiêu người thì dùng công thức như bạn ptlong04x1
2/ Nếu muốn cụ thể xem danh sách cvó bao nhiêu người và liệt kê nó ra thì dung Advanced Filter(trong menu Data) với điều kiện Unique = true
 
Em cảm ơn các bác đã tận tình chỉ bảo (b)
 
Trích lọc dữ liệu duy nhất trong 1 bảng nhiều hàng nhiều cột.

Mình nhận được câu hỏi này từ bạn duyennt 6888 :


Tôi có bảng dữ liệu. Cần lọc sao cho chỉ xuất hiện dữ liệu một lần ở cột "kết quả trả về"

Nhờ mọi người xem giúp bạn ấy.


 

File đính kèm

Thêm 1 cách khác, bạn xem File, nhớ Enable Macro --> Chọn vùng dữ liệu (không chọn dòng tiêu đề) --> Nhấn nút.

PHP:
Sub UniqueFilter()
    Dim Cll As Range, i As Long, Ar()
    With CreateObject("Scripting.Dictionary")
        For Each Cll In Selection
            If .Exists(Cll.Value) = False And Cll <> "" _
            Then .Add Cll.Value, 1
        Next Cll
        Ar = .Keys
        For i = 0 To .Count - 1
            [F:F].Cells(i + 2) = Ar(i)
        Next i
    End With
    Range("F2", [F65000].End(xlUp)).Sort [F1], xlAscending
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Cái Function của bạn nhìn nó... kỳ kỳ thế nào ấy
Nếu vùng dử liệu là 1 cột, đương nhiên ta sẽ dùng Advanced Filter... bằng ngược lại, vùng dử liệu nằm lộn xộn, vừa dòng vừa cột thì nên dùng Dictionary Object
Đại khái thế này:
PHP:
Function UniqueList(Rng As Range)
  Dim Clls As Range
  On Error Resume Next
  With CreateObject("Scripting.Dictionary")
    For Each Clls In Rng
      .Add Clls.Value, ""
    Next
    UniqueList = .Keys
  End With
End Function
Ở trên là UDF để lấy danh sách duy nhất, tiếp theo ta sẽ tạo 1 sub làm công việc theo yêu câu:
PHP:
Sub GetUnique()
  Dim Src As Range, Des As Range
  Set Src = Application.InputBox("Chon vung du lieu", Type:=8)
  Set Des = Application.InputBox("Chon 1 cell de xuat du lieu", Type:=8)
  With Des.Resize(UBound(UniqueList(Src)) + 1)
    .Value = WorksheetFunction.Transpose(UniqueList(Src))
    .Sort .Cells(1, 1), 1, Header:=xlNo
  End With
End Sub
----------------------
Thêm 1 cách khác, bạn xem File, nhớ Enable Macro --> Chọn vùng dữ liệu (không chọn dòng tiêu đề) --> Nhấn nút.

PHP:
Sub UniqueFilter()
    Dim Cll As Range, i As Long, Ar()
    With CreateObject("Scripting.Dictionary")
        For Each Cll In Selection
            If .Exists(Cll.Value) = False And Cll <> "" _
            Then .Add Cll.Value, 1
        Next Cll
        Ar = .Keys
        For i = 0 To .Count - 1
            [F:F].Cells(i + 2) = Ar(i)
        Next i
    End With
    Range("F2", [F65000].End(xlUp)).Sort [F1], xlAscending
End Sub
Bạn dùng Dictionary Object là đúng rồi.. có điều, đã ra được đến .Keys thì tại sao lại phải For tiếp nữa nhỉ? ---> 2 vòng lập à?
Chổ này:
PHP:
Ar = .Keys
 For i = 0 To .Count - 1
   [F:F].Cells(i + 2) = Ar(i)
 Next i
Nên là
PHP:
Range("...gì gì đó...").Resize(....).Value = WorksheetFunction.Transpose(.Keys)
Hoặc code của bạn có thể sửa theo 1 hướng khác:
PHP:
Sub UniqueFilter()
  Dim Cll As Range, i As Long, Ar()
  On Error Resume Next
  With CreateObject("Scripting.Dictionary")
    For Each Cll In Selection
      If Not .Exists(Cll.Value) And Cll <> "" Then
        .Add Cll.Value, ""
        [F65000].End(xlUp)(2) = Cll.Value
      End If
    Next Cll
  End With
  Range("F2", [F65000].End(xlUp)).Sort [F1], xlAscending
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Sắp xếp chữ

Chào tất cả mọi người.
Tôi có vấn đề về việc sắp xếp ký tự như sau mà không biết làm thế nào.
Rất mong được mọi người giúp.
Trên một ô Excel có các ký tự A,B,C,D...nhưng bị xuống dòng bởi tổ hợp phím "Alt+Enter".
Tôi muốn sắp xếp lại thành một dòng như sau:
(có rất nhiều cell tương tự thế này)
Trướ Sau
A,B,C,D
E,F,G,H
K,L,M
A,B,C,D,E,F,G,H,K,L,M
Cảm ơn mọi người !
 

File đính kèm

Chào tất cả mọi người.
Tôi có vấn đề về việc sắp xếp ký tự như sau mà không biết làm thế nào.
Rất mong được mọi người giúp.
Trên một ô Excel có các ký tự A,B,C,D...nhưng bị xuống dòng bởi tổ hợp phím "Alt+Enter".
Tôi muốn sắp xếp lại thành một dòng như sau:
(có rất nhiều cell tương tự thế này)
Trướ Sau
A,B,C,D
E,F,G,H
K,L,M
A,B,C,D,E,F,G,H,K,L,M
Cảm ơn mọi người !
Tại cell B4 bạn gõ công thức này vào nhé:
PHP:
=SUBSTITUTE(A4,CHAR(10),",")
 
So sánh 1 số với dãy số

Rất mong các anh em trên GPE xem và hướng dẫn giúp trong điều kiện so sánh 1 số với dãy số trong trường hợp sau ( Được nêu cụ thể trong File đính kèm)
Xin được cám ơn trước.
Đính kèm File.
 

File đính kèm

Rất mong các anh em trên GPE xem và hướng dẫn giúp trong điều kiện so sánh 1 số với dãy số trong trường hợp sau ( Được nêu cụ thể trong File đính kèm)
Xin được cám ơn trước.
Đính kèm File.
Em nhìn kết quả và đoán thế này:
- Cell B6 có công thức:
PHP:
=IF(B5-G5+C5<=0,"",B5-G5+C5)
- Cell C6 có công thức:
PHP:
=IF(D5+MIN(B5-G5+C5,0)>0,D5+MIN(B5-G5+C5,0),"")
Các cell phía dưới tương tự (copy dòng 6 paste xuống)
 
Em nhìn kết quả và đoán thế này:
- Cell B6 có công thức:
PHP:
=IF(B5-G5+C5<=0,"",B5-G5+C5)
- Cell C6 có công thức:
PHP:
=IF(D5+MIN(B5-G5+C5,0)>0,D5+MIN(B5-G5+C5,0),"")
Các cell phía dưới tương tự (copy dòng 6 paste xuống)
---
Không phải như thế chú ơi. !$@!!
Anh minh họa B6 màu xanh: là kết quả tại B5 trước và sau khi xử lý.
B6, B7, B8.....: là các dòng tiếp tục phải xử lý theo các điều kiện được nêu theo B5.

Lý do: cần xử lý để chuyển số dư cuối kỳ theo từng mục lên thành đầu kỳ.

Cám ơn chú. Mong
---

Để cho rõ ràng hơn mong chú xem file đính kèm đã sắp xếp lại cho rõ
 

File đính kèm

Lần chỉnh sửa cuối:
Tôi không rõ việc chuyển số dư thế nào, nhưng theo mô tả tại ô K5 (từ file mới nhất):
x1=7 Nếu G5<B5
thì nhận kết quả B5=18(10-7+15), C5=20

Xin chỉ rõ: x1 = 7 là kết quả cần tìm có phải không? Nếu vậy thì có phải sửa B5 thành 18(10 - 7 + 15) tức là 18 bình phương (hay chỉ 18), và C5 được sửa thành 20
Hay x1 = 7 là đã có (tức là ô G5 đã có) thì sửa lại B5.
Nói chung tôi cảm thấy cần mô tả rõ hơn. nếu không, tính toán sẽ bị luẩn quẩn (lấy G5 so sánh với B5 để sửa B5).
 
Lần chỉnh sửa cuối:
Tôi không rõ việc chuyển số dư thế nào, nhưng theo mô tả tại ô K5 (từ file mới nhất):
x1=7 Nếu G5<B5
thì nhận kết quả B5=18(10-7+15), C5=20

Xin chỉ rõ: x1 = 7 là kết quả cần tìm có phải không? Nếu vậy thì có phải sửa B5 thành 18(10 - 7 + 15) tức là 18 bình phương (hay chỉ 18), và C5 được sửa thành 20
Hay x1 = 7 là đã có (tức là ô G5 đã có) thì sửa lại B5.
Nói chung tôi cảm thấy cần mô tả rõ hơn. nếu không, tính toán sẽ bị luẩn quẩn (lấy G5 so sánh với B5 để sửa B5).
---

Cám ơn bạn, tôi xin nói cho rõ:
Với G5= x1 => x1=7, x1=10....là nêu các trường hợp x1 xảy ra .
G5: số chi trã, khi có phát sinh được tính lần lượt đã chi trả cho kỳ xa nhất ( kỳ 1), tiếp tục đến kỳ 2, kỳ 3.
Thân chào.
---
To: ThanhPhuong: cám ơn sự nhiệt tình của bạn ( bài #12 )
 
Lần chỉnh sửa cuối:
Đây là code so sánh, chép vào Sheet cần thực hiện việc so sánh

PHP:
Sub SoSanh()
    n = InputBox("Du lieu bat dau tu dong thu", "So Sanh", 5)
    m = InputBox("Du lieu ket thuc tu dong thu", "So Sanh", 15)
    For i = n To m
        DK1 = Range("B" & i).Value
        DK2 = Range("G" & i).Value
        GT2 = Range("C" & i).Value
        GT3 = Range("D" & i).Value
        If DK1 > DK2 Then
            Range("H" & i) = DK1 - DK2 + GT2 'Bi-Gi+Ci
            Range("I" & i) = GT3 'Di
        ElseIf DK1 = DK2 Then
            Range("H" & i) = GT2 'Ci
            Range("I" & i) = GT3 'Di
        ElseIf DK1 < DK2 And DK2 < DK1 + GT2 Then
            Range("H" & i) = DK1 - DK2 + GT2 'Bi-Gi+Ci
            Range("I" & i) = GT3 'Di
        ElseIf DK2 > DK1 And DK2 = DK1 + GT2 Then
            Range("I" & i) = GT3 'Di
        ElseIf DK2 > DK1 And DK2 > DK1 + GT2 Then
            Range("I" & i) = DK1 + GT2 - DK2 + GT3 'Bi+Ci-Gi+Di
        ElseIf DK2 > GT1 + GT2 + GT3 Then
            '
        End If
    Next
End Sub


Do không hiểu hết vấn đề của bài toán nên còn bỏ ngỏ cái so sánh cuối cùng, bạn xem và ghi thêm nhé
Thân mến
 
Giúp lọc danh sách.

HI các bạn.

Mình muốn là khi phần chi tiết đánh thêm một mã hàng mới thì phần tổng hợp sẽ tự động add thêm vào. (Ô B17)
Tks.
 

File đính kèm

HI các bạn.

Mình muốn là khi phần chi tiết đánh thêm một mã hàng mới thì phần tổng hợp sẽ tự động add thêm vào. (Ô B17)
Tks.
Thử tạo 1 macro, khi nhập thêm tên hàng vào cột B thì kiểm tra xem bên Tổng Hợp đã có chưa = hàm countif. Nếu Countif=0 thì cộng thêm vào.
 
Ặc...!

Em chẳng biết gì về macro cả...!...Liệu dùng hàm có được không nhỉ...

Vì nếu chuyển sang máy người khác lại ko có macro thì trông chẳng ra sao..Thunghi nhỉ!!!!
 
Ặc...!

Em chẳng biết gì về macro cả...!...Liệu dùng hàm có được không nhỉ...

Vì nếu chuyển sang máy người khác lại ko có macro thì trông chẳng ra sao..Thunghi nhỉ!!!!
Dữ liệu của bạn có lớn không? Nếu không lớn thì dùng phương pháp trích lọc duy nhất thì không phải dùng đến Macro.
 
Dữ liệu của mình không nhiều lắm. Max 20 sản phẩm thôi.

Bạn có thể hướng dẫn qua file được không..! Tks very mục
 

File đính kèm

File đính kèm

cách tạo dấu côgn thức mà khi ấn phím F3 thì hiển thị như thế nào các bác nhỉ!?

Nếu viết cả ra thì dài quá
 

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

Back
Top Bottom