Tìm giao nhau giữa hàng và cột

Liên hệ QC

dat21288

Thành viên mới
Tham gia
20/9/10
Bài viết
10
Được thích
4
Nghề nghiệp
ke toan
Nhờ mọi người giúp mình làm sao để tìm giá trị giao nhau, khi biết giá trị tìm kiếm
Phải làm sao khi bảng dò tìm gồm nhiều ô, không phải cột đầu tiên hay dòng đầu tiên. như file đính kèm.
 

File đính kèm

  • tim nhieu DK.xlsx
    9.8 KB · Đọc: 41
Nhờ mọi người giúp mình làm sao để tìm giá trị giao nhau, khi biết giá trị tìm kiếm
Phải làm sao khi bảng dò tìm gồm nhiều ô, không phải cột đầu tiên hay dòng đầu tiên. như file đính kèm.
Giả sử chữ d2 nằm ở ô I16, số 12 nằm ở ô J16, bạn dùng tạm công thức này nhé:
=INDEX($E$4:$M$13,SUM(IFERROR(MATCH(I16,$B$4:$B$13,0),0),IFERROR(MATCH(I16,$C$4:$C$13,0),0),IFERROR(MATCH(I16,$D$4:$D$13,0),0)),SUM(IFERROR(MATCH(J16,$E$2:$M$2,0),0),IFERROR(MATCH(J16,$E$3:$M$3,0),0)))
 
cảm ơn bạn. Để mình làm thử
 
Lần chỉnh sửa cuối:
Giả sử chữ d2 nằm ở ô I16, số 12 nằm ở ô J16, bạn dùng tạm công thức này nhé:
=INDEX($E$4:$M$13,SUM(IFERROR(MATCH(I16,$B$4:$B$13,0),0),IFERROR(MATCH(I16,$C$4:$C$13,0),0),IFERROR(MATCH(I16,$D$4:$D$13,0),0)),SUM(IFERROR(MATCH(J16,$E$2:$M$2,0),0),IFERROR(MATCH(J16,$E$3:$M$3,0),0)))

trường hợp, một trong 2 điều kiện bỏ trống (I16 hoặc J16 trống) thì ko còn đúng nữa bác ah :)
 
Nhờ mọi người giúp mình làm sao để tìm giá trị giao nhau, khi biết giá trị tìm kiếm
Phải làm sao khi bảng dò tìm gồm nhiều ô, không phải cột đầu tiên hay dòng đầu tiên. như file đính kèm.
Bài này mà dùng VBA thì xoẹt cái là xong!
 
Nhờ mọi người giúp mình làm sao để tìm giá trị giao nhau, khi biết giá trị tìm kiếm
Phải làm sao khi bảng dò tìm gồm nhiều ô, không phải cột đầu tiên hay dòng đầu tiên. như file đính kèm.
Góp vui thêm hai cách bằng công thức Mảng:
Mã:
=IFERROR(INDEX(E4:M13,MATCH(1,INDEX(COUNTIF(OFFSET(B3:D3,ROW(1:10),),G16),),),MATCH(1,INDEX(COUNTIF(OFFSET(D2:D3,,ROW(1:9)),H16),),)),"")
Hoặc:
=IFERROR(INDIRECT(TEXT(INDEX(MAX((B4:D13=G16)*ROW(B4:B13)*10^3)+MAX((E2:M3=H16)*COLUMN(E2:M2)),),"R000C000"),),"")
Chỉ Enter.
Thân
 

File đính kèm

  • tim nhieu DK.xlsb
    9.5 KB · Đọc: 27
Cũng muốn "xoẹt cái" nhưng không xong. Phải "xoẹt" nhiều cái hơi bị "đau".
Em thì làm khác: Dùng Find Method. Em viết 2 hàm:
Mã:
Function FindRow(ByVal FindValue, ByVal FindRange As Range, Optional ByVal MatchCase As Boolean = False)
  Dim rngFind As Range
  FindRow = CVErr(xlErrNA)
  Set rngFind = FindRange.Find(FindValue, , xlValues, xlWhole, , , MatchCase)
  If Not rngFind Is Nothing Then FindRow = rngFind.Row
End Function
Function FindCol(ByVal FindValue, ByVal FindRange As Range, Optional ByVal MatchCase As Boolean = False)
  Dim rngFind As Range
  FindCol = CVErr(xlErrNA)
  Set rngFind = FindRange.Find(FindValue, , xlValues, xlWhole, , , MatchCase)
  If Not rngFind Is Nothing Then FindCol = rngFind.Column
End Function
Xong trên bảng tính em gõ:
Mã:
=INDEX(A1:M13,FindRow(I16,B4:D13),FindCol(J16,E2:M3))
Với I16 và J16 là 2 giá trị tìm kiếm
 
Lần chỉnh sửa cuối:
Nhờ mọi người giúp mình làm sao để tìm giá trị giao nhau, khi biết giá trị tìm kiếm
Phải làm sao khi bảng dò tìm gồm nhiều ô, không phải cột đầu tiên hay dòng đầu tiên. như file đính kèm.
Bạn tham khảo.
Mình tách hàm từng cột phụ để dễ debug. Bạn có thể gom hàm cho gọn.
 

File đính kèm

  • tim nhieu dieu kien.xlsx
    10.5 KB · Đọc: 24
e cảm ơn các anh trong diễn đàn rất nhiều. đúng là gặp toàn cao thủ.
Nếu thêm điều kiện ví dụ: nếu giá trị ở cột 1 thì đối chiếu tìm giá trị trong hàng 1 tương ứng thì phải làm sao ạ.
Mong các anh chỉ giáo.
 

File đính kèm

  • do tim KQ.xlsx
    11.7 KB · Đọc: 9
Em thì làm khác: Dùng Find Method. Em viết 2 hàm:
Đọc code của ndu96081631 mới thấy mình phải thêm cái "Option Compare Text".
Bài đã được tự động gộp:

e cảm ơn các anh trong diễn đàn rất nhiều. đúng là gặp toàn cao thủ.
Nếu thêm điều kiện ví dụ: nếu giá trị ở cột 1 thì đối chiếu tìm giá trị trong hàng 1 tương ứng thì phải làm sao ạ.
Mong các anh chỉ giáo.
Làm "quái gì được"!
Cột có 3 cột, hàng có 2 hàng. Nếu tìm không có thì ra cái gì?
 
e cảm ơn các anh trong diễn đàn rất nhiều. đúng là gặp toàn cao thủ.
Nếu thêm điều kiện ví dụ: nếu giá trị ở cột 1 thì đối chiếu tìm giá trị trong hàng 1 tương ứng thì phải làm sao ạ.
Mong các anh chỉ giáo.
Thử:
Mã:
I16=IFERROR(INDIRECT(TEXT(INDEX(MAX((B4:D13=G16)*ROW(B4:B13)*10^3)+MATCH(H16,INDEX(OFFSET($A$1:$M$1,INDEX(MAX((B4:D13=G16)*COLUMN($A:$C)),)-1,),),),),"R000C000"),),"")
Thân
 
không phải, e mới gửi lại file khác có 3 hàng 3 cột tương ứng. điều kiện phức tạp quá ạ. các bác xem chỉ giáo giúp e. e xin chân thành cảm ơn!!
 
Lần chỉnh sửa cuối:

File đính kèm

  • do tim KQ.xlsm
    18.5 KB · Đọc: 14
điều kiện phức tạp quá
Nếu là tôi, trong trường hợp bài toán trở nên quá phức tạp thì tôi sẽ xem lại cách bố trí dữ liệu chứ không cố làm ra kết quả bằng mọi cách
Một CSDL đơn giản sẽ khiến cho mọi yêu cầu tính toán trở nên đơn giản và chính xác. Việc mở rộng dữ liệu cũng không ảnh hướng đến thuật toán tìm kiếm. Bằng ngược lại, dữ liệu bố trí phức tạp thì mọi thay đổi sau này sẽ phá vỡ toàn bộ tính toán trước đó
Tôi nói vậy là vì bắt đầu cảm thấy dữ liệu của bạn nó... dị dị rồi đấy
 
Nếu là tôi, trong trường hợp bài toán trở nên quá phức tạp thì tôi sẽ xem lại cách bố trí dữ liệu chứ không cố làm ra kết quả bằng mọi cách...
Tôi nói vậy là vì bắt đầu cảm thấy dữ liệu của bạn nó... dị dị rồi đấy

Dạ đúng là nó hơi dị. Nhưng e đã tóm gọn lại rồi đấy ạ. Hết sức mến phục anh!
 
Lúc đầu e tính chỉ làm bằng công thức thủ công. nhưng sau khi tham khảo file của bác Ba tê gạo cội e thấy thích cách giải quyết bằng VBA quá, mặc dù chưa học VBA nhưng đọc vô cũng hiểu phần nào. Nếu được bác xử lý công thức còn lại bằng VBA giúp e với. e xin cảm ơn.
 

File đính kèm

  • Do tim phuc tap.xlsm
    23.5 KB · Đọc: 40
Web KT
Back
Top Bottom