Lấy dữ liệu theo điều kiện

Liên hệ QC

Iwant.you

Thành viên mới
Tham gia
29/10/13
Bài viết
4
Được thích
0
mình cần xử lí 1 số số liệu và đang gặp phải khó khăn về hàm trong excel như sau.
1. ở sheet1 mình có nhiều cột và dòng, ví dụ 1 dòng là : 0 1 0 0 0 1 0 1 0 0 0 0 ( mỗi số ở 1 ô)
2. ở sheet 2 mình cần số liệu là : " nếu sheet1!a1= 1 thì giá trị 1 gần nhất,tiếp theo và cùng dòng sẽ cách ô sheet1!a1 mấy ô ?"
3. nếu ở sheet1 là chuối kia thì mình muốn giá trị trả về của ô sheet2!a1 là giá trị rỗng và ở ô sheet2!b1 = 3 ( 3 ô chứa giá trị 0 nữa thì đến ô chứa giá trị 1 gần nhất.)
nhờ mọi người cho xin ý kiến, giúp đỡ.
thanks.
 
mình cần xử lí 1 số số liệu và đang gặp phải khó khăn về hàm trong excel như sau.
1. ở sheet1 mình có nhiều cột và dòng, ví dụ 1 dòng là : 0 1 0 0 0 1 0 1 0 0 0 0 ( mỗi số ở 1 ô)
2. ở sheet 2 mình cần số liệu là : " nếu sheet1!a1= 1 thì giá trị 1 gần nhất,tiếp theo và cùng dòng sẽ cách ô sheet1!a1 mấy ô ?"
3. nếu ở sheet1 là chuối kia thì mình muốn giá trị trả về của ô sheet2!a1 là giá trị rỗng và ở ô sheet2!b1 = 3 ( 3 ô chứa giá trị 0 nữa thì đến ô chứa giá trị 1 gần nhất.)
nhờ mọi người cho xin ý kiến, giúp đỡ.
thanks.

Bạn thử dùng công thức mảng này xem
 

File đính kèm

=IFERROR(IF(H1=1,SMALL(IF(I$1:T$1=1,COLUMN(H$1:S$1),""),1)-COUNT($A$1:H1),""),"")
công thức hàm if này mình ko hiểu, excel cứ báo lỗi value IF(I$1:T$1=1,COLUMN(H$1:S$1),"")
và đây cũng ko phải là tối ưu cho mình, mình cần xử lí 1 chuỗi các số như thế khoảng 2.000 số ( ô ) và đã thấy trường hợp 75 số 0 xuất hiện liên tiếp nhau.
 
=IFERROR(IF(H1=1,SMALL(IF(I$1:T$1=1,COLUMN(H$1:S$1),""),1)-COUNT($A$1:H1),""),"")
công thức hàm if này mình ko hiểu, excel cứ báo lỗi value IF(I$1:T$1=1,COLUMN(H$1:S$1),"")
và đây cũng ko phải là tối ưu cho mình, mình cần xử lí 1 chuỗi các số như thế khoảng 2.000 số ( ô ) và đã thấy trường hợp 75 số 0 xuất hiện liên tiếp nhau.

Đây là mình chỉ đưa ra cách làm với dữ liệu giả định của bạn thôi.
Nếu bạn không tùy biến được thì tốt nhất là bạn đưa file thật của bạn lên và giải thích, kết quả bạn muốn.
 
Lần chỉnh sửa cuối:
kèm đây là data của mình.(data của mình là 11450 dòng, ở đây mình thí dụ 101 dòng thôi)
mình muốn ở sheet2 cho ra kết quả là : bao nhiêu số 0 ( ô chứa số 0) nữa thì đến số 1 tiếp theo nếu sheet1!a1=1.
lưu í số liệu mình rất lớn, cho lên phải tối ưu sử dụng hàm ko thì excel báo chọn less data.
cũng theo gợi í của bạn, mình làm thế này :
1. sheet1! là data gốc.
2. sheet2! mình dùng công thức : if(sheet1!a1=1,column(sheet1!a1),"")
3. sheet3! mình dùng công thức : if(sheet1!a1=1,min(sheet2!b1:my1)-sheet2!a1,"")
ở đây, do data khá lớn lên khi paste công thức ở sheet3 cho tất cả các ô thì báo là phải chọn less data.
p/s: nhờ các bạn giúp về hướng giải quyết còn về vấn đề dữ liệu lớn thì mình sẽ chia nhỏ và làm thủ công vậy.
thanks
 

File đính kèm

kèm đây là data của mình.(data của mình là 11450 dòng, ở đây mình thí dụ 101 dòng thôi)
mình muốn ở sheet2 cho ra kết quả là : bao nhiêu số 0 ( ô chứa số 0) nữa thì đến số 1 tiếp theo nếu sheet1!a1=1.
lưu í số liệu mình rất lớn, cho lên phải tối ưu sử dụng hàm ko thì excel báo chọn less data.
cũng theo gợi í của bạn, mình làm thế này :
1. sheet1! là data gốc.
2. sheet2! mình dùng công thức : if(sheet1!a1=1,column(sheet1!a1),"")
3. sheet3! mình dùng công thức : if(sheet1!a1=1,min(sheet2!b1:my1)-sheet2!a1,"")
ở đây, do data khá lớn lên khi paste công thức ở sheet3 cho tất cả các ô thì báo là phải chọn less data.
p/s: nhờ các bạn giúp về hướng giải quyết còn về vấn đề dữ liệu lớn thì mình sẽ chia nhỏ và làm thủ công vậy.
thanks

Với dữ liệu hơn 11 ngàn dòng và 363 cột chắc không công thức nào chịu được đâu bạn.
Mình làm giúp bạn bằng VBA. Mình cũng test qua rồi, bạn test lại xem sao nhé.

Cách dùng:
1. Đưa dữ liệu của bạn vào sheet1.
2. Vào sheet3 để xem kết quả.
 

File đính kèm

Với dữ liệu hơn 11 ngàn dòng và 363 cột chắc không công thức nào chịu được đâu bạn.
Mình làm giúp bạn bằng VBA. Mình cũng test qua rồi, bạn test lại xem sao nhé.

Cách dùng:
1. Đưa dữ liệu của bạn vào sheet1.
2. Vào sheet3 để xem kết quả.
rất cảm ơn bạn, mình thì ko quen VBA. đây chỉ là 1 thao tác trong nhiều thao tác sử lí số liêu mình đang làm.nếu ko có công thức đơn giản thì mình đành làm thủ công vậy.
với data đó mình vẫn dùng hàm if(sheet1!b1=1,a1+1,0) và 1 số hàm trend, countif....khác nữa. nhưng hàm max và hàm min thì chắc hơi nặng.
cảm ơn bạn đã quan tâm.
p/s: trong thời gian làm việc có gì khúc mắc mình xẽ xin ý kiến của mọi người.
mình còn tạo ra 1 excel lên đến 186.000kb, mở thôi cũng mất 3', chỉ có thể mở được, thay đổi 1 công thức là đơ luôn excel í. hic. đang nghĩ phải sử dụng phần mềm chuyên dụng.
thanks mọi người quan tâm giúp đỡ.
 
rất cảm ơn bạn, mình thì ko quen VBA. đây chỉ là 1 thao tác trong nhiều thao tác sử lí số liêu mình đang làm.nếu ko có công thức đơn giản thì mình đành làm thủ công vậy.
với data đó mình vẫn dùng hàm if(sheet1!b1=1,a1+1,0) và 1 số hàm trend, countif....khác nữa. nhưng hàm max và hàm min thì chắc hơi nặng.
cảm ơn bạn đã quan tâm.
p/s: trong thời gian làm việc có gì khúc mắc mình xẽ xin ý kiến của mọi người.
mình còn tạo ra 1 excel lên đến 186.000kb, mở thôi cũng mất 3', chỉ có thể mở được, thay đổi 1 công thức là đơ luôn excel í. hic. đang nghĩ phải sử dụng phần mềm chuyên dụng.
thanks mọi người quan tâm giúp đỡ.

Muốn dùng gì là tuỳ bạn thôi. Nhưng theo mình với dữ liệu lớn mà dùng công thức thì hơi "oải".
Công thức chỉ nên áp dụng với dữ liệu 5000 dòng và 20 cột trở lại thôi. Không thì tốn thuốc là và cafe lắm :D

Thực nếu bạn biết VBA chút thì có thể tuỳ biến khi thay đổi cơ sở dữ liệu. Còn không thì cứ để nguyên form đừng thay đổi --> đưa dữ liệu vào và lấy ra kết quả thôi. Như bạn thấy trong hướng dẫn dùng đó chỉ có 2 dòng à. Giống như tôi đây này chỉ biết tí chút VBA vẫn sài ngon lành.

Thân.
 
Web KT

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

Back
Top Bottom