Bài toán INDEX ngược --> Từ kết quả tìm giá trị dòng, cột (8 người xem)

Liên hệ QC

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

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,963
Có 1 bạn gữi cho tôi 1 bài toán khá hay... nhất thời tôi vẫn chưa nghĩ ra được cách giãi nên giữ lên cho mọi người tham khảo
Đại khái như sau:
- Nếu là bài toán thuận thì ta có giá trị dòng, cột --> Tìm kết quả
- Còn đây là bài toán ngược: Có kết quả ---> Tìm giá trị dòng cột
Mời các bạn xem file và cho biết ý kiến
Câu hỏi nằm tại cell A37
 

File đính kèm

Bài này em đã đọc qua 1 lần rồi nhưng vẫn chưa tìm được cách giải. Đơn giản chỉ vì: Nếu bác có Cự Ly = 500 thì ta sẽ có 2 đáp số là đi từ: +DNG -> KHAC (Hoặc ngược lại) +HUE -> NTR (Hoặc ngược lại) Vậy phải chọn như thế nào với trường hợp này?:''" Xin nói rằng "" Thân.
 
Lần chỉnh sửa cuối:
Bài này em đã đọc qua 1 lần rồi nhưng vẫn chưa tìm được cách giải. Đơn giản chỉ vì:
Nếu bác có Cự Ly = 500 thì ta sẽ có 2 đáp số là đi từ:
+DNG -> KHAC (Hoặc ngược lại)
+HUE -> NTR (Hoặc ngược lại)
Vậy phải chọn như thế nào với trường hợp này?:''"
Xin nói rằng ""
Thân.
Vấn đề nằm ở chố đó đó... Các thông số người ta cho sẳn, khi tra vào bảng thì nó ko phải là DUY NHẤT... Nên... Nhức đầu
Đương nhiên nếu "mò mò" chắc cũng ra.. nhưng ở đây mình đang nói đến công thức để giãi quyết 1 cách chính xác
Hic...
Vậy ta giã định thế này đi: Nếu tìm ra được 2 giá trị thì sẽ lấy 1 giá trị nào đó (tùy ý)... Các bạn thấy sao?
 
Lần chỉnh sửa cuối:
Vậy bác phải đợi tác giả cho ý kiến đã. Có thể tác giả chỉ ra đề đánh đố các bác cho vui thôi. Chứ bỏ công ra làm mà lại không có mục đích rõ rằng thì chẳng ra "Giả tràng xe cát biển động" à! Thật là.....! Thân. "Dã tràng xe cát biển Đông" MrOkebab!
 
Lần chỉnh sửa cuối:
Vậy bác phải đợi tác giả cho ý kiến đã. Có thể tác giả chỉ ra đề đánh đố các bác cho vui thôi.
Chứ bỏ công ra làm mà lại không có mục đích rõ rằng thì chẳng ra "Giả tràng xe cát biển động" à!
Thật là.....!
Thân.
Oh... không đâu... đây là bài tập (thầy cho học trò) ---> Chắc thử sức ---> Nhưng hỏng biết thầy làm có nỗi không ta... Ẹc... Ẹc...
Nếu có trùng, ta chấp nhận lấy 1 giá trị nào đó thì.. tôi đã có giãi pháp rồi đấy... (dể nữa là đàng khác)
 
Vấn đề nằm ở chố đó đó... Các thông số người ta cho sẳn, khi tra vào bảng thì nó ko phải là DUY NHẤT... Nên... Nhức đầu
Đương nhiên nếu "mò mò" chắc cũng ra.. nhưng ở đây mình đang nói đến công thức để giãi quyết 1 cách chính xác
Hic...
Vậy ta giã định thế này đi: Nếu tìm ra được 2 giá trị thì sẽ lấy 1 giá trị nào đó (tùy ý)... Các bạn thấy sao?

- Nếu chỉ có 1 giá trị duy nhất thì còn tìm được, chứ có 2 giá trị trở lên thì . . . khó quá.
- Nếu chỉ có 1 giá trị: Tìm vị trí của Cell thỏa mãn trong một vùng nhiều hàng và nhiều cột
- Hàng :{=SUM(IF($G$9=$D$19:$J$25;ROW($D$19:$J$25);0))}
- Cột :{=SUM(IF($G$9=$D$19:$J$25;Column($D$19:$J$25);0))}​
--CV-
 
- Nếu chỉ có 1 giá trị duy nhất thì còn tìm được, chứ có 2 giá trị trở lên thì . . . khó quá.
- Nếu chỉ có 1 giá trị: Tìm vị trí của Cell thỏa mãn trong một vùng nhiều hàng và nhiều cột
- Hàng :{=SUM(IF($G$9=$D$19:$J$25;ROW($D$19:$J$25);0))}
- Cột :{=SUM(IF($G$9=$D$19:$J$25;Column($D$19:$J$25);0))}​
--CV-
Nếu hàm mãng $G$9=$D$19:$J$25 trả về nhiều giá trị thì ta cứ lấy 1 giá trị nào đó (MIN chẳng hạn) ---> Có sao đâu
 
Nếu hàm mãng $G$9=$D$19:$J$25 trả về nhiều giá trị thì ta cứ lấy 1 giá trị nào đó (MIN chẳng hạn) ---> Có sao đâu

MIN hoặc MAX là một giải pháp rất hay, tuy nhiên lại không phù hợp vào trường hợp này.
Vì tìm ra dòng MIN, nhưng tại đó thì chưa chắc cột đã MIN.
VD : Có 2 cell thỏa mãn : Cells(10,15) và Cells(20,3)
- MIN dòng = 10
- MIN cột = 3
--->> Cells(10,3) : Không chính xác
Khó nghĩ quá.
 
Có 1 bạn gữi cho tôi 1 bài toán khá hay... nhất thời tôi vẫn chưa nghĩ ra được cách giãi nên giữ lên cho mọi người tham khảo
Đại khái như sau:
- Nếu là bài toán thuận thì ta có giá trị dòng, cột --> Tìm kết quả
- Còn đây là bài toán ngược: Có kết quả ---> Tìm giá trị dòng cột
Mời các bạn xem file và cho biết ý kiến
Câu hỏi nằm tại cell A37

Làm thử Nơi đi, nơi đến, không biết thế này có đúng không?
(ưu tiên lấy cells có dòng, cột nhỏ nhất ...)
 

File đính kèm

Lần chỉnh sửa cuối:
MIN hoặc MAX là một giải pháp rất hay, tuy nhiên lại không phù hợp vào trường hợp này.
Vì tìm ra dòng MIN, nhưng tại đó thì chưa chắc cột đã MIN.
VD : Có 2 cell thỏa mãn : Cells(10,15) và Cells(20,3)
- MIN dòng = 10
- MIN cột = 3
--->> Cells(10,3) : Không chính xác
Khó nghĩ quá.

Xem lại bài của Boyxin mới thấy là bài này có lời giải, dựa vào công thức mảng.
Đó là ta luôn biết cột hoặc hàng của bảng dữ liệu, cái mà ta cần tìm là cái còn lại thôi.

- Nơi đến và đi :
- Nếu tìm theo hàng thì cột luôn là B -> Hàng MIN hoặc MAX
- Nếu tìm theo cột thì hàng luôn là 18 -> Cột MIN hoặc MAX
- Loại Phòng : Cột luôn là cột D-> Hàng MIN

Chéo chéo!!
 
Em góp một cách nữa! Dùng Index và Match! Không cần Name.
Nguyên tắc:
1. Dựa vào Cự ly -->Xác định NƠI ĐI (nghĩa là xác định được dòng dữ liệu mong muốn và cố định nó lại) --> xác định NƠI ĐẾN (nghĩa là xác định được cột dữ liệu sau khi dựa vào dòng cố định và cự ly)
2. Loại phòng phải bao gồm Hạng loại phòng

Anh chị xem file đính kèm nhé! Bài này chắc chắc sẽ có công thức ngắn hơn!

@ndu96081631: Anh ơi! Thầy nào ra đề kinh quá vậy! Đừng nói là ai đó là thành viên của GPE thấy mấy hàm Index, Match anh làm hay quá nên đem về ra đề! Ẹc ẹc...
 

File đính kèm

Lần chỉnh sửa cuối:
Em góp một cách nữa! Dùng Index và Match! Không cần Name.
Nguyên tắc:
1. Dựa vào Cự ly -->Xác định NƠI ĐI (nghĩa là xác định được dòng dữ liệu mong muốn và cố định nó lại) --> xác định NƠI ĐẾN (nghĩa là xác định được cột dữ liệu sau khi dựa vào dòng cố định và cự ly)
2. Loại phòng phải bao gồm Hạng loại phòng

Anh chị xem file đính kèm nhé! Bài này chắc chắc sẽ có công thức ngắn hơn!

@ndu96081631: Anh ơi! Thầy nào ra đề kinh quá vậy! Đừng nói là ai đó là thành viên của GPE thấy mấy hàm Index, Match anh làm hay quá nên đem về ra đề! Ẹc ẹc...

Công thức tại B2 sợ quá.

PHP:
{=INDEX($C$29:$C$34;MAX(($I2=$E$29:$I$34)*ROW(INDIRECT("1:6"));1))&"--"&
INDEX($C$28:$I$28;1;MATCH($I2;INDIRECT("C"&
(28+MATCH(INDEX($C$29:$C$34;MAX(($I2=$E$29:$I$34)*ROW(INDIRECT("1:6"));
1));$C$29:$C$34;0))&":I"&
(28+MATCH(INDEX($C$29:$C$34;MAX(($I2=$E$29:$I$34)*ROW(INDIRECT("1:6"));
1));$C$29:$C$34;0)));0))}
Rút ngắn lại chút xíu :

PHP:
{=INDIRECT("C"&MIN(IF(I2=$E$29:$I$34;ROW($E$29:$I$34);""))) & " _ " &
OFFSET($A$28;0;MIN(IF(I2=$E$29:$I$34;COLUMN($E$29:$I$34)-1;"")))}
-- CV--
 
Tôi cũng có cách giãi gần tương tự
Tuy nhiên tôi nghĩ nên đặt name cho 2 bảng tra. Lý do: Nếu dử liệu thay đổi thì ta chỉ cần làm 1 thao tác thay đổi duy nhất cho bãng tra này mà thôi... những công thức khác không hề ảnh hưởng
Tôi làm như sau:
1> Tạo name cho các bạn tra:
PHP:
CL =Bai3!$B$18:$J$25

PHP:
 BG =Bai3!$C$28:$I$34
2> Tạo name D/K
PHP:
TimCL =IF(CL=$G2,ROW(INDIRECT("1:"&ROWS(CL)))+TRANSPOSE(ROW(INDIRECT("1:"&COLUMNS(CL))))/1000,"")

PHP:
TimPHONG =IF(BG=$I2,ROW(INDIRECT("1:"&ROWS(BG)))+TRANSPOSE(ROW(INDIRECT("1:"&COLUMNS(BG))))/1000,"")
3> Cuối cùng là công thức:
PHP:
B2 =INDEX(BG,INT(MIN(TimPHONG)),2)&"-"&INDEX(BG,1,MOD(MIN(TimPHONG),1)*1000)
PHP:
E2 =INDEX(CL,INT(MIN(TimCL)),1)
PHP:
F2 =INDEX(CL,1,MOD(MIN(TimCL),1)*1000)
Không biết ông thầy ra đề này sẽ giãi thế nào nhỉ?
Ẹc... Ẹc...
 

File đính kèm

Bài toán này chỉ gíp ta phát triển về sự sáng tạo của công thức thôi. Chứ còn đáp án thì . . không xác định chính xác (MIN <> MAX), vì vậy nếu ông thầy không cẩn thận thì sẽ bị học viên hỏi ngược lại đấy.

--cv--
 
Giải một bài toán là tìm đáp số , có thể nhiều đáp số đâu phải chỉ duy nhất , các bạn nghĩ sao ?
 
Giải một bài toán là tìm đáp số , có thể nhiều đáp số đâu phải chỉ duy nhất , các bạn nghĩ sao ?
Đương nhiên lấy được hết các đáp số... Có điều hỏng biết điền các đáp số thứ 2, thứ 3.. vào chổ nào?
Bạn mở file lên và cho tôi biết theo bạn thì sẽ điền các đáp số khác vào đâu?
 
Có khi nào Thầy ra đề, bạn ấy lại bỏ 1 cột do quên nhập hay là muốn thử sức. Nếu BT về công thức mà như thế thì theo tôi không phát huy chút sáng tạo nào mà làm tối tăm thêm.
 
Web KT

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

Back
Top Bottom