Sử dụng Data validation để thay đổi công thức tương ứng ??? (1 người xem)

Liên hệ QC

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

longruoi.xls

Thành viên mới
Tham gia
21/11/14
Bài viết
21
Được thích
8
Em chào mọi người.

Em có vấn đề như thế này mọi người giải đáp giúp em ạ. Trong dữ liệu của em có sử dụng đến chức năng data validation để chọn một giá trị. Sau đó dựa vào giá trị đó mà công thức của em sẽ thay đổi theo nó. Nếu giá trị ấy số lượng ít em dùng nhiều hàm IF lồng nhau là được nhưng nếu số lượng nhiều quá thì em bị loạn mà hàm IF lại nặng nữa. Như hình em đăng ở dưới đây ạ.
Em muốn hỏi là có bác nào biết cách nào mà khi mình chọn giá trị xổ xuống ở cột C thì công thức ở cột A tự động nhảy theo luôn mà không phải sử dụng IF không ạ. Giả sử C2 em chọn là a thì công thức A2 tự động nhẩy thành =2+3 hoặc C3 chọn là b thì công thức A3 tự động nhẩy thành 2*3....
File gốc em gửi kèm có tiếng Nhật, nên phần em bôi màu vàng mọi người đừng quan tâm ạ.
Em cảm ơn.

キャプチャ4.PNG
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn trình bày 1 cái bảng 2 cột với cột 1 là giá trị dùng để chọn (ví dụ: a, b, c, ...), cột 2 là các giá trị bạn muốn trả về tương ứng (ví dụ: =a+1, b+2, c+3, ...).
Tại phần nhập liệu, ví dụ C2 bạn chọn a, thì A2 bạn sử dụng hàm VLOOKUP để dò giá trị C2 trong bảng dữ liệu được trình bày như trên.
 
Bạn trình bày 1 cái bảng 2 cột với cột 1 là giá trị dùng để chọn (ví dụ: a, b, c, ...), cột 2 là các giá trị bạn muốn trả về tương ứng (ví dụ: =a+1, b+2, c+3, ...).
Tại phần nhập liệu, ví dụ C2 bạn chọn a, thì A2 bạn sử dụng hàm VLOOKUP để dò giá trị C2 trong bảng dữ liệu được trình bày như trên.
Dạ em cảm ơn.
Nhưng ý em không phải thế ạ. Ý em là khi em chọn trong danh sách sổ xuống ở C2 là a rồi thì cái công thức trong ô A2 nó biến đổi luôn theo "a" chứ không phải là tìm giá trị phụ thuộc vào giá trị "a".

Giả sử ô A2 là tập hợp của ba công thức lần lượt là {=a+1;=b+2;=c+3} và ô C2 là danh sách chọn gồm {a;b;c}. Khi giá trị được chọn ở C2 là "a" thì ô A2 chỉ có duy nhất công thức =a+1 xuất hiện thôi ạ.
 
Dạ em cảm ơn.
Nhưng ý em không phải thế ạ. Ý em là khi em chọn trong danh sách sổ xuống ở C2 là a rồi thì cái công thức trong ô A2 nó biến đổi luôn theo "a" chứ không phải là tìm giá trị phụ thuộc vào giá trị "a".

Giả sử ô A2 là tập hợp của ba công thức lần lượt là {=a+1;=b+2;=c+3} và ô C2 là danh sách chọn gồm {a;b;c}. Khi giá trị được chọn ở C2 là "a" thì ô A2 chỉ có duy nhất công thức =a+1 xuất hiện thôi ạ.
Làm công thức thì bạn phải có đủ điều kiện nêu trong công thức, ví dụ ở A2 bạn đặt công thức =C2+x
Vậy biến "x" nó căn cứ vào đâu để đưa vào? Không phải xuất hiện giá trị ngẫu nhiên rồi? Vậy nên bạn cần 1 cái bảng dữ liệu thay thế cho "nhiều IF" là ở chỗ đó.
Bạn thử theo hướng này xem, lập bảng điều kiện, tại A2 đặt công thức: =IF(C2="",0,C2+vlookup(c2,bảng điều kiện,cột giá trị chứa x,0))
 
Em chào mọi người.

Em có vấn đề như thế này mọi người giải đáp giúp em ạ. Trong dữ liệu của em có sử dụng đến chức năng data validation để chọn một giá trị. Sau đó dựa vào giá trị đó mà công thức của em sẽ thay đổi theo nó. Nếu giá trị ấy số lượng ít em dùng nhiều hàm IF lồng nhau là được nhưng nếu số lượng nhiều quá thì em bị loạn mà hàm IF lại nặng nữa. Như hình em đăng ở dưới đây ạ.
Em muốn hỏi là có bác nào biết cách nào mà khi mình chọn giá trị xổ xuống ở cột C thì công thức ở cột A tự động nhảy theo luôn mà không phải sử dụng IF không ạ. Giả sử C2 em chọn là a thì công thức A2 tự động nhẩy thành =a+1 hoặc C3 chọn là b thì công thức A3 tự động nhẩy thành b+2....

Em cảm ơn.

View attachment 233590
Gởi file với các kết quả có thể xảy ra sẽ có cách chuẩn hơn
 
Làm công thức thì bạn phải có đủ điều kiện nêu trong công thức, ví dụ ở A2 bạn đặt công thức =C2+x
Vậy biến "x" nó căn cứ vào đâu để đưa vào? Không phải xuất hiện giá trị ngẫu nhiên rồi? Vậy nên bạn cần 1 cái bảng dữ liệu thay thế cho "nhiều IF" là ở chỗ đó.
Bạn thử theo hướng này xem, lập bảng điều kiện, tại A2 đặt công thức: =IF(C2="",0,C2+vlookup(c2,bảng điều kiện,cột giá trị chứa x,0))
Vâng em hiểu ý bác rồi. Chỉ tại lỗi của em đưa cái giải thích hơi ngu muội một tý làm bác hiểu sai về cái "x" đấy ạ. Cái "x" đó của em như bác đề cập đến nó đại diện cho các hằng số trong công thức của em rồi nên nó không ngẫu nhiên và cũng không cần điều kiện gì cả. Trong ảnh em chỉ lấy đại ví dụ là 1,2,3 thôi . Chứ công thức thật sự em đang làm thì nó rối mắt lắm ạ.

Điều em thực muốn không phải là giá trị tính ra của công thức cột A là em muốn công thức tại cột A tự biến đổi sau khi em đã chọn cột giá trị ở cột C mà không dùng đến IF như ở ô A2. Giả sử như ảnh dưới đây sẽ thấy là cột C4 chọn b thì chỉ có công thức =2*3 được thực hiện thôi.

キャプチャ3.PNG
Bài đã được tự động gộp:

Gởi file với các kết quả có thể xảy ra sẽ có cách chuẩn hơn
Dạ file của em đây. Có tiếng Nhật nên nếu không hiểu thì mong bác thông cảm. Em đang chưa có thời gian Vietsub ạ.
 

File đính kèm

Lần chỉnh sửa cuối:
Vâng em hiểu ý bác rồi. Chỉ tại lỗi của em đưa cái giải thích hơi ngu muội một tý làm bác hiểu sai về cái "x" đấy ạ. Cái "x" đó của em như bác đề cập đến nó đại diện cho các hằng số trong công thức của em rồi nên nó không ngẫu nhiên và cũng không cần điều kiện gì cả. Trong ảnh em chỉ lấy đại ví dụ là 1,2,3 thôi . Chứ công thức thật sự em đang làm thì nó rối mắt lắm ạ.

Điều em thực muốn không phải là giá trị tính ra của công thức cột A là em muốn công thức tại cột A tự biến đổi sau khi em đã chọn cột giá trị ở cột C mà không dùng đến IF như ở ô A2. Giả sử như ảnh dưới đây sẽ thấy là cột C4 chọn b thì chỉ có công thức =2*3 được thực hiện thôi.

View attachment 233596
Bài đã được tự động gộp:


Dạ file của em đây. Có tiếng Nhật nên nếu không hiểu thì mong bác thông cảm. Em đang chưa có thời gian Vietsub ạ.
Rút gọn công thức
Mã:
H8 =(1/IF(L8="PIPE",$I$4,$J$4))*VLOOKUP($F8,OFFSET(INDIRECT(L8),,,,11),6+(L8="PIPE")*5,0)^(2/3)*($G8/100)^(1/2)
I8 =VLOOKUP($F8,OFFSET(INDIRECT(L8),,,,10),5+(L8="PIPE")*5,0)*H8
 
Rút gọn công thức
Mã:
H8 =(1/IF(L8="PIPE",$I$4,$J$4))*VLOOKUP($F8,OFFSET(INDIRECT(L8),,,,11),6+(L8="PIPE")*5,0)^(2/3)*($G8/100)^(1/2)
I8 =VLOOKUP($F8,OFFSET(INDIRECT(L8),,,,10),5+(L8="PIPE")*5,0)*H8
Hay quá! Công thức rút gọn thôi rồi nhìn thoáng hẳn. Mặc dù là chưa hiểu hết công thức nhưng sơ qua thì trong khả năng tìm hiểu của em. Dạ cảm ơn bác lắm lắm.
 
Hay quá! Công thức rút gọn thôi rồi nhìn thoáng hẳn. Mặc dù là chưa hiểu hết công thức nhưng sơ qua thì trong khả năng tìm hiểu của em. Dạ cảm ơn bác lắm lắm.
Bạn bố trí lại dữ liệu hợp lý thì công thức còn gọn hơn nữa
 
Đổi tên theo từng cặp như A và t_A, B và t_B, C và t_C bỏ được hàm Offset
Sáng đến giờ mới tìm hiểu xong được đoạn công thức của bác đây. Thấy thế đã hay lắm rồi mà vẫn còn thay đổi được cơ à. Ý bác nói em không hình dung ra được ạ. Theo như bác nói thì em nghĩ là dùng hàm vlookup lúc đó sẽ sử dụng tên của vùng dữ liệu thay cho phần mảng tìm kiếm trong hàm Vlookup có phải không ạ ?
Bác nói thêm được không bác @HieuCD
Bài đã được tự động gộp:

Đổi tên theo từng cặp như A và t_A, B và t_B, C và t_C bỏ được hàm Offset
.
aaaaaa ! em đã tìm ra rồi ạ. sử dụng độc hàm indirect là xong ạ. Em cảm ơn bác nhé. Ý tưởng hay quá ạ
 
Lần chỉnh sửa cuối:
Bạn check vùng công thức phần bôi màu xanh lá cây nhé.
Mình check rồi ạ. Lúc vừa mở lên excel nó có báo là xóa mất hai phần code hoặc không tìm thấy 2 phần code mang tên /xl/worksheets/sheet1.xml và /xl/calcChain.xml bạn ạ. Lúc này toàn bộ phần mầu xanh chỉ có công thức không liên quan gì đến sheet 1 bạn tạo trong file của mình cả. Không biết là có ảnh hưởng đến ý định bạn thực thi giúp mình không nữa ?
 
Mình check rồi ạ. Lúc vừa mở lên excel nó có báo là xóa mất hai phần code hoặc không tìm thấy 2 phần code mang tên /xl/worksheets/sheet1.xml và /xl/calcChain.xml bạn ạ. Lúc này toàn bộ phần mầu xanh chỉ có công thức không liên quan gì đến sheet 1 bạn tạo trong file của mình cả. Không biết là có ảnh hưởng đến ý định bạn thực thi giúp mình không nữa ?
Sheet1 là mình định test dùng indirect, nên bạn có thể xóa Sheet1 đi mà ko ảnh hưởng đến phần công thức bôi màu xanh nhé.

Bạn gắn lại Validation cho ô B28 nhé.
 
Sheet1 là mình định test dùng indirect, nên bạn có thể xóa Sheet1 đi mà ko ảnh hưởng đến phần công thức bôi màu xanh nhé.

Bạn gắn lại Validation cho ô B28 nhé.
Mình không hiểu ý bạn cho công thức ở phần màu xanh này. Có lẽ bạn đã hiểu nhầm ý mình muốn chăng ? Sau khi check thì mình thấy rằng bạn kết hợp hai hàm index và match để tìm giá trị ở cột H. Nhưng cái mình cần là lấy dữ liệu ở các sheet sau đó tính toán ra kết quả ở cột H và I. Hơn nữa vì có chứa công thức mảng lên mỗi test kiểm tra sau mỗi lần hai cột đầu tiên trong ô màu xanh là A28 và B28 thay đổi lại phải Ctrl+Shift+enter nên hơi lâu một xíu.

Mình mạnh dạn đoán ý bạn thế này. Sử dụng hàm index và match thay cho Vlookup lấy giá trị ở sheet sau sang để tính toán. Tuy nhiêm trong trường hợp này nó không chỉ có 01 sheet mà đến 03 sheet dữ liệu ở phía sau nên phần INDEX((A28=$L$8:$L$21)*(B28=$F$8:$F$21) này có vấn đề bạn ạ.

Mong bạn giải thích thêm nếu mình nói có gì không đúng. Cảm ơn bạn.
 
Mình không hiểu ý bạn cho công thức ở phần màu xanh này. Có lẽ bạn đã hiểu nhầm ý mình muốn chăng ? Sau khi check thì mình thấy rằng bạn kết hợp hai hàm index và match để tìm giá trị ở cột H. Nhưng cái mình cần là lấy dữ liệu ở các sheet sau đó tính toán ra kết quả ở cột H và I. Hơn nữa vì có chứa công thức mảng lên mỗi test kiểm tra sau mỗi lần hai cột đầu tiên trong ô màu xanh là A28 và B28 thay đổi lại phải Ctrl+Shift+enter nên hơi lâu một xíu.

Mình mạnh dạn đoán ý bạn thế này. Sử dụng hàm index và match thay cho Vlookup lấy giá trị ở sheet sau sang để tính toán. Tuy nhiêm trong trường hợp này nó không chỉ có 01 sheet mà đến 03 sheet dữ liệu ở phía sau nên phần INDEX((A28=$L$8:$L$21)*(B28=$F$8:$F$21) này có vấn đề bạn ạ.

Mong bạn giải thích thêm nếu mình nói có gì không đúng. Cảm ơn bạn.

Theo yêu cầu của bạn thì nên dùng indirect thay thế cho IF như file đính kèm nhé bạn.
 

File đính kèm

Theo yêu cầu của bạn thì nên dùng indirect thay thế cho IF như file đính kèm nhé bạn.
Mình hiểu ý bạn rồi. Cách của bạn và cách của bác HieuCD ở trên khá giống nhau nhưng cách viết hàm của bác ấy thì ngọn hơn một chút. Nhưng đổi lại mình lại rất thích cái cách bạn đặt tên cho vùng dữ liệu. Như thế nếu dữ liệu có thêm bớt gì thì cũng không bị ảnh hưởng. Sau này mình sẽ áp dụng giống như đã học từ bạn.
Cảm ơn bạn lần nữa nhé.
 
Web KT

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

Back
Top Bottom