PDA

View Full Version : Tìm kiếm và trích lọc giá trị trùng?



vutangvn
18-12-09, 08:14 AM
Em có bảng sau, muốn tìm kiếm và trích lọc giá trị trùng từ 2 bảng gộp lại 1.
Vì trong bảng có 2 cột giống nhau,
Ai giúp em vụ này cái !

MinhCong
18-12-09, 08:30 AM
Em có bảng sau, muốn tìm kiếm và trích lọc giá trị trùng từ 2 bảng gộp lại 1.
Vì trong bảng có 2 cột giống nhau,
Ai giúp em vụ này cái !
Bạn dùng hàm VLOOKUP nhé. Tại ô C2

VLOOKUP($A2;$D$11:$G$19;COLUMN()-1;0)

vutangvn
18-12-09, 08:51 AM
Ý của em là trích lọc ra, để xoá phần thừa và có thể chỉnh sửa dữ liệu trên bảng mới, chứ ko phải tham chiếu.
Thanks bác !

yeuthamhangxom
18-12-09, 08:54 AM
Bạn dùng hàm VLOOKUP nhé. Tại ô C2

VLOOKUP($A2;$D$11:$G$19;COLUMN()-1;0)
Bạn MinCuong cho mình hỏi trong hàm Vlookup của bạn làm có thể thay COLUMN()-1 bằng số 2 và 4 được không mình chưa hiểu hàm này lắm. Bạn giải thích giúp mình nha.

Ba Tê
18-12-09, 09:10 AM
Bạn MinCuong cho mình hỏi trong hàm Vlookup của bạn làm có thể thay COLUMN()-1 bằng số 2 và 4 được không mình chưa hiểu hàm này lắm. Bạn giải thích giúp mình nha.
------
Bạn chọn 1 ô trong cột D chẳng hạn, gõ

=column()
sẽ thấy bằng 4, số 4 này là số cột của cột D, thử các cột khác sẽ thấy và "ngâm cứu".
Thân.

MinhCong
18-12-09, 09:13 AM
Ý của em là trích lọc ra, để xoá phần thừa và có thể chỉnh sửa dữ liệu trên bảng mới, chứ ko phải tham chiếu.
Thanks bác !
Bạn ghi lại yêu cầu rõ trong file để Tôi sửa lại cho, chưa hiểu rõ ý của Bạn lắm?

havietchuong
18-12-09, 09:25 AM
Em có bảng sau, muốn tìm kiếm và trích lọc giá trị trùng từ 2 bảng gộp lại 1.
Vì trong bảng có 2 cột giống nhau,
Ai giúp em vụ này cái !

Hơi thủ công 1 chút. Bạn xem thử có đúng ý bạn không?

Ba Tê
18-12-09, 10:05 AM
Hơi thủ công 1 chút. Bạn xem thử có đúng ý bạn không?
------
Đúng là "hơi" thủ công, 3 cột của Bạn là 3 công thức, dù là chỉ cần sửa các số 2,3,4, trong khi công thức của Bạn MinhCong thì tổng quát hơn, một công thức có thể dùng chung cho nhiều cột, tôi thích kiểu này hơn.
Thân mến đồng hương.

havietchuong
18-12-09, 10:12 AM
------
Đúng là "hơi" thủ công, 3 cột của Bạn là 3 công thức, dù là chỉ cần sửa các số 2,3,4, trong khi công thức của Bạn MinhCong thì tổng quát hơn, một công thức có thể dùng chung cho nhiều cột, tôi thích kiểu này hơn.
Thân mến đồng hương.

Như vậy mới là học hỏi phải không? Qua ý kiến của bạn, tôi mới tìm hiểu và biết thêm được hàm column là thế.

huuthang_bd
18-12-09, 10:13 AM
------
Đúng là "hơi" thủ công, 3 cột của Bạn là 3 công thức, dù là chỉ cần sửa các số 2,3,4, trong khi công thức của Bạn MinhCong thì tổng quát hơn, một công thức có thể dùng chung cho nhiều cột, tôi thích kiểu này hơn.
Thân mến đồng hương.
Muốn tổng quát cũng không nên dùng Column()-x mà nên dùng Column(A1)+y. Vì sao? Vì nếu dùng Column()-x thì khi copy công thức này sang một cột khác kết quả sẽ sai, còn Column(A1)+y sẽ tránh được lỗi nãy.

ndu96081631
18-12-09, 11:07 AM
Muốn tổng quát cũng không nên dùng Column()-x mà nên dùng Column(A1)+y. Vì sao? Vì nếu dùng Column()-x thì khi copy công thức này sang một cột khác kết quả sẽ sai, còn Column(A1)+y sẽ tránh được lỗi nãy.
Column(A1) vẫn chưa chắc bắp đâu (tôi chẳng khi nào dùng)
Chắc ăn nhất là COLUMNS($A$1:A$1)
Tại sao phải là COLUMNS là không là COLUMN? Vì hàm COLUMN và ROW vốn là hàm mãng ---> Sẽ cho kết quả sai trong 1 số trường hợp nào đó (nhất là khi kết hợp với OFFSET, INDIRECT để tạo mãng) ---> COLUMNS và ROWS luôn trả về giá trị đơn
--------------------
Mấy vụ đơn giản này đã nói trên diển đàn không dưới 10 lần rồi

havietchuong
18-12-09, 12:07 PM
Em có bảng sau, muốn tìm kiếm và trích lọc giá trị trùng từ 2 bảng gộp lại 1.
Vì trong bảng có 2 cột giống nhau,
Ai giúp em vụ này cái !

Qua ý kiến của Ba tê và huuthang_bd, bạn dùng công thức thế này sẽ hay hơn.

havietchuong
18-12-09, 12:21 PM
Column(A1) vẫn chưa chắc bắp đâu (tôi chẳng khi nào dùng)
Chắc ăn nhất là COLUMNS($A$1:A$1)
Tại sao phải là COLUMNS là không là COLUMN? Vì hàm COLUMN và ROW vốn là hàm mãng ---> Sẽ cho kết quả sai trong 1 số trường hợp nào đó (nhất là khi kết hợp với OFFSET, INDIRECT để tạo mãng) ---> COLUMNS và ROWS luôn trả về giá trị đơn
--------------------
Mấy vụ đơn giản này đã nói trên diển đàn không dưới 10 lần rồi

Tôi thì đang tìm để học, nghe bạn nói có cơ sở vững vàn nhưng khi tôi làm thử thì sao không được như ý muốn? Sai chỗ nào nhờ bạn chỉ giúp.
File kèm theo tôi để ở Sheet COLUMNS

huuthang_bd
18-12-09, 01:05 PM
Column(A1) vẫn chưa chắc bắp đâu (tôi chẳng khi nào dùng)
Chắc ăn nhất là COLUMNS($A$1:A$1)
Tại sao phải là COLUMNS là không là COLUMN? Vì hàm COLUMN và ROW vốn là hàm mãng ---> Sẽ cho kết quả sai trong 1 số trường hợp nào đó (nhất là khi kết hợp với OFFSET, INDIRECT để tạo mãng) ---> COLUMNS và ROWS luôn trả về giá trị đơn
--------------------
Mấy vụ đơn giản này đã nói trên diển đàn không dưới 10 lần rồi

Bạn có thể cho một ví dụ cho trường hợp nào đó mà kết quả sai khi dùng Column(A1) được không?

ndu96081631
18-12-09, 01:09 PM
Tôi thì đang tìm để học, nghe bạn nói có cơ sở vững vàn nhưng khi tôi làm thử thì sao không được như ý muốn? Sai chỗ nào nhờ bạn chỉ giúp.
File kèm theo tôi để ở Sheet COLUMNS
Bạn áp dụng sai thôi
Cell C2 sẽ có công thức:

=VLOOKUP($A2,$D$11:$G$19,COLUMNS($A$1:B$1),0)Tuy t đối hạn chế dùng ROW và COLUMN trong công thức, trừ những trường hợp đặc biệt khi bạn tạo mãng mà thôi, nếu xài quen tay rồi sẽ có 1 ngày bạn than trời vì kết quả sai mà chẳng biết do đâu
Ngay từ bây giờ nên tập thói quen:
Thay vì ROW(A1) thì nên dùng ROWS($1:1)
Thay vì COLUMN(A1) thì nên dùng COLUMNS($A$1:A$1)
-------------------------

Bạn có thể cho một ví dụ cho trường hợp nào đó mà kết quả sai khi dùng Column(A1) được không?
Cái này đã có xảy ra trên diển đàn, lâu lắm rồi tôi không nhớ, nhưng tôi chắc chắn 100% những gì tôi nói là thật

ndu96081631
18-12-09, 01:15 PM
Bạn có thể cho một ví dụ cho trường hợp nào đó mà kết quả sai khi dùng Column(A1) được không?
Ah... có ngay 1 ví dụ đơn giản (không phải là tổng quát nhất)
- Cell A1 đến A10 bạn gõ lần lượt các số 1, 2,... đến 10
- Tại B1 bạn gõ công thức: =SUM(OFFSET(A1,,,ROW(A1:A7),))
Dù Ctrl + Shift + Enter hay Enter gì nó cũng chẳng ra kết quả
- Nếu bạn gõ công thức =SUM(OFFSET(A1,,,ROWS($1:$7),)) thì OK ngay

huuthang_bd
18-12-09, 01:24 PM
Ah... có ngay 1 ví dụ đơn giản (không phải là tổng quát nhất)
- Cell A1 đến A10 bạn gõ lần lượt các số 1, 2,... đến 10
- Tại B1 bạn gõ công thức: =SUM(OFFSET(A1,,,ROW(A1:A7),))
Dù Ctrl + Shift + Enter hay Enter gì nó cũng chẳng ra kết quả
- Nếu bạn gõ công thức =SUM(OFFSET(A1,,,ROWS($1:$7),)) thì OK ngay
Tôi thì sẽ không làm vậy. Ai lại làm như thế này:
=SUM(OFFSET(A1,,,ROW(A1:A7),))
Nếu tôi thì tôi làm như thế này:
=SUM(OFFSET(A1,,,ROW(A7),))

Ở bài trước tôi cũng không khuyên các bạn dùng Row($A$1:A1) mà là Row(A1)

ndu96081631
18-12-09, 01:30 PM
Tôi thì sẽ không làm vậy. Ai lại làm như thế này:
=SUM(OFFSET(A1,,,ROW(A1:A7),))
Nếu tôi thì tôi làm như thế này:
=SUM(OFFSET(A1,,,ROW(A7),))

Ở bài trước tôi cũng không khuyên các bạn dùng Row($A$1:A1) mà là Row(A1)
Tôi đang nói đến RowS($A$1:A$1) chứ không phải Row($A$1:A1) đâu nha
Tôi chỉ nói đây là ví dụ đơn giản, không phải là tổng quát nhất (làm cụ thể trong từng file thì tùy)
Không biết bạn có để ý rằng ROW là hàm mãng hay không? Và đương nhiên, mãng với công thức thường có cách phản ứng khác nhau
Bôi đen hàm ROW() trên thanh Formula rồi bấm F9 sẽ thấy kết quả nằm trong 2 dấu {} ... còn hàm ROWS lại trả về 1 kết quả đơn
Tôi đã từng kinh qua rất nhiều lần vụ này và rút ra kinh nghiệm nhớ đời (nên đã tạo thói quen khi dùng hàm)... Bây giờ với VLOOKUP không có vấn đề nhưng 1 ngày nào đó khi bạn phối hợp hàm phức tạp sẽ xuất hiện lổi ngay!

huuthang_bd
18-12-09, 02:01 PM
Tôi đang nói đến RowS($A$1:A$1) chứ không phải Row($A$1:A1) đâu nha
Tôi chỉ nói đây là ví dụ đơn giản, không phải là tổng quát nhất (làm cụ thể trong từng file thì tùy)
Không biết bạn có để ý rằng ROW là hàm mãng hay không? Và đương nhiên, mãng với công thức thường có cách phản ứng khác nhau
Bôi đen hàm ROW() trên thanh Formula rồi bấm F9 sẽ thấy kết quả nằm trong 2 dấu {} ... còn hàm ROWS lại trả về 1 kết quả đơn
Tôi đã từng kinh qua rất nhiều lần vụ này và rút ra kinh nghiệm nhớ đời (nên đã tạo thói quen khi dùng hàm)... Bây giờ với VLOOKUP không có vấn đề nhưng 1 ngày nào đó khi bạn phối hợp hàm phức tạp sẽ xuất hiện lổi ngay!
Vâng, bạn đang nói đến hàm ROWS() nhưng tôi lại đang nói đến hàm ROW(), tôi đang nói đến cách mà bạn dùng trong hàm ROW() để so sánh với hàm ROWS() trong ví dụ của bạn. Khi dùng hàm ROW() tôi không bao giờ sử dụng vùng tham chiếu nhiều ô cả trừ khi đó là chủ ý khi dùng trong công thức mảng. Bạn từng kinh qua nhiều lần vụ này nhưng giờ cũng không còn nhớ một ví dụ nào cho thấy sự khác biệt giữa hai cách dùng này. Cũng đáng tiếc vì không riêng gì tôi mà những người quan tâm đến vấn đề này chắc cũng muốn thấy một ví dụ mang tính thuyết phục.

havietchuong
18-12-09, 02:14 PM
Bạn áp dụng sai thôi
Cell C2 sẽ có công thức:

=VLOOKUP($A2,$D$11:$G$19,COLUMNS($A$1:B$1),0)Tuy t đối hạn chế dùng ROW và COLUMN trong công thức, trừ những trường hợp đặc biệt khi bạn tạo mãng mà thôi, nếu xài quen tay rồi sẽ có 1 ngày bạn than trời vì kết quả sai mà chẳng biết do đâu
Ngay từ bây giờ nên tập thói quen:
Thay vì ROW(A1) thì nên dùng ROWS($1:1)
Thay vì COLUMN(A1) thì nên dùng COLUMNS($A$1:A$1)
-------------------------

Cái này đã có xảy ra trên diển đàn, lâu lắm rồi tôi không nhớ, nhưng tôi chắc chắn 100% những gì tôi nói là thật

Cám ơn bạn, tôi đã thử, đúng như bạn nói. Để hiểu cho tận ngọn ngành của vấn đề nhờ bạn dịch "nôm" dùm cho tôi công thức này để rõ hơn. Cám ơn

=VLOOKUP($A2,$D$11:$G$19,COLUMNS($A$1:B$1),0)

MinhCong
18-12-09, 02:33 PM
Cám ơn bạn, tôi đã thử, đúng như bạn nói. Để hiểu cho tận ngọn ngành của vấn đề nhờ bạn dịch "nôm" dùm cho tôi công thức này để rõ hơn. Cám ơn
VLOOKUP($A2,$D$11:$G$19,COLUMNS($A$1:B$1),0)
Có lẽ Bạn không hiểu là ngay tại cái hàm COLUMNS($A$1:B$1)
Đây là hàm trả về tổng số cột của vùng tham chiếu
COLUMNS($A$1:A$1)=1 (Vì có 1 cột A)
COLUMNS($A$1:B$1)=2 (Vì có 2 cột A và B)
COLUMNS($A$1:C$1)=3 (Vì có 3 cột A,B,C)
..........

lethuycaylua
18-12-09, 06:03 PM
Muốn tổng quát cũng không nên dùng Column()-x mà nên dùng Column(A1)+y. Vì sao? Vì nếu dùng Column()-x thì khi copy công thức này sang một cột khác kết quả sẽ sai, còn Column(A1)+y sẽ tránh được lỗi nãy.

theo mình cả hai cách đều được cả mình đã thử cả hai và copy mình đều thấy ok thậm trí nếu dùng độc lập = Column(A1)+y mà đặt ở ô D10 chẳng hạn khi copy về B10 sẽ bị lỗi

lethuycaylua
18-12-09, 06:15 PM
Em có bảng sau, muốn tìm kiếm và trích lọc giá trị trùng từ 2 bảng gộp lại 1.
Vì trong bảng có 2 cột giống nhau,
Ai giúp em vụ này cái !
mình đã xem qua file của bạn nhưng vẫn chưa hiểu bạn cần trích lọc giá trị trùng cho cột nào cột cell thì bạn đưa ví dụ không thấy dữ liệu trùng cột city và cột zipcode có dữ liệu trùng vậy bạn cần trích lọc cột nào. hay bạn muốn trích lọc dữ liệu trùng từ bảng 1và 2 về thành một bảng chẳng hạn bảng 3 đúng không

Ba Tê
18-12-09, 07:45 PM
theo mình cả hai cách đều được cả mình đã thử cả hai và copy mình đều thấy ok thậm trí nếu dùng độc lập = Column(A1)+y mà đặt ở ô D10 chẳng hạn khi copy về B10 sẽ bị lỗi
---

Thật sự vấn đề này quá rõ ràng, chỉ là các Bạn ấy tranh luận nhau về thuật toán nào là tối ưu. Có lẽ Bạn không theo dõi Topic từ đầu, tất cả các kiến giải đều là "super", Bạn nên xem kỹ và "ngâm cứu". Tôi không dám xen vào vì không có kiến giải nào "siêu super" hơn các ý trên.
Tự xem và suy nghĩ thì sẽ học hỏi được rất nhiều điều.
---(Tôi tự nghĩ mình như một HS lớp 1 mà nghe tranh cãi chuyên môn của các bạn lớp 12, nếu mình là thần đồng thì không nói chi, nếu chẳng phải thế thì hóa ra … )---
Xin lỗi tất cả các Bạn nếu các Bạn có kiến giải khác hơn. (Vì người xưa nói chín người mười ý). Hy vọng tất cả cùng tiến bộ với GPE.
Thân mến!