Page 1 of 1

ต้องการให้ดึงข้อมูลมาอยู่ในลักษณะ database

Posted: Wed Oct 02, 2013 11:14 am
by godman
สวัสดีครับ
พอดีว่า ผมมีข้อมูลอยู่ตารางหนึ่ง เป็นลักษณะชี้ตที่ให้พนักงานใส่จำนวนของเสียแต่ละประเภท แต่พอผมจำมาจัดเรียงข้อมูลให้ต่อกันในแนวนอน
ผมกลับเขียนสูตรได้แต่ไม่ตรงไม่เป็นไปตามความต้องการ ขอความกรุณาว่าผมควรใช้สูตรอย่างไร ผมคิดว่าคงไม่ธรรมดาแน่
ผมใช้สูตร index int

Re: ต้องการให้ดึงข้อมูลมาอยู่ในลักษณะ database

Posted: Wed Oct 02, 2013 11:42 am
by snasui
:D ลองตามนี้ครับ

ที่ J12 คีย์

=IFERROR(INDEX($B$1:$G$1,SMALL(IF($B2:$G2>0,COLUMN($B2:$G2)-COLUMN($B2)+1),COLUMNS($J2:J2))),"")

Ctrl+Shift+Enter > Copy ไปด้านขวาและลงด้านล่าง

Re: ต้องการให้ดึงข้อมูลมาอยู่ในลักษณะ database

Posted: Wed Oct 02, 2013 11:47 am
by godman
ขอบพระคุณมากครับ ผมว่าแล้วต้องไม่ธรรมดาแน่ ๆ และก็จริงๆด้วย ต่อไปผมจะลองให้มันเรียงจากมากไปน้อย ดูครับ ถ้าไม่ได้ยังไง จะมาปรึกษาใหม่ นะ ผมใช้ลูกเล่นไม่เป็น แต่ว่าลองใช้ดูก่อน[quote][/quote] :D

Re: ต้องการให้ดึงข้อมูลมาอยู่ในลักษณะ database

Posted: Wed Oct 02, 2013 12:10 pm
by bank9597
godman wrote:ขอบพระคุณมากครับ ผมว่าแล้วต้องไม่ธรรมดาแน่ ๆ และก็จริงๆด้วย ต่อไปผมจะลองให้มันเรียงจากมากไปน้อย ดูครับ ถ้าไม่ได้ยังไง จะมาปรึกษาใหม่ นะ ผมใช้ลูกเล่นไม่เป็น แต่ว่าลองใช้ดูก่อน
:D
:D ลองตามนี้ครับ

ที่ J2 คีย์ =IFERROR(INDEX($B$1:$G$1,MATCH(1,IF($B2:$G2=LARGE($B2:$G2,COLUMNS($J$2:J2)),1),0)),"") กด ctrl+shift+enter คัดลอกไปทางขวา แล้วลงล่างพร้อมกัน

Re: ต้องการให้ดึงข้อมูลมาอยู่ในลักษณะ database

Posted: Wed Oct 02, 2013 12:18 pm
by godman
สุดยอดมากครับ ผมต้องหัดซะแล้วสูตรยากๆแบบนี้ มีน้อยนักที่ทำได้ ขอบพระคุณมากครับ

Re: ต้องการให้ดึงข้อมูลมาอยู่ในลักษณะ database

Posted: Wed Oct 02, 2013 12:23 pm
by godman
แต่คุณ bank ครับพบปัญหาว่าถ้าจำนวนเท่ากันมันจะแสดงประเภทเดียว จริงๆ มันมี 2 อันผมลองปรับตัวเลขให้เท่ากันดูครับ พบปัญหาดังกล่าวกรณีที่ค่าตัวเลขเหมือนกันหลายประเภทครับ

Re: ต้องการให้ดึงข้อมูลมาอยู่ในลักษณะ database

Posted: Wed Oct 02, 2013 12:59 pm
by ysamroeng
หากต้องการให้ผลลัพธ์ มาเรียงแถวต่อเนื่องกัน ลองใช้วิธีนี้ครับ

ขั้นตอนที่ 1
ที่ H2 พิมพ์สูตร =IF(COUNTA(B2:G2)>0,ROW()-1)
แล้วคัดลอกสูตรลงมาถึง H13

ขั้นตอนที่ 2
ที่ I2 พิมพ์สูตร =IF(ROWS(A$2:A2)>COUNT(H$2:H$13),"",SMALL(H$2:H$13,ROWS(A$2:A2)))
แล้วคัดลอกสูตรลงมาถึง I13

ขั้นตอนที่ 3
ที่ J2 พิมพ์สูตร =IF(ISNUMBER($I2),IFERROR(INDEX($B$1:$G$1,SMALL(IF(ISNUMBER(OFFSET($B$1,$I2,0,1,6)), COLUMN($B2:$G2)-1),COLUMNS($J2:J2))),""),"") กด Ctrl+Shift+Enter
แล้วคัดลอกไปทางขวา แล้วลงล่างพร้อมกัน

ลองดูตัวอย่างในไฟล์แนบครับ

Re: ต้องการให้ดึงข้อมูลมาอยู่ในลักษณะ database

Posted: Wed Oct 02, 2013 6:03 pm
by bank9597
:D หากค่าเท่ากัน แล้วให้เอาค่าที่อยู่ก่อนมาแสดงก่อน สามารถทำได้ดังนี้ครับ

ที่ B17 คีย์ =IFERROR(IF(COUNTIF($B2:$G2,B2)>1,RANK(B2,$B2:$G2)+COUNTIF($B2:$G2,B2)-COUNTIF(B2:$G2,B2),RANK(B2,$B2:$G2)),"") คัดลอกไปทางขวามือ ถึง G17 จากนั้นคัดลอกลงมาถึงพร้อมกันถึง G28

ที่ J2 คีย์ =IFERROR(INDEX($B$1:$G$1,MATCH(1,IF($B2:$G2=LARGE($B2:$G2,COLUMNS($J$2:J2)),IF($B17:$G17=SMALL($B17:$G17,COLUMNS($J2:J2)),1)),0)),"") กด Ctrl+Shift+Enter คัดลอกไปทางขวา แล้วลงล่างพร้อมกันครับ

ปล. สูตรนี้ใช้ได้เฉพาะข้อมูลที่เป็นตัวเลขเท่านั้น

Re: ต้องการให้ดึงข้อมูลมาอยู่ในลักษณะ database

Posted: Thu Oct 03, 2013 4:27 pm
by godman
ขอบคุณคุณแบงค์อีกครั้งครับ สำหรับการตอบปัญหาทุกอย่าง