Làm thế nào tìm kiếm trong bảng (1 người xem)

  • Thread starter Thread starter nkhnhp
  • Ngày gửi Ngày gửi

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

nkhnhp

Thành viên mới
Tham gia
3/11/12
Bài viết
25
Được thích
0
Các bạn giúp mình vụ này với.
Mình muốn tìm kiếm ở trong bảng mà khó quá.
:=\+:=\+:=\+
Các cao thủ xem file đính kèm hộ mình nhé.
Cảm ơn mọi người trước.
/-*+/
 

File đính kèm

Các bạn giúp mình vụ này với.
Mình muốn tìm kiếm ở trong bảng mà khó quá.
:=\+:=\+:=\+
Các cao thủ xem file đính kèm hộ mình nhé.
Cảm ơn mọi người trước.
/-*+/
Nếu chịu xài hàm tự tạo thì tặng bạn hàm này:
[GPECODE=vb]Public Function FGPE(DK As Range, Data As Range, Rng As Range) As Variant
Dim Arr(), dArr(), I As Long, J As Long
Arr = Data.Value
dArr = Rng.Value
For I = 1 To UBound(Arr, 1)
For J = 1 To UBound(Arr, 2)
If Arr(I, J) <> Empty Then
If Arr(I, J) = DK Then
FGPE = dArr(I, 1)
Exit For
Exit For
End If
End If
Next J
Next I
End Function[/GPECODE]
Công thức:
PHP:
L4=FGPE($K4;$D$6:$G$15;A$6:A$15)
Q4=FGPE($P4;$H$6:$I$15;A$6:A$15)
Kéo ngang qua 3 cột, kéo xuống đến ...
Nhớ Enable Macros khi mở file
 

File đính kèm

Các bạn giúp mình vụ này với.
Mình muốn tìm kiếm ở trong bảng mà khó quá.
:=\+:=\+:=\+
Các cao thủ xem file đính kèm hộ mình nhé.
Cảm ơn mọi người trước.
/-*+/
Mở File nhấn nút "TÌM KIẾM" và xem kết quả đã đúng ý chưa. Tôi dùng VBA nên phải enable macros trước khi mở File nhé!
Mã:
Public Sub Find()
Dim i As Long, j As Long, v()
Dim kq1(), kq2()
With Sheet1
    kq1 = .Range("K4:K" & .Range("K65500").End(xlUp).Row).Resize(, 4)
    kq2 = .Range("P4:P" & .Range("K65500").End(xlUp).Row).Resize(, 4)
    v = .Range("A6:I15")
For i = 1 To UBound(kq1)
    For j = 1 To UBound(v)
        If kq1(i, 1) = v(j, 4) Or kq1(i, 1) = v(j, 5) Or kq1(i, 1) = v(j, 6) Or kq1(i, 1) = v(j, 7) Then
            kq1(i, 2) = v(j, 1): kq1(i, 3) = v(j, 2): kq1(i, 4) = v(j, 3)
        End If
    Next j
Next i


For i = 1 To UBound(kq2)
    For j = 1 To UBound(v)
        If kq2(i, 1) = v(j, 8) Or kq2(i, 1) = v(j, 9) Then
            kq2(i, 2) = v(j, 1): kq2(i, 3) = v(j, 2): kq2(i, 4) = v(j, 3)
        End If
    Next j
Next i
.Range("K4").Resize(UBound(kq1), 4).Value = kq1
.Range("P4").Resize(UBound(kq1), 4).Value = kq2
End With
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Cảm ơn các bạn đã giúp.
Để mình thử áp dụng File tổng xem thế nào.
Thanks All Again!
 
Nếu chịu xài hàm tự tạo thì tặng bạn hàm này:
[GPECODE=vb]Public Function FGPE(DK As Range, Data As Range, Rng As Range) As Variant
Dim Arr(), dArr(), I As Long, J As Long
Arr = Data.Value
dArr = Rng.Value
For I = 1 To UBound(Arr, 1)
For J = 1 To UBound(Arr, 2)
If Arr(I, J) <> Empty Then
If Arr(I, J) = DK Then
FGPE = dArr(I, 1)
Exit For
Exit For
End If
End If
Next J
Next I
End Function[/GPECODE]
Công thức:
PHP:
L4=FGPE($K4;$D$6:$G$15;A$6:A$15)
Q4=FGPE($P4;$H$6:$I$15;A$6:A$15)
Kéo ngang qua 3 cột, kéo xuống đến ...
Nhớ Enable Macros khi mở file
Sau một hồi loay hoay
Tôi đã thử và thành công....
}}}}}
Cảm ơn các cao thủ đã ra tay giúp đỡ
 
Lần chỉnh sửa cuối:
Về khoản này thì đúng là mình mù luôn bạn ah.
Đã giúp thì giúp cho chót bạn nhé vì mình enable macros rồi nhưng áp dụng vào File tổng của mình thì loay hoay mãi không làm đc
-+*/
Mã:
Function nx(code As Range, s As Range, Title)
nx = Cells(Application.Match(code, _
Columns(s.Find(code).Column), 0), s.Find(Title).Column)
End Function
 

File đính kèm

Các bạn giúp mình vụ này với.
Mình muốn tìm kiếm ở trong bảng mà khó quá.
:=\+:=\+:=\+
Các cao thủ xem file đính kèm hộ mình nhé.
Cảm ơn mọi người trước.
/-*+/

bạn thử tiếp công thức mảng này nhé !

{=INDIRECT(ADDRESS(SMALL(IF(List_NiemXe=Sheet1!$K4,ROW(List_NiemXe)),1),COLUMN($A$5)))}

Name: List_NiemXe=Sheet1!$D$6:$G$1000
 

File đính kèm

Bạn thử áp dụng công thức mà Thầy Ndu thường dùng xem sao nhé
Tại ô L4:=INDEX($A$6:$A$15,LOOKUP(2,1/COUNTIF(OFFSET($D$5:$G$5,ROW($1:$10),,,),K4),ROW($1:$10)))
Tương tự với Q4 bạn nhé
 
Bạn thử áp dụng công thức mà Thầy Ndu thường dùng xem sao nhé
Tại ô L4:=INDEX($A$6:$A$15,LOOKUP(2,1/COUNTIF(OFFSET($D$5:$G$5,ROW($1:$10),,,),K4),ROW($1:$10)))
Tương tự với Q4 bạn nhé
Mình đã sử dụng hàm này rồi bạn ah, chạy rất ổn định nhưng vấn đề ở đây là rất tốn RAM máy tính. List niêm xe của mình rất nhiều mỗi lần chạy file đã mất 1 phút và có thay đổi gì trong File đều bị chờ Excel chạy rất lâu nên mình mới tìm cách khác.
Thanks 4 your Care!
 
bạn thử tiếp công thức mảng này nhé !

{=INDIRECT(ADDRESS(SMALL(IF(List_NiemXe=Sheet1!$K4,ROW(List_NiemXe)),1),COLUMN($A$5)))}

Name: List_NiemXe=Sheet1!$D$6:$G$1000
Công thức này ok đấy bạn ơi, máy chạy rất tốt.
Bạn có thể giải thích cho mình hiểu về cách đặt List_NiemXe được không? Quả thật chưa gặp lần nào |||||
 
Công thức này ok đấy bạn ơi, máy chạy rất tốt.
Bạn có thể giải thích cho mình hiểu về cách đặt List_NiemXe được không? Quả thật chưa gặp lần nào |||||

- mục đích của việc đặt Name để cho gọn + "đẹp" công thức ở bên ngoài sheet ... "":
- đặt Name khi công thức được lặp đi lặp lại nhiều trong 1 công thức, khi có thay đổi địa chỉ ---> chỉ cần điều chỉnh 1 lần mục Refers to của Name đó.
'------
có 2 cách đặt Name:
#1: trực tiếp ở Name Box

- quét chọn vùng D6:G15, điền tên List_NiemXe vào ô Name Box

Name Box.jpg

- muốn địa chỉ dùng trong 1 "thời gian dài" ---> phải chỉnh lại $G$15 ---> $G$1000 tại Name Manager (mục Refers to)

Refer.jpg

#2: vào sâu bên trong hộp thoại Name Manager (ở thanh Ribbon/Menu - FORMULAS - Name Manager)

- tại hộp hoại Name Manager - click nút New ...

newName.jpg
và ...

'------
mình thấy lạ, sao ko thấy bạn hỏi 2 vấn đề sau:
(1) cách hoạt động của công thức
(2) làm sao để chuyển của Niêm Xe từ hàng ngang (vùng D6:G15) thành hàng dọc được như cột K --=0
 
Lần chỉnh sửa cuối:
- mục đích của việc đặt Name để cho gọn + "đẹp" công thức ở bên ngoài sheet ... "":
- đặt Name khi công thức được lặp đi lặp lại nhiều trong 1 công thức, khi có thay đổi địa chỉ ---> chỉ cần điều chỉnh 1 lần mục Refers to của Name đó.
'------
có 2 cách đặt Name:
#1: trực tiếp ở Name Box

- quét chọn vùng D6:G15, điền tên List_NiemXe vào ô Name Box

View attachment 126162

- muốn địa chỉ dùng trong 1 "thời gian dài" ---> phải chỉnh lại $G$15 ---> $G$1000 tại Name Manager (mục Refers to)

View attachment 126164

#2: vào sâu bên trong hộp thoại Name Manager (ở thanh Ribbon/Menu - FORMULAS - Name Manager)

- tại hộp hoại Name Manager - click nút New ...

View attachment 126165
và ...

'------
mình thấy lạ, sao ko thấy bạn hỏi 2 vấn đề sau:
(1) cách hoạt động của công thức
(2) làm sao để chuyển của Niêm Xe từ hàng ngang (vùng D6:G15) thành hàng dọc được như cột K --=0
Haizzz ..... mình định đón đầu áp dụng công thức vào File của mình nhưng không được loay hoay mãi vẫn không chạy, không đơn giản chút nào. --=0
Sửa 1 chút là báo lỗi không chạy, nhân tiện nhờ bạn giải thích hoạt động của lệnh luôn chứ không hiểu kĩ đúng là không làm đc.
Mình up File lên cảm phiền bạn xem và giúp mình nhé. !$@!! ;;;;;;;;;;;
 

File đính kèm

Lần chỉnh sửa cuối:
Haizzz ..... mình định đón đầu áp dụng công thức vào File của mình nhưng không được loay hoay mãi vẫn không chạy, không đơn giản chút nào. --=0
Sửa 1 chút là báo lỗi không chạy, nhân tiện nhờ bạn giải thích hoạt động của lệnh luôn chứ không hiểu kĩ đúng là không làm đc.
Mình up File lên cảm phiền bạn xem và giúp mình nhé. !$@!! ;;;;;;;;;;;

- bạn tải file về kiểm tra kết quả nhé,
- bạn cũng có thể mò ra nếu để ý File đã gửi #1 và #12 khác nhau 1 điểm là số liệu bị nằm ở 2 sheet khác nhau ---> phải điền thêm tên sheet cho hàm Indirect thì mới nhận kết quả bên sheet HOẠT ĐỘNG.
- tại sheet Niêm Xe: có thêm 1 cột Link + giải thích các bước hình thành của công thức ô F5.
- khi bạn rê chuột vào 1 ô bất kỳ của cột J sẽ thấy địa chỉ được tìm thấy
diachiHyper.png

'---------
nếu trong quá trình hoạt động cảm thấy file tính toán/ chạy chậm (vì chứa nhiều công thức mảng) ---> bạn phải tìm 1 công thức cao cấp hơn --=0, mà tốt nhất là nên chuyển sang dùng Macro ... nếu số liệu lớn
'---------
từ khi có cột Link thì các cột khác ko cần dùng công thức mảng nữa...
(sheet Niêm Mẫu có dùng thêm điều kiện IF va IFERROR để ko còn thấy lỗi #NUM!, sheet Niêm Xe bạn làm tương tự nhé)
 

File đính kèm

Lần chỉnh sửa cuối:
- bạn tải file về kiểm tra kết quả nhé,
- bạn cũng có thể mò ra nếu để ý File đã gửi #1 và #12 khác nhau 1 điểm là số liệu bị nằm ở 2 sheet khác nhau ---> phải điền thêm tên sheet cho hàm Indirect thì mới nhận kết quả bên sheet HOẠT ĐỘNG.
- tại sheet Niêm Xe: có thêm 1 cột Link + giải thích các bước hình thành của công thức ô F5.
- khi bạn rê chuột vào 1 ô bất kỳ của cột J sẽ thấy địa chỉ được tìm thấy
View attachment 126205

'---------
nếu trong quá trình hoạt động cảm thấy file tính toán/ chạy chậm (vì chứa nhiều công thức mảng) ---> bạn phải tìm 1 công thức cao cấp hơn --=0, mà tốt nhất là nên chuyển sang dùng Macro ... nếu số liệu lớn
'---------
từ khi có cột Link thì các cột khác ko cần dùng công thức mảng nữa...
(sheet Niêm Mẫu có dùng thêm điều kiện IF va IFERROR để ko còn thấy lỗi #NUM!, sheet Niêm Xe bạn làm tương tự nhé)
Cảm ơn bạn rất nhiều %#^#$
Thực tế để hiểu hết được dãy công thức này mình cần có time :-=.
Về việc máy làm chậm sau này mình sẽ tách ra từng tháng.
Thanks again!
 

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

Back
Top Bottom