รบกวนด้วยค่ะ เป็นพยาบาลที่ไม่เก่ง Excel ขอความช่วยเหลือค่ะ
Posted: Mon Oct 02, 2017 10:40 am
by mrchindanai
รบกวนด้วยค่ะ เป็นพยาบาลที่ไม่เก่ง Excel ขอความช่วยเหลือค่ะ
1. Sheet BP60 เป็นฐานข้อมูล
2. Sheet Same เป็นรายชื่อที่ซ้ำ จะตัดออกจาก BP60
3. Sheet NewBP60 ตัดรายชื่อที่ซ้ำออกแล้ว
4. Sheet <50 เอา Sheet NewBP60 ที่มีอายุน้อยกว่า 50 ปี และ SBP1<130 และ DBP1<80 ,
ถ้า SBP1 และ DBP1 ไม่มีข้อมูล ให้ดูที่ SBP2<130 และ DBP2<80 ,
ถ้า SBP2 และ DBP2 ไม่มีข้อมูล ให้ดูที่ SBP3<130 และ DBP3<80
5. Sheet 50-89 เอา Sheet NewBP60 ที่มีอายุตั้งแต่ 50 ปี-79 ปี และ SBP1<140 และ DBP1<80
ถ้า SBP1 และ DBP1 ไม่มีข้อมูล ให้ดูที่ SBP2<140 และ DBP2<80 ,
ถ้า SBP2 และ DBP2 ไม่มีข้อมูล ให้ดูที่ SBP3<140 และ DBP3<80
6. Sheet DX เอา Sheet NewBP60 ที่ DX1, DX2, DX3, DX4, DX5,DX6 มีค่า N183, N184,N185,N189
อยากให้ข้อ 3,4,5,6 มัน กรองออกมาอัตโนมัติ ดังตัวอย่างค่ะ
จริงๆ แล้ว ข้อมูลประมาณ 8,000 Record ค่ะ
ขอขอบพระคุณล่วงหน้าค่ะ
Re: รบกวนด้วยค่ะ เป็นพยาบาลที่ไม่เก่ง Excel ขอความช่วยเหลือค่ะ
Posted: Mon Oct 02, 2017 4:56 pm
by snasui

ค่อย ๆ ถามตอบกันไปครับ
ข้อ 2 พิจารณาอย่างไรว่าซ้ำช่วยอธิบายเพิ่มเติมด้วยครับ ระบุให้ถึงเซลล์ว่าเซลล์ใด ซ้ำกับเซลล์ใด จะได้เข้าถึงข้อมูลได้โดยไวครับ
Re: รบกวนด้วยค่ะ เป็นพยาบาลที่ไม่เก่ง Excel ขอความช่วยเหลือค่ะ
Posted: Mon Oct 02, 2017 6:50 pm
by mrchindanai
สวัสดีค่ะ ใน Sheet Same จะมี HN กับชื่อ เหมือนกับ Sheet BP60
เช่น ใน Sheet BP60 จะมี HN 2208 ในลำดับที่ 18 ซึ่งเหมือนกับ Sheet Same ในลำดับที่ 3
ให้ตัดออกค่ะ
คือ ใน Sheet Same เราจะเป็นคนกำหนด ซื่อ และ HN เองค่ะ เหมือนกับว่า HN เหล่านี้ เราไม่ต้องการ
แต่ Sheet BP60 เป็น Data base จริง
ดังนั้น จะเห็นว่า Sheet NewBP60 จะหายไป 3 ชื่อค่ะ
Re: รบกวนด้วยค่ะ เป็นพยาบาลที่ไม่เก่ง Excel ขอความช่วยเหลือค่ะ
Posted: Mon Oct 02, 2017 6:55 pm
by mrchindanai
ข้อ 2 คือพิมพ์ขึ้นมาเองค่ะ
แล้วให้ไป จับกันกับ ข้อ 1
ถ้าตรงกันกับ ข้อ 1 ก็ให้ตัดออก กลายเป็นข้อ 3 ค่ะ
หมายถึง ข้อ 2 ไม่ต้องคำนวณค่ะ พยาบาลจะพิมพ์ขึ้นมาเอง ว่า HN ไหน ที่เราไม่ต้องการ
Re: รบกวนด้วยค่ะ เป็นพยาบาลที่ไม่เก่ง Excel ขอความช่วยเหลือค่ะ
Posted: Mon Oct 02, 2017 7:22 pm
by parakorn
sheet DX ผมทำให้ไม่ทันนะครับ เนื่องจากต้องเดินทาง
ส่วนชีทอื่นๆ ลองทำดังนี้ครับ
Sheet "NewBP60"
A2 =INDEX('BP60'!$A$2:$S$21,SMALL(IF(NOT(MMULT(--ISNUMBER(SEARCH(TRANSPOSE(Same!$B$2:$B$4),'BP60'!$B$2:$B$21)),ROW(Same!$B$2:$B$4)^0)),ROW('BP60'!$A$2:$A$21)-ROW('BP60'!$A$2)+1),ROWS(NewBP60!$A$2:A2)),MATCH(NewBP60!A$1,'BP60'!$A$1:$S$1,0)) Ctrl+Shift+Enter แล้ว Copy ไปทางขวาจนถึง Column S และ ลงด้านล่างจนสุดตาราง
T2 =IF(SUM($L2:$M2)>0,1,IF(SUM($O2:$P2)>0,2,IF(SUM($R2:$S2)>0,3))) Enter แล้ว Copy ลงด้านล่าง
Sheet "<50"
T2 =IFERROR(INDEX(NewBP60!$T$2:$T$18,IFERROR(SMALL(IF(NewBP60!$D$2:$D$18<50,IF(NewBP60!$L$2:$L$18>0,IF(NewBP60!$L$2:$L$18<130,IF(NewBP60!$M$2:$M$18>0,IF(NewBP60!$M$2:$M$18<80,ROW(NewBP60!$T$2:$T$18)-ROW(NewBP60!$T$2)+1))))),ROWS($T$2:T2)),IFERROR(SMALL(IF(NewBP60!$D$2:$D$18<50,IF(NewBP60!$O$2:$O$18>0,IF(NewBP60!$O$2:$O$18<130,IF(NewBP60!$P$2:$P$18>0,IF(NewBP60!$P$2:$P$18<80,ROW(NewBP60!$T$2:$T$18)-ROW(NewBP60!$T$2)+1))))),ROWS($T$2:T2)),IFERROR(SMALL(IF(NewBP60!$D$2:$D$18<50,IF(NewBP60!$R$2:$R$18>0,IF(NewBP60!$R$2:$R$18<130,IF(NewBP60!$S$2:$S$18>0,IF(NewBP60!$S$2:$S$18<80,ROW(NewBP60!$T$2:$T$18)-ROW(NewBP60!$T$2)+1))))),ROWS($T$2:T2)),"")))),"") Ctrl+Shift+Enter แล้ว Copy ลงด้านล่าง
A2 =IFERROR(INDEX(NewBP60!$A$2:$S$18,SMALL(IF(NewBP60!$D$2:$D$18<50,IF(CHOOSE($T2,NewBP60!$L$2:$L$18,NewBP60!$O$2:$O$18,NewBP60!$R$2:$R$18)>0,IF(CHOOSE($T2,NewBP60!$L$2:$L$18,NewBP60!$O$2:$O$18,NewBP60!$R$2:$R$18)<130,IF(CHOOSE($T2,NewBP60!$M$2:$M$18,NewBP60!$P$2:$P$18,NewBP60!$S$2:$S$18)>0,IF(CHOOSE($T2,NewBP60!$M$2:$M$18,NewBP60!$P$2:$P$18,NewBP60!$S$2:$S$18)<80,ROW(NewBP60!$A$2:$A$18)-ROW(NewBP60!$A$2)+1))))),ROWS(NewBP60!$A$1:$A1)),MATCH('<50'!A$1,NewBP60!$A$1:$S$1,0)),"") Ctrl+Shift+Enter แล้ว Copy ไปทางขวา และ ลงด้านล่าง
Sheet "50-89"
T2 =IFERROR(INDEX(NewBP60!$T$2:$T$18,IFERROR(SMALL(IF(NewBP60!$D$2:$D$18>=50,IF(NewBP60!$D$2:$D$18<=79,IF(NewBP60!$L$2:$L$18>0,IF(NewBP60!$L$2:$L$18<140,IF(NewBP60!$M$2:$M$18>0,IF(NewBP60!$M$2:$M$18<80,ROW(NewBP60!$T$2:$T$18)-ROW(NewBP60!$T$2)+1)))))),ROWS($T$2:T2)),IFERROR(SMALL(IF(NewBP60!$D$2:$D$18>=50,IF(NewBP60!$D$2:$D$18<=79,IF(NewBP60!$O$2:$O$18>0,IF(NewBP60!$O$2:$O$18<140,IF(NewBP60!$P$2:$P$18>0,IF(NewBP60!$P$2:$P$18<80,ROW(NewBP60!$T$2:$T$18)-ROW(NewBP60!$T$2)+1)))))),ROWS($T$2:T2)),IFERROR(SMALL(IF(NewBP60!$D$2:$D$18>=50,IF(NewBP60!$D$2:$D$18<=79,IF(NewBP60!$R$2:$R$18>0,IF(NewBP60!$R$2:$R$18<140,IF(NewBP60!$S$2:$S$18>0,IF(NewBP60!$S$2:$S$18<80,ROW(NewBP60!$T$2:$T$18)-ROW(NewBP60!$T$2)+1)))))),ROWS($T$2:T2)),"")))),"") Ctrl+Shift+Enter แล้ว Copy ลงด้านล่าง
A2 =IFERROR(INDEX(NewBP60!$A$2:$S$18,SMALL(IF(NewBP60!$D$2:$D$18>=50,IF(NewBP60!$D$2:$D$18<=79,IF(CHOOSE($T2,NewBP60!$L$2:$L$18,NewBP60!$O$2:$O$18,NewBP60!$R$2:$R$18)>0,IF(CHOOSE($T2,NewBP60!$L$2:$L$18,NewBP60!$O$2:$O$18,NewBP60!$R$2:$R$18)<140,IF(CHOOSE($T2,NewBP60!$M$2:$M$18,NewBP60!$P$2:$P$18,NewBP60!$S$2:$S$18)>0,IF(CHOOSE($T2,NewBP60!$M$2:$M$18,NewBP60!$P$2:$P$18,NewBP60!$S$2:$S$18)<80,ROW(NewBP60!$A$2:$A$18)-ROW(NewBP60!$A$2)+1)))))),ROWS(NewBP60!$A$1:$A1)),MATCH('<50'!A$1,NewBP60!$A$1:$S$1,0)),"") Ctrl+Shift+Enter แล้ว Copy ไปทางขวา และ ลงด้านล่าง
Re: รบกวนด้วยค่ะ เป็นพยาบาลที่ไม่เก่ง Excel ขอความช่วยเหลือค่ะ
Posted: Mon Oct 02, 2017 8:28 pm
by snasui

มาช่วยเสริมครับ
เนื่องจากข้อมูลจำนวนมากอาจจะคำนวณนาน สำหรับตัวอย่างสูตรด้านล่างจะช่วยให้ทำงานได้เร็วขึ้นแต่มีหลายขั้นตอน
- ชีต BP60
- เซลล์ T1:W1 คีย์สูตรด้านล่างนี้ตามลำดับเพื่อเป็นหัวคอลัมน์
=N("Same"), =N("<50"), =N("50-89"), =N("DX")ซึ่งจะคีย์เลข 0 ทั้งหมดก็ย่อมได้ เพียงแต่หากคีย์เป็นสูตรดังกล่าวเมื่อจะกลับมาตรวจสอบภายหลังจะได้ทราบว่าคอลัมน์ใดเกี่ยวกับเรื่องใดสามารถดูที่สูตรก็จะทราบได้ทันที
- เซลล์ T2 คีย์สูตร
=IF(N(A2),IF(COUNTIF(Same!$B$2:$B$400,B2),LOOKUP(9.99999999999999E+307,T$1:T1)+1,""),"")
Enter > คัดลอกลงด้านล่างจนสุดข้อมูล
- เซลล์ U2 คีย์สูตร
=IF(N(A2),IF(OR(AND(D2<50,L2<130,M2<80),AND(D2<50,O2<130,P2<80),AND(D2<50,R2<130,S2<80)),LOOKUP(9.99999999999999E+307,U$1:U1)+1,""),"")
Enter > คัดลอกลงด้านล่างจนสุดข้อมูล
- เซลล์ V2 คีย์สูตร
=IF(N(A2),IF(OR(AND(AND(D2>=50,D2<=79),L2<140,M2<80),AND(AND(D2>=50,D2<=79),O2<140,P2<80),AND(AND(D2>=50,D2<=79),,R2<140,S2<80)),LOOKUP(9.99999999999999E+307,V$1:V1)+1,""),"")
Enter > คัดลอกลงด้านล่างจนสุดข้อมูล
- เซลล์ W2 คีย์สูตร
=IF(N(A2),IF(SUMPRODUCT(COUNTIF(F2:J2,{"N183","N184","N185","N189"}))>0,LOOKUP(9.99999999999999E+307,W$1:W1)+1,""),"")
Enter > คัดลอกลงด้านล่างจนสุดข้อมูล
- ชีต NewBP60
- เซลล์ T1 คีย์สูตร
=LOOKUP(9.99999999999999E+307,'BP60'!T:T)Enter
- เซลล์ A2 คีย์สูตร
=IF(ROWS(A$2:A2)>$T$1,"",LOOKUP(ROWS(A$2:A2),'BP60'!$T$2:$T$3000,'BP60'!A$2:A$3000))
Enter > Copy ไปด้านขวาและลงด้านล่าง
- ชีต <50
- เซลล์ T1 คีย์สูตร
=LOOKUP(9.99999999999999E+307,'BP60'!U:U)
Enter
- เซลล์ A2 คีย์สูตร
=IF(ROWS(A$2:A2)>$T$1,"",LOOKUP(ROWS(A$2:A2),'BP60'!$U$2:$U$3000,'BP60'!A$2:A$3000))
Enter > Copy ไปด้านขวาและลงด้านล่าง
- ชีต 50-89
- เซลล์ T1 คีย์สูตร
=LOOKUP(9.99999999999999E+307,'BP60'!V:V)
Enter
- เซลล์ A2 คีย์สูตร
=IF(ROWS(A$2:A2)>$T$1,"",LOOKUP(ROWS(A$2:A2),'BP60'!$V$2:$V$3000,'BP60'!A$2:A$3000))
Enter > Copy ไปด้านขวาและลงด้านล่าง
- ชีต DX
- เซลล์ T1 คีย์สูตร
=LOOKUP(9.99999999999999E+307,'BP60'!V:V)
Enter
- เซลล์ A2 คีย์สูตร
=IF(ROWS(A$2:A3)>$T$1,"",LOOKUP(ROWS(A$2:A3),'BP60'!$V$2:$V$3000,'BP60'!A$2:A$3000))
Enter > Copy ไปด้านขวาและลงด้านล่าง
Re: รบกวนด้วยค่ะ เป็นพยาบาลที่ไม่เก่ง Excel ขอความช่วยเหลือค่ะ
Posted: Tue Oct 03, 2017 11:14 am
by mrchindanai
กราบงามๆ ค่ะ