Page 1 of 1

แยกข้อมูลที่ต้องการไปอีก Sheet

Posted: Sat Jan 20, 2018 1:56 pm
by Aantsugar
อยากได้สูตรแยกรหัสลูกค้าไปอีก Sheet
เช่นลูกค้า ขึ้นต้น T ก็แยกไป Sheet ทั่วไป
และถ้าขึ้นต้น E กับ V ให้แยกไป Sheet VIP
ตามไฟล์แนบคะ :)

Re: แยกข้อมูลที่ต้องการไปอีก Sheet

Posted: Sat Jan 20, 2018 2:10 pm
by snasui
:D ตัวอย่างสูตรตามด้านล่างครับ
  1. ชีต VIP ที่ A2 คีย์
    =IFERROR(INDEX(TEST!A$2:A$29,SMALL(IF(LEFT(TEST!$C$2:$C$29)<>"T",ROW(TEST!$A$2:$A$29)-ROW(TEST!$A$2)+1),ROWS(A$2:A2))),"")
    Ctrl+Shift+Enter > Copy ไปทางขวาและลงด้านล่าง กรุณาอ่าน Note ด้านล่างอย่างละเอียด ไม่เช่นนั้นจะไม่ได้คำตอบครับ
  2. ชีต ทั่วไปที่ A2 คีย์
    =IFERROR(INDEX(TEST!A$2:A$29,SMALL(IF(LEFT(TEST!$C$2:$C$29)="T",ROW(TEST!$A$2:$A$29)-ROW(TEST!$A$2)+1),ROWS(A$2:A2))),"")
    Ctrl+Shift+Enter > Copy ไปทางขวาและลงด้านล่าง

!
Note: Ctrl+Shift+Enter
เป็นการสร้างสูตร Array โดยสามารถเลือกดำเนินการตามข้อ 1 หรือ 2 ด้านล่าง
  1. กรณีคีย์สูตรเอง เมื่อคีย์สูตรแล้ว แทนที่จะกด Enter ให้กดแป้น
    Ctrl และ Shift พร้อมกันค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array
  2. กรณี Copy สูตรไปวางให้กดแป้น F2 เพื่อทำการ Edit Cell นั้นก่อน
    จากนั้นกดแป้น Ctrl และ Shift พร้อมกันค้างไว้แล้วตามด้วย Enter เพื่อสร้างเป็นสูตร Array
  3. หากกดแป้นถูกต้องสูตรนั้นจะมีเครื่องหมายปีกกาครอบ เช่น {=YourFormulas(...)}
    ปีกกานี้ไม่สามารถคีย์เข้าไปเอง จะต้องมาด้วยการกดแป้น Ctrl+Shift+Enter เท่านั้น
    ถ้ายังไม่เห็นปีกกาครอบสูตรแสดงว่ากดแป้นให้รับสูตรไม่ถูกต้อง
  4. การแก้ไขเปลี่ยนแปลงสูตร Array จะต้องกดแป้นให้รับสูตรด้วย Ctrl+Shift+Enter ทุกครั้ง

Re: แยกข้อมูลที่ต้องการไปอีก Sheet

Posted: Sat Jan 20, 2018 2:25 pm
by Aantsugar
ขอบคุณคะ อาจารย์ :thup: :thup: :D :D

Re: แยกข้อมูลที่ต้องการไปอีก Sheet

Posted: Mon Jan 22, 2018 12:00 am
by Peung_Thantima.k
ขอบคุณค่ะ

Re: แยกข้อมูลที่ต้องการไปอีก Sheet

Posted: Mon Jan 22, 2018 12:09 am
by Peung_Thantima.k
อาจารย์แปลสูตรให้ทีคะ จะได้เข้าใจมากขึ้น ขอบคุณค่ะ

Re: แยกข้อมูลที่ต้องการไปอีก Sheet

Posted: Mon Jan 22, 2018 6:25 am
by snasui
:D การแปลสูตรให้แปลจากด้านนอกเข้าด้านในเพื่อความเข้าใจ ส่วนการแกะสูตรให้แกะจากด้านในออกด้านนอก จากคำอธิบายนี้ให้อ่านจากด้านล่างขึ้นข้างบนจะเป็นการแกะสูตรครับ

ตัวอย่างการแปล
:arrow: จากสูตร =IFERROR(INDEX(TEST!A$2:A$29,SMALL(IF(LEFT(TEST!$C$2:$C$29)<>"T",ROW(TEST!$A$2:$A$29)-ROW(TEST!$A$2)+1),ROWS(A$2:A2))),"")

แปลว่า หาก INDEX(TEST!A$2:A$29,SMALL(IF(LEFT(TEST!$C$2:$C$29)<>"T",ROW(TEST!$A$2:$A$29)-ROW(TEST!$A$2)+1),ROWS(A$2:A2))) ให้คำตอบเป็นค่าผิดพลาดให้แสดค่าว่าง แต่หากไม่เป็นค่าผิดพลาดให้แสดงคำตอบตามปกติ

:arrow: จากสูตร INDEX(TEST!A$2:A$29,SMALL(IF(LEFT(TEST!$C$2:$C$29)<>"T",ROW(TEST!$A$2:$A$29)-ROW(TEST!$A$2)+1),ROWS(A$2:A2)))

แปลว่า จากช่วงข้อมูล TEST!A$2:A$29 ให้นำลำดับที่เป็นผลลัพธ์ของ SMALL(IF(LEFT(TEST!$C$2:$C$29)<>"T",ROW(TEST!$A$2:$A$29)-ROW(TEST!$A$2)+1),ROWS(A$2:A2)) มาแสดง

:arrow: จากสูตร SMALL(IF(LEFT(TEST!$C$2:$C$29)<>"T",ROW(TEST!$A$2:$A$29)-ROW(TEST!$A$2)+1),ROWS(A$2:A2))

แปลว่า จากผลลลัพธ์ของ IF(LEFT(TEST!$C$2:$C$29)<>"T",ROW(TEST!$A$2:$A$29)-ROW(TEST!$A$2)+1) ให้นำลำดับที่ที่เป็นผลลัพธ์ของ ROWS(A$2:A2) มาแสดง ฟังก์ชั่น Rows ให้ผลลัพธ์เป็นจำนวนบรรทัด

:arrow: จากสูตร IF(LEFT(TEST!$C$2:$C$29)<>"T",ROW(TEST!$A$2:$A$29)-ROW(TEST!$A$2)+1)

แปลว่า ถ้า LEFT(TEST!$C$2:$C$29)<>"T" เป็นจริงให้แสดงผลลัพธ์ของ ROW(TEST!$A$2:$A$29)-ROW(TEST!$A$2)+1 ซึ่งก็คือให้แสดงค่าลำดับเริ่มจาก 1

:arrow: จากสูตร LEFT(TEST!$C$2:$C$29)

แปลว่าให้ตัดอักขระด้านหน้าของช่วง TEST!$C$2:$C$29 มา 1 อักขระ หากระบุเป็น Left(TEST!$C$2:$C$29,n) แปลว่าให้ตัดมา n อักขระ