Page 1 of 1

การดึงข้อมูลผ่านตามเงื่อนไข

Posted: Tue Oct 26, 2021 3:22 pm
by non2_hab
สวัสดีครับ

สืบเนื่องจากที่ทางผมได้สอบถามสูตรการดึงข้อมูลและการเลือกข้อมูลไว้ก่อนหน้านี้

เพื่อที่จะนำมาศึกษา และปรับใช้งาน แต่สุดท้ายก็ยังไม่สำเร็จ T_T อาจจะเป็นเพราะยังไม่เข้าใจการทำงานของ Function ที่ดีพอ

รบกวนทุกท่านช่วยชี้แนะสูตรการดึงข้อมูลผ่านตามเงื่อนไขตามด้านล่างด้วยครับ

เงื่อนไข

1. ให้ทำการตรวจสอบ Series no. ที่ Column A ใน Sheet Data ว่า Series no. ไหนมีผลเป็น FAIL ที่ Column G เกิดขึ้นถึง 3 ครั้งหรือไม่
ถ้ามีให้นำข้อมูล Item (ที่ Column B ถึง Column F) FAIL ครั้งที่ 3 ของ Series no นั้นมาแสดงที่ Sheet Result ตามลำดับ

2. โดยที่ข้อมูล Item และ Value (ที่ Column B ถึง Column F) ที่นำมาแสดงนั้น ให้นำมาแสดงเฉพาะหัวข้อ Item และ Value ที่ไม่ผ่าน Limit
โดยกำหนดค่า Limit Max ไว้ที่ Row 3 และ Limit Min ไว้ที่ Row 4

ขอคำแนะนำด้วยครับ

Re: การดึงข้อมูลผ่านตามเงื่อนไข

Posted: Tue Oct 26, 2021 9:00 pm
by norkaz
...

A2

=IFERROR(INDEX(Data!$A$5:$A$27,AGGREGATE(15,6,ROW(Data!$A$5:$A$27)-ROW(Data!$A$5)+1/(MATCH(ROW(Data!$A$1:$A$27)/((Data!$B$5:$F$27<Data!$B$4:$F$4)+(Data!$B$5:$F$27>Data!$B$3:$F$3)),AGGREGATE(15,6,LOOKUP(ROW(Data!$A$5:$A$27)/((ROW(Data!$A$5:$A$27)/(COUNTIFS(Data!$A$5:$A$27,Data!$A$5:$A$27,Data!$G$5:$G$27,"FAIL")>=3/(Data!$G$5:$G$27="FAIL"))-ROW(Data!$A$5)+1)=MATCH(Data!$A$5:$A$27,Data!$A$5:$A$27,0))-ROW(Data!$A$5)+1,MATCH(Data!$A$5:$A$27,Data!$A$5:$A$27,0)/(Data!$G$5:$G$27="FAIL"),ROW(Data!$A$5:$A$27)-ROW(Data!$A$5)+1),ROW(Data!$A$1:$A$27)),0)>0),ROWS($A$2:A2))),"")

Ctrl + Shift+ Enter

B2

=IFERROR(INDEX(Data!$B$2:$F$2,AGGREGATE(15,6,INDEX(COLUMN(Data!$B$5:$F$5)/((Data!$B$5:$F$27<Data!$B$4:$F$4)+(Data!$B$5:$F$27>Data!$B$3:$F$3))-COLUMN(Data!$B$5)+1,AGGREGATE(15,6,ROW(Data!$A$5:$A$27)/(COUNTIFS(Data!$A$5:$A$27,Data!$A$5:$A$27,Data!$G$5:$G$27,"FAIL")>=3)/($A2=Data!$A$5:$A$27),3)-ROW(Data!$A$5)+1,0),COUNTIF($A$2:A2,A2))),"")

C2

=IFERROR(INDEX(Data!$B$5:$F$27,AGGREGATE(15,6,ROW(Data!$A$5:$A$27)/(COUNTIFS(Data!$A$5:$A$27,Data!$A$5:$A$27,Data!$G$5:$G$27,"FAIL")>=3)/($A2=Data!$A$5:$A$27),3)-ROW(Data!$A$5)+1,AGGREGATE(15,6,INDEX(COLUMN(Data!$B$5:$F$5)/((Data!$B$5:$F$27<Data!$B$4:$F$4)+(Data!$B$5:$F$27>Data!$B$3:$F$3))-COLUMN(Data!$B$5)+1,AGGREGATE(15,6,ROW(Data!$A$5:$A$27)/(COUNTIFS(Data!$A$5:$A$27,Data!$A$5:$A$27,Data!$G$5:$G$27,"FAIL")>=3)/($A2=Data!$A$5:$A$27),3)-ROW(Data!$A$5)+1,0),COUNTIF($A$2:A2,A2))),"")

Norkaz

Re: การดึงข้อมูลผ่านตามเงื่อนไข

Posted: Tue Oct 26, 2021 9:58 pm
by norkaz
...

อีกแบบใช้คอลัมน์ไปช่วย

ชีท Data

Helper-1
H5

=IF((COUNTIFS($A$5:A5,A5,$G$5:G5,"FAIL")*(G5="FAIL"))=3,ROWS($H$5:H5),"")

Helper-2

I5:Mxx
=IFERROR(IF($H5="","",AGGREGATE(15,6,$H5/(($B5:$F5<$B$4:$F$4)+($B5:$F5>$B$3:$F$3)),COLUMNS($I5:I5))),"")

Helper-3

N5:Rxx
=IF($H5="","",IFERROR(AGGREGATE(15,6,COLUMN($B5:$F5)/(($B5:$F5<$B$4:$F$4)+($B5:$F5>$B$3:$F$3)),COLUMNS($N5:N5))-COLUMN($B5)+1,""))


ชีท Result
A2
=IFERROR(INDEX(Data!$A$5:$A$27,AGGREGATE(15,6,Data!$I$5:$M$27,ROWS(A$2:A2))),"")


B2

=IF(A2="","",INDEX(Data!$B$2:$F$2,INDEX(Data!$N$5:$R$27,AGGREGATE(15,6,Data!$I$5:$M$27,ROWS(B$2:B2)),COUNTIF($A$2:A2,A2))))


C2

=IF(A2="","",INDEX(Data!$B$5:$F$27,AGGREGATE(15,6,Data!$I$5:$M$27,ROWS(C$2:C2)),INDEX(Data!$N$5:$R$27,AGGREGATE(15,6,Data!$I$5:$M$27,ROWS(D$2:D2)),COUNTIF($A$2:A2,A2))))


Norkaz

Re: การดึงข้อมูลผ่านตามเงื่อนไข

Posted: Wed Oct 27, 2021 12:21 am
by Bo_ry
A2
=IFERROR(INDEX(Data!$A$1:$A$27,AGGREGATE(15,6,ROW(Data!$B$5:$F$27)/((Data!$B$5:$F$27>Data!$B$3:$F$3)+(Data!$B$5:$F$27<Data!$B$4:$F$4)),ROWS(A$2:A2))),"")

B2
=IFERROR(INDEX(Data!$A$2:$G$2,MOD(AGGREGATE(15,6,ROW(Data!$B$5:$F$27)*10^6+COLUMN(Data!$B$2:$F$2)/((Data!$B$5:$F$27>Data!$B$3:$F$3)+(Data!$B$5:$F$27<Data!$B$4:$F$4)),ROWS(A$2:A2)),10^6)),"")

C2
=IFERROR(INDEX(Data!$B$1:$F$27,AGGREGATE(15,6,ROW(Data!$B$5:$F$27)/((Data!$B$5:$F$27>Data!$B$3:$F$3)+(Data!$B$5:$F$27<Data!$B$4:$F$4)),ROWS(A$2:A2)),MATCH(B2,Data!$B$2:$F$2,)),"")

Re: การดึงข้อมูลผ่านตามเงื่อนไข

Posted: Wed Oct 27, 2021 7:55 am
by non2_hab
norkaz wrote: Tue Oct 26, 2021 9:58 pm ...

อีกแบบใช้คอลัมน์ไปช่วย

ชีท Data

Helper-1
H5

=IF((COUNTIFS($A$5:A5,A5,$G$5:G5,"FAIL")*(G5="FAIL"))=3,ROWS($H$5:H5),"")

Helper-2

I5:Mxx
=IFERROR(IF($H5="","",AGGREGATE(15,6,$H5/(($B5:$F5<$B$4:$F$4)+($B5:$F5>$B$3:$F$3)),COLUMNS($I5:I5))),"")

Helper-3

N5:Rxx
=IF($H5="","",IFERROR(AGGREGATE(15,6,COLUMN($B5:$F5)/(($B5:$F5<$B$4:$F$4)+($B5:$F5>$B$3:$F$3)),COLUMNS($N5:N5))-COLUMN($B5)+1,""))


ชีท Result
A2
=IFERROR(INDEX(Data!$A$5:$A$27,AGGREGATE(15,6,Data!$I$5:$M$27,ROWS(A$2:A2))),"")


B2

=IF(A2="","",INDEX(Data!$B$2:$F$2,INDEX(Data!$N$5:$R$27,AGGREGATE(15,6,Data!$I$5:$M$27,ROWS(B$2:B2)),COUNTIF($A$2:A2,A2))))


C2

=IF(A2="","",INDEX(Data!$B$5:$F$27,AGGREGATE(15,6,Data!$I$5:$M$27,ROWS(C$2:C2)),INDEX(Data!$N$5:$R$27,AGGREGATE(15,6,Data!$I$5:$M$27,ROWS(D$2:D2)),COUNTIF($A$2:A2,A2))))


Norkaz
ขอขอบคุณคุณ Norkaz มากเลยครับ ที่แนะนำ มาให้ 2 แบบ เด๋วจะนำไปศึกษาและปรับใช้งานครับ

Re: การดึงข้อมูลผ่านตามเงื่อนไข

Posted: Wed Oct 27, 2021 7:56 am
by non2_hab
Bo_ry wrote: Wed Oct 27, 2021 12:21 am A2
=IFERROR(INDEX(Data!$A$1:$A$27,AGGREGATE(15,6,ROW(Data!$B$5:$F$27)/((Data!$B$5:$F$27>Data!$B$3:$F$3)+(Data!$B$5:$F$27<Data!$B$4:$F$4)),ROWS(A$2:A2))),"")

B2
=IFERROR(INDEX(Data!$A$2:$G$2,MOD(AGGREGATE(15,6,ROW(Data!$B$5:$F$27)*10^6+COLUMN(Data!$B$2:$F$2)/((Data!$B$5:$F$27>Data!$B$3:$F$3)+(Data!$B$5:$F$27<Data!$B$4:$F$4)),ROWS(A$2:A2)),10^6)),"")

C2
=IFERROR(INDEX(Data!$B$1:$F$27,AGGREGATE(15,6,ROW(Data!$B$5:$F$27)/((Data!$B$5:$F$27>Data!$B$3:$F$3)+(Data!$B$5:$F$27<Data!$B$4:$F$4)),ROWS(A$2:A2)),MATCH(B2,Data!$B$2:$F$2,)),"")
ขอขอบคุณ คุณ Bo_ry มากครับที่แนะนำ เด๋วจะนำไปศึกษาและปรับใช้งานครับ

Re: การดึงข้อมูลผ่านตามเงื่อนไข

Posted: Wed Oct 27, 2021 12:51 pm
by snasui
non2_hab wrote: Wed Oct 27, 2021 7:56 am ขอขอบคุณ คุณ Bo_ry มากครับที่แนะนำ เด๋วจะนำไปศึกษาและปรับใช้งานครับ
non2_hab wrote: Wed Oct 27, 2021 7:55 am ขอขอบคุณคุณ Norkaz มากเลยครับ ที่แนะนำ มาให้ 2 แบบ เด๋วจะนำไปศึกษาและปรับใช้งานครับ
:D คำว่า "เด๋ว" ผิดกฎการใช้บอร์ดข้อ 1 ด้านบน :roll: กรุณาระมัดระวังด้วยครับ

Re: การดึงข้อมูลผ่านตามเงื่อนไข

Posted: Wed Oct 27, 2021 1:00 pm
by non2_hab
snasui wrote: Wed Oct 27, 2021 12:51 pm
non2_hab wrote: Wed Oct 27, 2021 7:56 am ขอขอบคุณ คุณ Bo_ry มากครับที่แนะนำ เด๋วจะนำไปศึกษาและปรับใช้งานครับ
non2_hab wrote: Wed Oct 27, 2021 7:55 am ขอขอบคุณคุณ Norkaz มากเลยครับ ที่แนะนำ มาให้ 2 แบบ เด๋วจะนำไปศึกษาและปรับใช้งานครับ
:D คำว่า "เด๋ว" ผิดกฎการใช้บอร์ดข้อ 1 ด้านบน :roll: กรุณาระมัดระวังด้วยครับ
ขอโทษด้วยครับ ครั้งถัดไปจะดูกฎให้รอบคอบครับ