Tìm kiếm trong Excel

Liên hệ QC
anhtuan1066: Cám ơn anh. Cách trích lọc của A đối với E bây giờ đã là hoàn hảo lắm rồi. Tuy nhiên, khi E chép công thức của A sang Sheet chính (GOC) thì E vẫn chưa hiểu vì sao tại cột C thì công thức có vẻ như bị lỗi tham chiếu. Xin A hướng dẫn cụ thể về công thức INDERECT trong VD của A. Cám ơn anh.

SA_DQ: Cám ơn về Macro của A. Tìm kiếm tốt lắm. Nhưng xin A viết thêm cho E cái macro khác đối với mẫu nằm trong Sheet "Convert" mà E đính kèm Bảng DL sau đây. (Đối với những số liệu tương đối thì xin A chỉ E cách thay đổi nó luôn ha, VD như A đã tô đỏ những số liệu như: "Goc", "D1", "so sanh",
"A"). Giả sử E chỉ muốn khi lọc thì chỉ lấy số liệu theo hàng ngang như thế nào...

To tigertiger: "Không có việc gì khó, Chỉ sợ ... không nhiều".
 

File đính kèm

  • Convert_Tuan_HOI_2.xls
    25.5 KB · Đọc: 128
C1=INDIRECT("B"&(ROW()-2)*3+COLUMN()+3)
(Row()-2)*3 =(1-2)*3=-3, col()+3=3+3=6
=>(ROW()-2)*3+COLUMN()+3=3
Mục đích là lấy cách nhau 3 dòng. Cụ thể như anhtuan1066 giải thích, ct này cao siêu quá.
 
Bạn dùng chức năng Conditional Formatting của Excel Format toàn bộ vùng cần tìm với giá trị(ký tự/số) tại một ô cố định(a1) với cách chọn Cell Value Is/between/=$a$1/=$a$1 và chọn mầu theo ý thích.
 
ThuNghi đã viết:
(Row()-2)*3 =(1-2)*3=-3, col()+3=3+3=6
=>(ROW()-2)*3+COLUMN()+3=3
Mục đích là lấy cách nhau 3 dòng. Cụ thể như anhtuan1066 giải thích, ct này cao siêu quá.

Nhưng nếu em đổi CT này thành: INDIRECT("A"&(ROW()-2)*3+COLUMN()+3) thì nó lấy từ hàng thứ 3 trở đi. Trong khi đó E muốn lấy số liệu tại A1, A4, A7, A10... thì không được. Nhưng trong CT của AT tại sheet "Convert" lại làm được. Chị đã cho rằng nó cao siêu rồi, mà chị giải thích kiểu này chắc... chết. Nghiên cứu CT này hoài mà chẳng rút ra được kinh nghiệm gì có ích, E chỉ hiểu sơ sơ thôi. E mong được giải thích cụ thể hơn kia.
 
baby1982 đã viết:
Nhưng nếu em đổi CT này thành: INDIRECT("A"&(ROW()-2)*3+COLUMN()+3) thì nó lấy từ hàng thứ 3 trở đi. Trong khi đó E muốn lấy số liệu tại A1, A4, A7, A10... thì không được. Nhưng trong CT của AT tại sheet "Convert" lại làm được. Chị đã cho rằng nó cao siêu rồi, mà chị giải thích kiểu này chắc... chết. Nghiên cứu CT này hoài mà chẳng rút ra được kinh nghiệm gì có ích, E chỉ hiểu sơ sơ thôi. E mong được giải thích cụ thể hơn kia.
Quan trọng nhất của ct này là hàm row() and column() của ô hiện tại bạn muốn gán ct.
Ví dụ bạn muốn lấy giá trị của ô nào, A, B, C...
Tại ô hiện tại bạn nhập thử row() cho KQ?? và column() cho KQ?? ROW()-2)*3+COLUMN()+3 chẳng qua là cho giá trị cách nhau 3 đơn vị. Bạn thử tại ô bất kỳ nhập ROW()-2)*3+COLUMN()+3 và copy xuống xem thế nào.
PS: ThuNghi là Mr nhé.
 
Chào bạn... Vì công thức thay đỗi theo sự thay đỗi của dòng và cột, nên khi mang sang nơi khác tất nhiên là nó sẽ sai... Bạn phải sửa lại cho phù hợp... Cụ thể trong file bạn sẽ sửa như sau:
Mã:
C1 =INDIRECT("A"&(ROW()-1)*3+COLUMN()-2)
D1 =INDIRECT("B"&(ROW()-1)*3+COLUMN()-2)
E1 =INDIRECT("B"&(ROW()-1)*3+COLUMN()-2)
Kéo file 3 cell này xuống dưới
Mến
ANH TUẤN
 
Đễ tôi hướng dẩn bạn 1 cách mà tôi bắt tay vào thực hiện:
Đầu tiên tôi đễ ý thấy nếu muốn tách ra thì cell đầu tiên của tôi phải có kết quả giống như A1, cell tiếp theo giống B2 và cell tiếp nữa giống B3... Thế là tôi tạo 1 sheet mới, ghi vào 3 cell dòng đầu tiên chử A1, rồi B2 rồi B3...
Tiếp tục nhận xét thì dòng thứ 2 phải giống với A4, B5, B6... Tôi lại ghi vào 3 cell dòng thứ 2 của sheet mới này chử: A4, B5 , B6... vân vân...
Ghi 1 hồi tôi dc các số liệu sau đây:
A1... B2... B3
A4... B5... B6
A7... B8... B9
.................
Mục đích của việc làm này là xem xét sự thay đỗi nhằm tìm ra dc quy luật!... Vậy phải kết hợp với ROW và COLUMN như thế nào đó sao cho cell đầu tiên phải ra dc kết quả là "GOC!A1"... cell tiếp theo phải ra kết quả là "GOC!B1"... vân vân...
Bây giờ lồng thêm hàm INDIRECT vào là ra hết toàn bộ
Tất nhiên việc kết hợp với ROW và COLUMN chỉ cho kết quả đúng tại cell ta đang thực hiện công thức... nếu mang công thức sang nơi khác thì ROW và COLUMN đã khác, nên kết quả sai là điều đương nhiên... Vì thế mà phải sửa lại cho phù hợp theo từng vị trí cụ thể của cell hiện hành
Cái này nói thì dài dòng và thật khó giãi thích sao cho cặn kẽ... Nhưng tôi nghĩ đây chỉ là tính toán thôi.. các bạn suy nghĩ 1 tí là ra ngay thôi mà...
hi... hi...
ANH TUẤN
 
SA_DQ: Tìm kiếm tốt lắm. Nhưng xin A viết thêm cho E cái macro khác đối với mẫu nằm trong Sheet "Convert" mà E đính kèm Bảng DL sau đây. (Đối với những số liệu tương đối thì xin A chỉ E cách thay đổi nó luôn ha, VD như A đã tô đỏ những số liệu như: "Goc", "D1", "so sanh", [/FONT]"A"). Giả sử E chỉ muốn khi lọc thì chỉ lấy số liệu theo hàng ngang như thế nào...


PHP:
Option Explicit

Sub TimChep()
 Dim CanTim, Lrow As Long, iJ As Long
 Dim Rng As Range
  
 Sheets("Goc").Select
 CanTim = Range("D1")
 Lrow = Cells(65432, 1).End(xlUp).Row
 For iJ = 1 To Lrow
    If InStr(Cells(iJ, 1), CanTim) > 0 Then
        Dim Iz As Byte
        Set Rng = Cells(iJ, 1)
        Rng.Copy Destination:=Sheets("Convert").Range("A" & _
            Sheets("Convert").Cells(65432, 1).End(xlUp).Row + 1)
            For Iz = 1 To 2
                Set Rng = Cells(iJ + Iz, 2)
                Rng.Copy Destination:=Sheets("Convert").Range(Chr(65 + Iz) & _
                    Sheets("Convert").Cells(65432, 1 + Iz).End(xlUp).Row + 1)

            Next Iz
9        '   Exit For
    End If
 Next iJ
End Sub
Chỉ dẫn: Macro sẽ tìm tại cột 'A' những ô có chứa chuỗi ghi trong 'D1'
Tìm thấy là chép (kể cả trùng tên)
Nếu chỉ muốn chép 1 dòng thì bỏ dấu nháy tại dòng lệnh có só 9
 
- ôi, Làm Sao để Tách Mấy Cái Thằng Này Theo Hàm Indirect đây Anh Tuấn ơi.
- Now, Em Còn Muốn Có Thêm Cột Fax, Email Và Website Sau Khi Trích Ra. Nếu Record Nào Không Có Thêm 1 Trong 3 Thứ đó Thì để Trống.
- Em đã Nghĩ đến Việc Nếu Record Nào Không Có Cell "fax, Email Hay Website" Thì Mình Thêm Mấy Cái Cell đó Vào. Nhưng Em Khôg Biết Cách. Chắc Có Lẽ Giờ đây Phải đụng đến Macro Rồi Phải Hông Atuấn?
-giả Sử Như Macro Sẽ Tìm Dưới Cell "điện Thoại" Có Cell "fax" Hay Không?! Nếu Không, Nó Sẽ Thêm 1 Dòng Dưới Cell "điện Thoại". Sau đó, Từ Cell "điện Thoại" Nó Tìm Cách 2 Dòng Dưới Nó Có Cell "website" Hay Ko?! Nếu Ko Thì Thêm Vào... Tương Tự Với Cell "email".
-làm Như Vậy để Thống Nhất Tất Cả Các Record, Và áp Dụng C.thức Của Atuấn Khi đó Thật Dễ Dàng. Không Biết E Phát Biểu Như Vậy Atuấn Và Các Cao Thủ Nghĩ Sao??? đúng Hay Chưa Thuyết Phục.
-sa_qd: Có Lẽ Phải Nhờ đến Thầy Sa_qd Nhiều đó.
Xin Cám ơn.
 

File đính kèm

  • ConvertBABY_1.xls
    18.5 KB · Đọc: 75
SA_DQ đã viết:
Chỉ dẫn: Macro sẽ tìm tại cột 'A' những ô có chứa chuỗi ghi trong 'D1'
Tìm thấy là chép (kể cả trùng tên)
Nếu chỉ muốn chép 1 dòng thì bỏ dấu nháy tại dòng lệnh có só 9
Anh SA_DQ ơi, giờ đây E muốn tìm kiếm rộng hơn, tuy chưa hay lắm nhưng E không thể bỏ sót. Đó là, khi Chuỗi tìm kiếm của E trong Cell D1 nhiều (dài) hơn trong Col A của BDL thì thay đổi Macro sao đây A?

VD: E nhập vào D1 là "Cty TNHH có 300 thành viên trong đó trừ ra 200 chín mươi chín thành viên đã lên cơn đau tim không thể tiếp tục quản lý được nưã thì doanh nghiệp này chỉ còn 1 thành viên tên mItSuky" nhưng trong BDL chỉ có tên MITSUKY hoặc là MItsuKy Mít ướt, vân vân, thì nó sẽ lọc ra giúp E luôn. A giúp E để nó đừng phân biệt chữ hoa chữ thường nha A.

Xin xem lại file đã gởi phía trên.
 
Lần chỉnh sửa cuối:
Ý bạn là muốn tạo ra 1 sh có tên cty, dc, dt, fax... cái nào có thì lấy, không thì rỗng?
Khuyên bạn nên nhập như vậy vẫn đầy đủ các trường cái nào không có thì bỏ trống.
Gợi ý bạn cách làm, theo file của bạn nhé. Không cần indirect.
- Tạo thêm cột phụ: if = địa chỉ thì lấy 2, = ĐT lấy 3, Fax..4, web: 5, email: 6, còn không có thì 1
- Thêm 1 cột nữa đếm báo nhiêu tên cty
- Kết hợp lại => ta có mã Cty, vd: 1-1, 1-2,...,1-6,2-1,...n-6
Từ sh cần lấy chỉ cần dùng vlookup theo 1-1, 1-2,...,1-6,2-1,...n-6 là OK thôi.
Giải pháp dùng nhiều cột phụ cho dễ hiểu. Từ từ sẽ rút gọn sau. Cao siêu sẽ không còn cột phụ nhưng bạn không hiểu luôn.
 
OK. Rất tốt. Bây giờ thì em đã hiểu rõ hàm INDIRECT trong VD của AT rồi. Và bây giờ E có thể đặt công thức đó tại bất kỳ nơi nào trong bảng tính. Chỉ cần thay đổi thông số một ít thôi là sẽ hiểu ngay mà. Quan trọng thật sự nằm ở cụm ROW()+-nCOLUMN()+-n thôi.

TN ơi, làm sao E có thể nhập các trường (field) cho đầy đủ được chớ, trong khi DLiệu đó là E lấy từ nguồn khác (của cty). Có khi mỗi record lên đến hàng chục ngàn. Thông cảm cho E nha.

Nhưng làm việc mang tính chuyên nghiệp thì ai mà chẳng thích. Ít ra là cách hiện tại chuyên nghiệp hơn trước đây mình đã làm chứ (chứ chưa hẳn là cách làm đó là vua). Chỉ cần nghiên cứu 1 tý xíu + với sự hỗ trợ của các thầy cô nơi đây là quá đủ rồi ha. Hơn nữa công thức đã có người làm sẵn cho mình như thế, lẽ nào mình lại bỏ qua (+ với 1 ít động viên của mình dành cho họ để gọi là đền đáp cho công sức họ phải nghiên cứu nữa, hehe).

E đây thực sự hông muốn làm theo cách VLOOKUP hơi thủ công đâu TN ạhh. Nếu có điều kiện tham khảo những cách thức tính toán chuyên nghiệp như thế này thì E khó lòng mà bỏ qua lắm.

Hông biết question ở trên các cao thủ thấy sao rồi ta?!!! Chắc có lẽ giờ này họ đang nghiên cứu, còn mình thì chỉ ngâm cứu thôi. hehehe......

Cám ơn TN.
 
Anh ơi, giờ đây E muốn tìm kiếm rộng hơn, tuy chưa hay lắm nhưng E không thể bỏ sót. Đó là, khi Chuỗi tìm kiếm của E trong Cell D1 nhiều (dài) hơn trong Col A của BDL thì thay đổi Macro sao đây A?

VD: E nhập vào D1 là "Cty TNHH có 300 thành viên trong đó trừ ra 200 chín mươi chín thành viên đã lên cơn đau tim không thể tiếp tục quản lý được nưã thì doanh nghiệp này chỉ còn 1 thành viên tên mItSuky" nhưng trong BDL chỉ có tên MITSUKY thì nó sẽ lọc ra giúp E luôn. A giúp E để nó đừng phân biệt chữ hoa chữ thường nha A. Xin xem lại file đã gởi phía trên.
Không thể tìm chuỗi MItsuKy . . . vân vân được
Chỉ tìm được & Copy khi cột A có từ mItSuky & chỉ nguyên từ đó mà thôi;
Làm sao mà tìm 'Hà thành' trong chuỗi "Hà nội, thủ đô nước CHXHCN Việt nam"?!! hay ngược lại!

PHP:
Option Explicit

Sub SearchAndCopy()
 Dim CanTim, Lrow As Long, iJ As Long
 Dim Rng As Range
   
 Sheets("Goc").Select
 CanTim = UCase$(Range("D1"))
 Lrow = Cells(65432, 1).End(xlUp).Row
 For iJ = 1 To Lrow
    If InStr(CanTim, UCase$(Cells(iJ, 1))) > 0 Then
        Dim Iz As Byte, Rng0 As Range
        
        Set Rng = Cells(iJ, 1)
        Set Rng0 = Sheets("Copy").Range("A" & _
            Sheets("Copy").Cells(65432, 1).End(xlUp).Row + 1)
            
        Rng.Copy Destination:=Rng0
            For Iz = 1 To 4
                Set Rng = Cells(iJ + Iz, 2)
                Rng.Copy Destination:=Rng0.Offset(, Iz + 1)

            Next Iz
9'          Exit For
    End If
 Next iJ
End Sub
 
SA_DQ đã viết:
Không thể tìm chuỗi MItsuKy . . . vân vân được
Chỉ tìm được & Copy khi cột A có từ mItSuky & chỉ nguyên từ đó mà thôi;
Làm sao mà tìm 'Hà thành' trong chuỗi "Hà nội, thủ đô nước CHXHCN Việt nam"?!! hay ngược lại!

2. Còn việc tìm kiếm từ "Hà Thành" trong chuỗi "Hà nội, thủ đô nước CHXHCN Việt nam"?!! hay ngược lại... thì thật sự ý của E không phải như vậy rồi. Vì rõ ràng là trong chuỗi tìm kiếm của E và các Cell trong CSDL đều có từ mitsuky (Và tất nhiên, nếu tìm không thấy thì nó sẽ bỏ qua). Không giống như giả thuyết của A đã nêu đâu. A lấy việc minh họa này so sánh với VD của E sao...

Vậy, xin cho E hỏi 1 lần cuối cùng đối với Macro này A nhé:
1. E gõ vào chuỗi tìm kiếm trong D1 thì chỉ có thể gõ ngắn hơn hoặc bằng với từ mà em muốn tìm thôi, phải không A?
2. Cái code sau A gởi sao E thấy nó không có địa chỉ
Destination của sheet nào vậy A?

Cám ơn Anh.
 
Vậy, xin cho E hỏi 1 lần cuối cùng đối với Macro này A nhé:
1. E gõ vào chuỗi tìm kiếm trong D1 thì chỉ có thể gõ ngắn hơn hoặc bằng với từ mà em muốn tìm thôi, phải không A?
2. Cái code sau A gởi sao E thấy nó không có địa chỉ [/COLOR]Destination của sheet nào vậy A?

* Vđ 1
Nếu trong cột A có từ 'Sao mai' & chỉ nguyên nó thôi
Thì nhập vô D1 chuỗi nào dài có thể, chỉ cần chứa chử 'sao Mai' thì bản thân nó & 4 ô dưới nó ở cột bên cạnh đều chép sang sheet khác;
Cụ thể; Nếu A9 chứa nội dung 'baby1982'
Giờ bạn nhập vô D1 đoạn sau:
'Ở đâu có thể tìm ra chuỗi BaBy1982 được không ta? Tìm xong thì uống cà phê nghen!'
Sau đó cho chạy macro thứ 3;
Khi tìm thấy tại ô A9, macro sẽ đem dữ liệu A9, B10:B13 sang chép vô
hàng cuối theo thứ tự cột A-D;
* VĐ 2 Mình đã thấy bạn yêu cầu chép đến 5 ô dữ liệu nên khai bào biến Rng0 làm ô đích chép đến đấy thôi

@$@!^%

Thấy không, trình độ của mình cũng tăng lên nhờ những câu hỏi của bạn í nha!
 
Mọi người cho em hỏi với :(

Bình thường muốn tìm kiếm một câu hoặc một từ nào đó trong file Excel thì dùng Ctrl + F , nhưng em muốn hỏi là có cách nào để khi cần tìm kiếm một từ nào đó trong file excel, nếu từ đó nằm ở ô A3 thì ô A3 đó sẽ đổi thành màu đỏ để cho dễ nhìn và nếu tiếp tục ấn NEXT để tìm tiếp thì ô khác có dữ liệu đúng như thế sẽ là màu đỏ ko? ./ CÓ nghĩa là khi ô nào có chứa từ đó thì màu đỏ sẽ trượt đến để dễ nhìn @#!^%

Mình cũng có câu hỏi gần giống bạn. Tức là tìm 1 số nào đó cho trước, kết quả sẽ đưa ra đường dẫn đến 1 file nào đó trong nhiều file (kể cả số trùng).
Các bạn giúp mình với.
Cảm ơn nhiều.
 

File đính kèm

  • Tim Kiem.rar
    4 KB · Đọc: 154
Em cũng đang gặp phải vấn đề về tìm kiếm, cụ thể là khi lập danh sách nhân hộ khẩu của 1 khu dân cư, sau khi lập xong các sheet KHAU_VQ và HO_VQ, có 2 vấn đề phải xử lý:
1- tạo một sheet tìm kiếm để khi gõ tên vào đó sẽ cho đầy đủ các thông tin về hộ, khẩu. Em đã thử dùng cách lập công thức của anh AT 1066 chỉ nhưng không có kết quả.
2- khi lấy danh sách từ 18 hay 14 tuổi trở lên, danh sách 14 hay 17 tuổi, nếu dùng Auto Filter để lọc thì chỉ được 1 lần, sau này có biến động lại phải lọc lại.
Mong được sự giúp đỡ của các anh chị. Xin trân trọng cảm ơn.
 

File đính kèm

  • Ho khau VQ.rar
    149.3 KB · Đọc: 108
Vấn đề I của bạn đây, xin mời xem file

1- tạo một sheet tìm kiếm để khi gõ tên vào đó sẽ cho đầy đủ các thông tin về hộ, khẩu. Em đã thử dùng cách lập công thức của anh AT 1066 chỉ nhưng không có kết quả.
2- khi lấy danh sách từ 18 hay 14 tuổi trở lên, danh sách 14 hay 17 tuổi, nếu dùng Auto Filter để lọc thì chỉ được 1 lần, sau này có biến động lại phải lọc lại.

Mình đến giờ lên đường rồi; Hẹn khi khác . . . .
 

File đính kèm

  • GPEtk.rar
    146.6 KB · Đọc: 264
Cảm ơn anh SA_DQ rất nhiều, nhưng em chưa hiểu là lỗi ở đâu, anh có thể chỉ cho em cách làm được không. Em muốn tìm theo tên thì phải làm thế nào ạ?
 
Web KT
Back
Top Bottom