Chào bạn,
Muốn có kết quả như bạn cần thì sử dụng chức năng advanced filter nhé, đơn giản lắm. Bạn nghiên cứu nha.
Giờ em muốn kết quả ở 1 sheet khác cơ. Nên chức năng advanced filter trong trường hợp này chưa phát huy tác dụng.
Name DK của bạn nên sửa thành vầy thì mới ổn:Dùng công thức thì thế này bạn nhé, dạng bài này có rất nhiều trên diễn đàn mà! Xem file đính kèm nhé!
=IF(DL="","",IF(MATCH(DL,DL,0)=ROW(INDIRECT("1:"&ROWS(DL))),MATCH(DL,DL,0),""))
=OFFSET(Sheet1!$B$3;;;COUNTA(Sheet1!$B$3:$B$1000);)
Nếu dữ liệu có cell rổng thì name này cũng sai luônMở thêm vùng dữ liệu thì bạn có thể sửa name DL thành :
PHP:=OFFSET(Sheet1!$B$3;;;COUNTA(Sheet1!$B$3:$B$1000);)
(Mấy chiêu này bạn search bài của thầy Ndu và anhtuan1066 sẽ thấy rất nhiều kiểu lọc hay lắm đó!)
Nếu vậy thì sửa name DL thành thế này,mong thầy chỉ giáo thêm :Nếu dữ liệu có cell rổng thì name này cũng sai luôn
=OFFSET(Sheet1!$B$3;;;MAX(IF(LEN(Sheet1!$B$3:$B$1000)<>0;ROW(Sheet1!$B$3:$B$1000);""));)
Công thức mảng như vậy sẽ rất nặng! Vầy ngon hơn:Nếu vậy thì sửa name DL thành thế này,mong thầy chỉ giáo thêm :
PHP:=OFFSET(Sheet1!$B$3;;;MAX(IF(LEN(Sheet1!$B$3:$B$1000)<>0;ROW(Sheet1!$B$3:$B$1000);""));)
=OFFSET(Sheet1!$B$3,,,MATCH(REPT("z",255),Sheet1!$B$3:$B$1000),)
Nhưng nếu Vùng Dữ liệu có kiểu số ở dòng cuối cùng chứa dữ liệu thì name này cũng không chạy thầy à,Công thức của em đúng là hơi nặng nhưng nó lấy được cả dữ liệu dạng số ở dòng cuối cùng! Mong thầy chỉ thêm cho em!Công thức mảng như vậy sẽ rất nặng! Vầy ngon hơn:
Đây là công thức thường nên tốc độ nhanh hơnPHP:=OFFSET(Sheet1!$B$3,,,MATCH(REPT("z",255),Sheet1!$B$3:$B$1000),)
Anh xem lại chứ. Hình như em cũng biết Advanced fiter không lọc được sang sheet khác thì mới phải?bạn để trỏ chuột tới sheet cần lọc và sau đó lọc bình thường thôi có đâu mà chưa có tác dụng, bạn làm thừ đi nha
bạn xem kết quả tui lọc có đúng theo ý của bạn không, tui dùng addvan filter
Em cảm ơn anh nhiều! Có anh chỉ bây giờ em mới biết.domfootwear đã viết:Bạn đứng tại sheet khác cần đưa dữ liệu rồi lọc thử nhé.
Bạn đứng tại sheet khác cần đưa dữ liệu rồi lọc thử nhé.Anh xem lại chứ. Hình như em cũng biết Advanced fiter không lọc được sang sheet khác thì mới phải?
Kiểu số thì ta thay MATCH(REPT("z",255),Sheet1!$B$3:$B$1000) thành MATCH(9.99999999999999E+307,Sheet1!$B$3:$B$1000)Nhưng nếu Vùng Dữ liệu có kiểu số ở dòng cuối cùng chứa dữ liệu thì name này cũng không chạy thầy à,Công thức của em đúng là hơi nặng nhưng nó lấy được cả dữ liệu dạng số ở dòng cuối cùng! Mong thầy chỉ thêm cho em!
=OFFSET(Sheet1!$B$3,,,max(MATCH(REPT("z",255),Sheet1!$B$3:$B$1000),MATCH(9.99999999999999E+307,Sheet1!$B$3:$B$1000)),)
Thế này thôi bạn ạ :
PHP:=OFFSET(Sheet1!$B$3,,,max(MATCH(REPT("z",255),Sheet1!$B$3:$B$1000),MATCH(9.99999999999999E+307,Sheet1!$B$3:$B$1000)),)
Vì z là ký tự cuối cùng trong bảng chữ cái và 9.99999999999999E+307 là số lớn nhất mà Excel có thể hiểu được (sửa 307 thành 308 thì thua ngay ---> Thử biết liền)Thanks, siêu quá thế này bao giờ theo kịp, sao lai dùng z và 9.99999999999999E+307, sao không là 308 ah?
Không đi SN ah,
Bạn thử xem file xem đã đạt yêu cầu của bạn chưa.
Thì dùng Conditional Formating mà tô màu thôimình muốn tìm những giá trị trùng trong cột B . nó chỉ có 1 số serial trùng thôi ko phải tất cả
Công thức tại G3:Các cao thủ giúp mình công thức lọc các dữ liệu trung lặp để tính tổng mình đang làm bằng thủ câoong mất nhiều thời gian mà không chính sác và dữ liệu lại cập nhật thường xuyên lên mất công quá. Mình gửi file dữ liệu kem theo.
Xin cảm ơn trước nhe!
=INDEX($B$3:$B$322,MATCH(0,COUNTIF($G$2:G2,$B$3:$B$322),0))
Công thức tại G3:
Kết thúc bằng Ctrl-Shift-EnterMã:=INDEX($B$3:$B$322,MATCH(0,COUNTIF($G$2:G2,$B$3:$B$322),0))
Kéo xuống đến khi nào báo lỗi thì thôi.
Bạn sắp xếp thứ tự bằng SUBTOTAL, mình chưa biết nguyên nhân nhưng thường gặp tình trạng này, bạn thử thay công thức này: =IF($B6="","",MAX($A$5:A5)+1) vào A6 và kéo xuống rồi filter xem, mình test đã ok.Không hiểu sao file excel này của mình bị sao, khi lọc dữ liệu tại cột "Đăng ký nhu cầu sử dụng", mình muốn lọc riêng dữ liệu "NM2 hoặc NM3 hoặc NM4" thì nó luôn xuất hiện dòng cuối cùng. Như file đính kèm theo
CỘT SỐ THỨ TỰ BẠN DÙNG SUBTOTAL LÀ OK RỒI NHƯNG CÓ ĐIỀUKhông hiểu sao file excel này của mình bị sao, khi lọc dữ liệu tại cột "Đăng ký nhu cầu sử dụng", mình muốn lọc riêng dữ liệu "NM2 hoặc NM3 hoặc NM4" thì nó luôn xuất hiện dòng cuối cùng. Như file đính kèm theo
stt, ds là những name động. Cách tìm như sau:Em thấy trong file co stt, ds, là gì vậy anh. Em gà cái này lắm![]()
Em gửi file đính kèm, các anh chị trong diễn đàn giúp em với
Sheet 1: Là Sheet cập nhật dữ liệu
Sheet " Danh Sach": Là sheet kết quả
Từ sheet 1: nếu người nào (Có CNMD: Là điều kiện Lọc ) xuất hiện nhiều hơn 1 lần sẽ chỉ được liệt kê vào sheet " Danh sách " 1 lần
Mong nhận được sự giúp đỡ của các anh chị
Bảng kết quả không giống với những gì bạn diễn tả, làm đúng kết quả bạn mong muốn nhé. Tại sheet Danh sach :Em gửi file đính kèm, các anh chị trong diễn đàn giúp em với
Sheet 1: Là Sheet cập nhật dữ liệu
Sheet " Danh Sach": Là sheet kết quả
Từ sheet 1: nếu người nào (Có CNMD: Là điều kiện Lọc ) xuất hiện nhiều hơn 1 lần sẽ chỉ được liệt kê vào sheet " Danh sách " 1 lần
Mong nhận được sự giúp đỡ của các anh chị
=LOOKUP(REPT("z",255),CHOOSE({1;2},"",INDEX(Sheet1!$C$8:$C$75,MATCH(TRUE,INDEX(ISNA(MATCH(Sheet1!$C$8:$C$75,$C$7:$C7,0)),0),0))))
=INDEX(Sheet1!$A$8:$A$75,MATCH('Danh Sach'!C8,Sheet1!$C$8:$C$75,0),1)
Có thể dùng pivot hoặc filter trong trường hợp này.Bảng kết quả không giống với những gì bạn diễn tả, làm đúng kết quả bạn mong muốn nhé. Tại sheet Danh sach :
1. Công thức tại C8 :
Copy xuốngPHP:=LOOKUP(REPT("z",255),CHOOSE({1;2},"",INDEX(Sheet1!$C$8:$C$75,MATCH(TRUE,INDEX(ISNA(MATCH(Sheet1!$C$8:$C$75,$C$7:$C7,0)),0),0))))
2. Công thức tại A8 :
Copy xuốngPHP:=INDEX(Sheet1!$A$8:$A$75,MATCH('Danh Sach'!C8,Sheet1!$C$8:$C$75,0),1)
Neu ban ko xai advanced filter thi co the dung VBA macro nhu sau:
-------------------------
Sub GiatriDuyNhat()
Dim i As Long
Dim HangCuoi As Long
HangCuoi = Range("A65536").End(xlUp).Row
For i = 1 To HangCuoi
If Application.WorksheetFunction.CountIf(Range("A1:A" & HangCuoi), Range("A" & i).Text) = 1 Then Range("B65536").End(xlUp)(2, 1).Value = Range("A" & i).Text
Next i
End Sub
------------------------
Can luu y: du lieu can loc o cot A va khi khoi dong macro ke qua se duoc liet ke qua cot B.
Topic đã tạo sao sao không tiếp tục, Bạn không "trung thành" với những cái của mình sao?Mình có một danh sách có cột B là tên sách, cột H là cột ghi chú, do tên sách mình lưu trữ từ nhiều năm nên rất nhiều hàng, nếu mình muốn dùng cột H để ghi chú những tên sách bị trùng thì mình phải làm sao. Nhờ bạn giúp mình với. Cảm ơn nhiều
cám ơn anh hoangvuluan nhưng em cần lọc các tên trùng nhau như AA,AA... BB, BB nằm liền kề nhau cơ ạ.hic
PS: em ko thấy tiện ích gõ TV ở web minh chỗ nào cả,thỉnh thoảng viết lại không bị nữa.khó hiểu quá.
Nếu giống như những gì bạn mô tả thì bạn chỉ cần dùng chức năng SORT của excel sau đó copy ra cột số 3 là xong, vừa nhanh gọn mà k cần công thức phức tạp.xin chào các ạnh chị!
em có chút rắc rối mong các pro tháo gỡ giúp
em có 1 bảng excel mà tuần nào cũng phải làm.hix.trong bảng này có 1 cột có nhiều tên trùng nhau,các cột thì # nhau.Em muốn lọc các tên trùng nhau trong cột này để nhập dữ liệu vào các cột # như là chức năng Auto Filter ý ạ.VD:
cột 1 cột 2 cột 3
AA ----x
BB ----x
CC
DD
EE
AA ----------x
BB -----------x
Ở đây em muốn lọc ra các tên giống nhau nằm cạnh nhau như là chức năng Auto Filter ý ạ để sao chép các số liệu (x) từ AA, BB ... lên cột 3 AA,BB ...ạ
cột 1 cột 2 cột 3
AA -----x
AA ----------x
BB -----x
BB -----------x
em đang cần rất gấp mong anh chị giúp đỡ.thank all!!!
Giả sử dữ liệu gốc bắt đầu từ A2, bạn sử dụng công thức sau cho ô B2 và copy xuống dưới:Địa chỉ mail có dạng này:
Em muốn dùng excel lọc bỏ hết chỉ còn thế này thì làm thế nào ạ"nguyen, thuong" <thuongbhtt@gmail.com>,
"Nguyen, Tien" <amen2502@gmail.com>,
"Nguyen, Tuan" <tuanpt@gmail.com>,
"Nguyen, Van Minh" <ami8688@gmail.com>,
"Nguyen, Xuan Thang"<nhatthanh_ses@yahoo.com.vn>,
thuongbhtt@gmail.com,
amen2502@gmail.com ,
tuanpt@gmail.com ,
ami8688@gmail.com ,
nhatthanh_ses@yahoo.com.vn ,
Chỉ dùm em cách lọc bỏ những mail bị trùng lặp
Thanks a/c !
=MID(A2,FIND("<",A2)+1,FIND(">",A2)-FIND("<",A2)-1)
Lần đầu chỉ cần *< là được rồi, sao phải "*"*< cho rối mắt thế nhỉ?1. Tìm và thay thế:
- Ctrl+H, ở khung Find what nhập "*"*< Repalace All.
- Ctrl+H, ở khung Find what nhập >, Repalace All.
2. Xóa mail trùng lập:
Ở thẻ Table Tools (Hoặc Data) bạn chọn biểu tượng Remove Duplicates
hàm này lọc lọc những dạng thế này "nguyen, thuong" <thuongbhtt@gmail.com>,=MID(A2,FIND("<",A2)+1,FIND(">",A2)-FIND("<",A2)-1)
cái này thì đưa về dạng này nhatthanh_ses@yahoo.com.vn, và <nhatthanh_ses@yahoo.com.vn>,Lần đầu chỉ cần *< là được rồi, sao phải "*"*< cho rối mắt thế nhỉ?
Mình thấy anh nghiaphuc làm đúng yêu cầu của bạn rồi đó, lọc dữ liêu nằm trong cặp dấu "<...>" giờ bạn muốn có dấu "," sau những địa chỉ lọc được thì bạn thêm thế này vào công thức của anh nghiaphuc.hàm này lọc lọc những dạng thế này "nguyen, thuong" <thuongbhtt@gmail.com>,
còn những dạng ami8688@gmail.com, thì ko lọc được báo lỗi anh , mà nếu lọc đc thì kết thúc ko có dấu phảy
cái này thì đưa về dạng này nhatthanh_ses@yahoo.com.vn, và <nhatthanh_ses@yahoo.com.vn>,
và <<nhatthanh_ses@yahoo.com.vn>>, và <<<thành công >>>
mà em chỉ cần về dạng nhatthanh_ses@yahoo.com.vn,để tìm các tìm đc các mail trùng lặp chứ các dạng còn lại thì ko lọc đc các mail trùng lặp đc
Nên em nghĩ dùng hàm lọc là nhanh nhất để đưa về nhatthanh_ses@yahoo.com.vn, (kết thức có dấu phảy) để dễ lọc các mail trùng và gửi mail dễ dàng
Thanks a/c !
Địa chỉ mail có dạng này:
Em muốn dùng excel lọc bỏ hết chỉ còn thế này thì làm thế nào ạ"nguyen, thuong" <thuongbhtt@gmail.com>,
"Nguyen, Tien" <amen2502@gmail.com>,
"Nguyen, Tuan" <tuanpt@gmail.com>,
"Nguyen, Van Minh" <ami8688@gmail.com>,
"Nguyen, Xuan Thang"<nhatthanh_ses@yahoo.com.vn>,
thuongbhtt@gmail.com,
amen2502@gmail.com ,
tuanpt@gmail.com ,
ami8688@gmail.com ,
nhatthanh_ses@yahoo.com.vn ,
Chỉ dùm em cách lọc bỏ những mail bị trùng lặp
Thanks a/c !
Sao từ đầu bạn không đưa file đính kèm với đủ thứ các gì gì mà bạn muốn?hàm này lọc lọc những dạng thế này "nguyen, thuong" <thuongbhtt@gmail.com>,
còn những dạng ami8688@gmail.com, thì ko lọc được báo lỗi anh , mà nếu lọc đc thì kết thúc ko có dấu phảy
cái này thì đưa về dạng này nhatthanh_ses@yahoo.com.vn, và <nhatthanh_ses@yahoo.com.vn>,
và <<nhatthanh_ses@yahoo.com.vn>>, và <<<thành công >>>
mà em chỉ cần về dạng nhatthanh_ses@yahoo.com.vn,để tìm các tìm đc các mail trùng lặp chứ các dạng còn lại thì ko lọc đc các mail trùng lặp đc
Nên em nghĩ dùng hàm lọc là nhanh nhất để đưa về nhatthanh_ses@yahoo.com.vn, (kết thức có dấu phảy) để dễ lọc các mail trùng và gửi mail dễ dàng
Thanks a/c !
các dữ liệu chưa đúng dạng thì nó đưa về đúng dạng mình cần=MID(A2,FIND("<",A2)+1,FIND(">",A2)-FIND("<",A2)-1)&","
Tốt nhất mình nghĩ bạn nên đưa bảng tính của bạn lên diễn đàn để mọi người quan sát cho ý kiến, mọi người không thể ngồi đây mà hình dung, tưởng tượng ra bạn cần cái gì, lọc cái gì.các dữ liệu chưa đúng dạng thì nó đưa về đúng dạng mình cần
còn dữ liệu đã đúng dạng của hàm nó ko hiển thị ra anh
em muốn các dạng đúng hay ko đúng đều hiển thị qua cột đang lọc luôn 1 lần
thanks a/c
OK! Càng biết các dốt! Càng kĩ càng... tệ. Thanks!Lần đầu chỉ cần *< là được rồi, sao phải "*"*< cho rối mắt thế nhỉ?
=MID(A2,FIND("<",A2)+1,FIND(">",A2)-FIND("<",A2)-1)&","
các dữ liệu chưa đúng dạng thì nó đưa về đúng dạng mình cần
còn dữ liệu đã đúng dạng của hàm nó thì ko hiển thị ra anh ak
em muốn các dạng đúng hay ko đúng đều hiển thị qua cột B đang lọc luôn 1 lần
thanks a/c
=TRIM(IF(COUNTIF($A2,"*<*"),MID(SUBSTITUTE(SUBSTITUTE(TRIM($A2),"<",REPT(" ",255)),">",""),255,255),$A2))
em dùng hàm này nó vẫn đưa địa chỉ mail về dạng em cần nhưng vẫn chưa chuẩn địa chỉ mail=TRIM(IF(COUNTIF($A2,"*<*"),MID(SUBSTITUTE(SUBSTITUTE(TRIM($A2),"<",REPT(" ",255)),">",""),255,255),$A2))
Tôi đã dùng hàm TRIM để loại bỏ khoảng trắng thừa rồi còn gì ---> Sao lại có chuyện như bạn nói chứem dùng hàm này nó vẫn đưa địa chỉ mail về dạng em cần nhưng vẫn chưa chuẩn địa chỉ mail
vd
ngoctoan@gmail.com,
. ngoctoan@gmail.com,
địa chỉ mail thì giống nhau nhưng khi dùng hàm loại bỏ các mail bị trùng thì nó vẫn ko hiểu 2 mail này là 1 vì mail thứ 2 có khoảng trống (space) nên vẫn ko hiểu 2 mail này là 1
anh sửa dùm em cho hàm đó chuẩn hơn nữa (ko có khoảng trống phía trước) dùm em để em dùng hàm lọc các mail bị trùng để loại bỏ bớt , thanks a !
em dùng hàm này nó vẫn đưa địa chỉ mail về dạng em cần nhưng vẫn chưa chuẩn địa chỉ mail
vd
ngoctoan@gmail.com,
. ngoctoan@gmail.com,
địa chỉ mail thì giống nhau nhưng khi dùng hàm loại bỏ các mail bị trùng thì nó vẫn ko hiểu 2 mail này là 1 vì mail thứ 2 có khoảng trống (space) nên vẫn ko hiểu 2 mail này là 1
anh sửa dùm em cho hàm đó chuẩn hơn nữa (ko có khoảng trống phía trước) dùm em để em dùng hàm lọc các mail bị trùng để loại bỏ bớt , thanks a !
Trong dữ liệu của bạn có chứa 1 loai ký tự đặc biệt chrw(160) nên hàm trim không thể xử lý được.còn những dữ liệu ko có dấu phảy ở cuối nó cũng ko tự thêm đc
em đã gởi file anh xem dùm giúp dùm em anh nhé thanks anh !
Tức là sao đây? Ý bạn muốn kết quả luôn có dấu phẩy ở cuối chuổi, bất kể dữ liệu đầu vào có dấu phẩy này hay không, đúng không?còn những dữ liệu ko có dấu phảy ở cuối nó cũng ko tự thêm đc
em đã gởi file anh xem dùm giúp dùm em anh nhé thanks anh !
=SUBSTITUTE(TRIM(IF(COUNTIF($A2,"*<*"),MID(SUBSTITUTE(SUBSTITUTE(TRIM($A2),"<",REPT(" ",255)),">",""),255,255),$A2)),",","")&","
Trong dữ liệu của bạn có chứa 1 loai ký tự đặc biệt nên hàm trim không thể xử lý được.còn những dữ liệu ko có dấu phảy ở cuối nó cũng ko tự thêm đc
em đã gởi file anh xem dùm giúp dùm em anh nhé thanks anh !
vấn đề em nói là chổ này , vì có khoảng trắng phía trước nên , dùng hàm tìm những mail trùng lặp ko đcLưu ý đặc biệt: Tôi thấy các chuổi trong file của bạn có 1 ký tự lạ ở đầu chuổi đấy nha! Chẳng hạn tại A5, có ký tựCHAR(160) ở đầu chuổi ---> Nhìn giống khoảng trắng nhưng không phải là khoảng trắng
công thức này dùng đc mà anh , ko biết sai gì anh ?=SUBSTITUTE(A2,CHAR(160),"")
=SUBSTITUTE(TRIM(IF(COUNTIF($A2,"*<*"),MID(SUBSTITUTE(SUBSTITUTE(TRIM($A2),"<",REPT(" ",255)),">",""),255,255),$A2)),",","")&","
công thức này dùng đc mà anh , ko biết sai gì anh ?
em muốn dùng 1 công thức , anh chỉnh dùm em lại công thức này anh nhé
thanks anh !
hic,em ko biết sài VBA , sữa dùm em hàm anh nhé , thanks anh !
=SUBSTITUTE(SUBSTITUTE(TRIM(IF(COUNTIF($A2,"*<*"),MID(SUBSTITUTE(SUBSTITUTE(TRIM($A2),"<",REPT(" ",255)),">",""),255,255),$A2)),",","")&",",CHAR(160),"")
Dữ liệu hơn ngàn dòng mà dùng công thức chắc hơi "oải".Em chào các anh chị trong diễn đàn.
Em có một tình huống mong anh chị giúp đỡ.
Trong file em đính kèm, có 2 cột được highlight màu vàng, ở trong 2 côt đó thì có chứa các dữ liệu trùng nhau. Giờ em muốn trích lọc ra một bảng khác mà chỉ lấy giá trị duy nhất, không trùng lặp thì phải sử dụng công thức và hàm như thế nào ạ?
--
Nếu dữ liệu chỉ có vài chục dòng thì xem file này, thêm 1 cột phụ rồi dùng công thức + NameChào các bạn, mình muốn lọc ra kết qủa duy nhất
Mình có giải thích trong File đính kèm
Cảm ơn cả nhà!
Không cột phụ cũng được mà anhNếu dữ liệu chỉ có vài chục dòng thì xem file này, thêm 1 cột phụ rồi dùng công thức + Name
Nếu dữ liệu nhiều hơn thì nên dùng VBA cho "tốc độ".
tmp =$O$6:$O$100 & CHAR(1) & $P$6:$P$100 & CHAR(1) & $Q$6:$Q$100
pos =IF(tmp =REPT(CHAR(1),2),"",IF(MATCH(tmp, tmp,0) =ROW(INDIRECT("1:"&COUNTA(tmp))),MATCH(tmp,tmp,0),""))
=TRIM(MID(SUBSTITUTE(IF(ROWS($1:1)>COUNT(pos),"",INDEX(tmp,SMALL(pos,ROWS($1:1)))),CHAR(1),REPT(" ",255)),(COLUMNS($A:A)-1)*255+1,255))
Dữ liệu của em không nhiều, nhưng Khối cell O6:Q16 của em là kết qủa của các công thức, nên khi áp dụng các công thức của anh thì tại các cell của cột K, L, M em phải chọn cell rồi bấm F2 thì công thức mới cập nhật (bấm F9 nó không "xi nhê")Nếu dữ liệu chỉ có vài chục dòng thì xem file này, thêm 1 cột phụ rồi dùng công thức + Name
Nếu dữ liệu nhiều hơn thì nên dùng VBA cho "tốc độ".
Dữ liệu của em không nhiều, nhưng Khối cell O6:Q16 của em là kết qủa của các công thức, nên khi áp dụng các công thức của anh thì tại các cell của cột K, L, M em phải chọn cell rồi bấm F2 thì công thức mới cập nhật (bấm F9 nó không "xi nhê")
Anh giúp em viết code , tại Cell L5, em có dùng Validation để chọn để ra kết qủa của Khối cell O6:Q16
Em cảm ơn tất cả các anh chị!
Tôi đã record Macro, nhưng không xử lý được hai dòng vẫn trùng nhauThế thì bạn dùng Advanced Filter\Unique đi ---> 1 phát ra ngay thôi mà (record macro để biết code viết thế nào)
Với Excel 2007 cũng có thể dùng Remove Duplicate
Tôi đã record Macro, nhưng không xử lý được hai dòng vẫn trùng nhau
Nhờ bạn giúp đỡ. Xin cảm ơn
Hi, ở đây mình không sử dụng dòng tiêu đề! nên không biết có cách nào không?Bạn phải chừa dòng tiêu đề nữa chứ, nó ngầm hiểu dòng thứ 6 là tiêu đề.
Một là bạn tự gõ tiêu đề vào nếu dùng Advanced Filter (tại quy định nó vậy). Hai là bạn dùng Remove DuplicateHi, ở đây mình không sử dụng dòng tiêu đề! nên không biết có cách nào không?
Sub Macro1()
With Range("K6:M10000")
.Value = Range("O6:Q10000").Value
.RemoveDuplicates Array(1, 2, 3), xlNo
End With
End Sub
Hi, ở đây mình không sử dụng dòng tiêu đề! nên không biết có cách nào không?
Sau khi chạy Code trên thì:Một là bạn tự gõ tiêu đề vào nếu dùng Advanced Filter (tại quy định nó vậy). Hai là bạn dùng Remove Duplicate
Mã:Sub Macro1() With Range("K6:M10000") .Value = Range("O6:Q10000").Value .RemoveDuplicates Array(1, 2, 3), xlNo End With End Sub
Sau khi chạy Code trên thì:
1/ Nó báo lỗi "Object doesn't Support thí property or method" tại ".RemoveDuplicates Array(1, 2, 3), xlNo"
2/ Và nó lấy toàn bộ của cột O, P, Q qua K, L, M
Cảm ơn bạn!
Tôi đang sử dụng Ex 2003!!!Đã nói đến Remove Duplicate thì bạn phải biết rằng nó chỉ hoạt động trên Excel 2007 trở lên
Bạn dùng Excel 2003 chăng?
Tôi đang sử dụng Ex 2003!!!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Dic As Object, Sar(), dAr(1 To 11, 1 To 3), I As Long, J As Long, K As Long, Tem As String
Set Dic = CreateObject("Scripting.Dictionary")
If Target.Address = "$L$5" Then
Sar = [O6:Q16].Value
For I = 1 To 11
Tem = Sar(I, 1) & "#" & Sar(I, 2) & "#" & Sar(I, 3)
If Not Dic.Exists(Tem) Then
K = K + 1: Dic.Add Tem, ""
For J = 1 To 3
dAr(K, J) = Sar(I, J)
Next J
End If
Next I
[K6:M16].ClearContents
If K Then [K6].Resize(K, 3).Value = dAr
End If
Set Dic = Nothing
End Sub
Dạ code của anh chạy rất tốt ạ!Tui cũng xài 2003 nè. Xem thử code này có chạy được không:
PHP:Private Sub Worksheet_Change(ByVal Target As Range) Dim Dic As Object, Sar(), dAr(1 To 11, 1 To 3), I As Long, J As Long, K As Long, Tem As String Set Dic = CreateObject("Scripting.Dictionary") If Target.Address = "$L$5" Then Sar = [O6:Q16].Value For I = 1 To 11 Tem = Sar(I, 1) & "#" & Sar(I, 2) & "#" & Sar(I, 3) If Not Dic.Exists(Tem) Then K = K + 1: Dic.Add Tem, "" For J = 1 To 3 dAr(K, J) = Sar(I, J) Next J End If Next I [K6:M16].ClearContents If K Then [K6].Resize(K, 3).Value = dAr End If Set Dic = Nothing End Sub
Yêu cầu công dồn này quá dễ:Dạ code của anh chạy rất tốt ạ!
Anh vui lòng giúp em thêm 1 bài nữa là vừa lọc duy nhất và cộng dồng số tiền nếu cùng MÃ
Và cũng sử dụng sự kiện Sub Worksheet_Change
Em có giải thích trong File
Em cảm ơn!
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$L$5" Then
With Range("L6:M1000")
.ClearContents
.Cells(1, 1).Consolidate Range("O6:P1000").Address(, , 2), 9, 0, 1
End With
End If
End Sub
Cách làm này cũng hay, nhưng mà chức năng filter bị giới hạn trong excel 2003, khi số lượng hàng quá lớn.Ví dụ cột chứa dữ liệu của bạn là cột A.
Cột cần lọc ra danh sách xuất hiện duy nhất là cột B
Ở ô B1 bạn gõ công thức: =if(countif($A$1:A1;A1)>1;"";A1)
Sau đó kéo fill down đến hết dòng cuối cùng.
Ở cột B bạn chọn lọc non blank là ra danh sách giá trị duy nhất của cột A như bạn muốn
File bạn nên dùng code thích hơp nhất hoặc pivotGửi các bạn trên GPE!
Mình có 2 danh sách ngày tháng nằm ở sheet1 và sheet2, mình muốn từ 2 danh sách đó tạo ra 1 danh sách ngày tháng duy nhất tại sheet3.
Mong các bạn giúp đỡ!
File bạn mình nghĩ nên dùng code thích hơp nhất hoặc pivotGửi các bạn trên GPE!
Mình có 2 danh sách ngày tháng nằm ở sheet1 và sheet2, mình muốn từ 2 danh sách đó tạo ra 1 danh sách ngày tháng duy nhất tại sheet3.
Mong các bạn giúp đỡ!
Muốn dic thì có dít luôn xem file coi nhenAnh chị nào rành cái dzụ dictionary giúp em cái này tí (mục đích để học hỏi chứ với dữ liệu này thì chắc không cần các anh chị đao to búa lớn làm gì)
- Thứ nhất: Chỉ 1 vòng lập là được rồiMuốn dic thì có dít luôn xem file coi nhen
[GPECODE=vb]
Sub DicOnly()
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
Dim sh As Worksheet
Dim sRange, i As Long
For Each sh In Sheets
If sh.CodeName = "Sheet1" Then
sRange = Sheets("Sheet1").Range("A4:A" & Sheets("Sheet1").Range("A14").End(xlDown).Row).Value
For i = 1 To UBound(sRange)
If Not Dic.Exists(sRange(i, 1)) Then
Dic.Add sRange(i, 1), ""
End If
Next i
End If
If sh.CodeName = "Sheet2" Then
sRange = Sheets("sheet2").Range("C9:C" & Sheets("sheet2").Range("C9").End(xlDown).Row).Value
For i = 1 To UBound(sRange)
If Not Dic.Exists(sRange(i, 1)) Then
Dic.Add sRange(i, 1), ""
End If
Next i
End If
Next
If Dic.Count Then Sheets("sheet4").Range("A1").Resize(Dic.Count, 1).Value = Application.Transpose(Dic.Keys)
End Sub
[/GPECODE]