EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)ในช่องอายุตอนดึงข้อมูลมาระบบเป็น TEXT ครับ แต่ถ้าคอลัมน์ J ปรับค่าให้เป็นตัวเลขครับ ได้ผลลัพธ์ตามต้องการpuriwutpokin wrote: Tue Apr 23, 2019 7:39 pm ที่e3=IFERROR(INDEX(H$3:H$201,MATCH(1,INDEX(($K$3:$K$201=$F3)*($J$3:$J$201<=15),0),0)),"")
แล้วคอลัมน์ J ปรับค่าให้เป็นตัวเลขครับ
ในระบบเมื่อผมดึงข้อมูลมาใช้ ในคอลัมน์ J จะเป็น TEXT สูตรนี้แก้ปัญหาโดยไม่ต้องเปลี่ยนเป็นตัวเลขก่อน ได้ตามต้องการครับ ขอบคุณครับivan901 wrote: Tue Apr 23, 2019 7:45 pm E3 =IF(VALUE(INDEX($J$3:$K$201, MATCH($F3, $K$3:$K$201, 0), 1))>15, "", INDEX($H$3:$H$201, MATCH($F3, $K$3:$K$201, 0))) Copy สูตรลงมา
Code: Select all
=IFERROR(IF(COUNTIF($K$3:$K$201,$F3),INDEX(H$3:H$201,SMALL(IF($K$3:$K$201=$F3,ROW($K$3:$K$201)-ROW($K$3)+1),COUNTIF($F$3:$F3,$F3))),""),"")
ลองแนบไฟล์ล่าสุดที่มีการปรับ แล้วติดปัญหามาดูครับTotem wrote: Wed Apr 24, 2019 9:43 am นำไปปรับใช้ทั้งสองสูตรแล้วยังไม่ได้ผลลัพธ์ที่ถูกต้องครับ
ผมขออธิบายเพิ่มเติมว่าในคอลัมน์ F ไม่ได้เรียงรหัสตามคอลัมน์ K และคอลัมน์ K มีข้อมูลรหัสซ้ำกันได้หรือเป็นช่องว่างๆไม่มีข้อมูลรหัส เพราะเมื่อมีข้อมูลซ้ำกันหรือช่องว่างไม่มีข้อมูลสูตรทั้งสองจะไม่ได้คำตอบที่ต้องการครับ
จากสูตรเดิมปรับสูตรเพิ่มเรื่อง อายุเข้าไปได้หรือไม่ครับCode: Select all
=IFERROR(IF(COUNTIF($K$3:$K$201,$F3),INDEX(H$3:H$201,SMALL(IF($K$3:$K$201=$F3,ROW($K$3:$K$201)-ROW($K$3)+1),COUNTIF($F$3:$F3,$F3))),""),"")
ขอบคุณครับ
ตามไฟล์ที่แนบครับpuriwutpokin wrote: Wed Apr 24, 2019 11:22 amลองแนบไฟล์ล่าสุดที่มีการปรับ แล้วติดปัญหามาดูครับTotem wrote: Wed Apr 24, 2019 9:43 am นำไปปรับใช้ทั้งสองสูตรแล้วยังไม่ได้ผลลัพธ์ที่ถูกต้องครับ
ผมขออธิบายเพิ่มเติมว่าในคอลัมน์ F ไม่ได้เรียงรหัสตามคอลัมน์ K และคอลัมน์ K มีข้อมูลรหัสซ้ำกันได้หรือเป็นช่องว่างๆไม่มีข้อมูลรหัส เพราะเมื่อมีข้อมูลซ้ำกันหรือช่องว่างไม่มีข้อมูลสูตรทั้งสองจะไม่ได้คำตอบที่ต้องการครับ
จากสูตรเดิมปรับสูตรเพิ่มเรื่อง อายุเข้าไปได้หรือไม่ครับCode: Select all
=IFERROR(IF(COUNTIF($K$3:$K$201,$F3),INDEX(H$3:H$201,SMALL(IF($K$3:$K$201=$F3,ROW($K$3:$K$201)-ROW($K$3)+1),COUNTIF($F$3:$F3,$F3))),""),"")
ขอบคุณครับ
แก้ไขสูตรใหม่ครับTotem wrote: Wed Apr 24, 2019 9:43 am นำไปปรับใช้ทั้งสองสูตรแล้วยังไม่ได้ผลลัพธ์ที่ถูกต้องครับ
ผมขออธิบายเพิ่มเติมว่าในคอลัมน์ F ไม่ได้เรียงรหัสตามคอลัมน์ K และคอลัมน์ K มีข้อมูลรหัสซ้ำกันได้หรือเป็นช่องว่างๆไม่มีข้อมูลรหัส เพราะเมื่อมีข้อมูลซ้ำกันหรือช่องว่างไม่มีข้อมูลสูตรทั้งสองจะไม่ได้คำตอบที่ต้องการครับ
จากสูตรเดิมปรับสูตรเพิ่มเรื่อง อายุเข้าไปได้หรือไม่ครับCode: Select all
=IFERROR(IF(COUNTIF($K$3:$K$201,$F3),INDEX(H$3:H$201,SMALL(IF($K$3:$K$201=$F3,ROW($K$3:$K$201)-ROW($K$3)+1),COUNTIF($F$3:$F3,$F3))),""),"")
ขอบคุณครับ
ยังไม่ได้ตามต้องการ เพราะคอลัมน์ F อาจมีรหัสซ้ำขึ้นมาได้และข้อมูลในคอลัมน์ K ได้มาก็ซ้ำได้ด้วยครับivan901 wrote: Thu Apr 25, 2019 12:39 amแก้ไขสูตรใหม่ครับTotem wrote: Wed Apr 24, 2019 9:43 am นำไปปรับใช้ทั้งสองสูตรแล้วยังไม่ได้ผลลัพธ์ที่ถูกต้องครับ
ผมขออธิบายเพิ่มเติมว่าในคอลัมน์ F ไม่ได้เรียงรหัสตามคอลัมน์ K และคอลัมน์ K มีข้อมูลรหัสซ้ำกันได้หรือเป็นช่องว่างๆไม่มีข้อมูลรหัส เพราะเมื่อมีข้อมูลซ้ำกันหรือช่องว่างไม่มีข้อมูลสูตรทั้งสองจะไม่ได้คำตอบที่ต้องการครับ
จากสูตรเดิมปรับสูตรเพิ่มเรื่อง อายุเข้าไปได้หรือไม่ครับCode: Select all
=IFERROR(IF(COUNTIF($K$3:$K$201,$F3),INDEX(H$3:H$201,SMALL(IF($K$3:$K$201=$F3,ROW($K$3:$K$201)-ROW($K$3)+1),COUNTIF($F$3:$F3,$F3))),""),"")
ขอบคุณครับ
E3=IFERROR(INDEX($H$3:$H$201,SMALL(IF((K$3:K$201=$F3)*(VALUE($J$3:$J$201)<=15),(K$3:K$201=$F3)*(VALUE($J$3:$J$201)<=15)+ROW($K$3:$K$201),""),COUNTIF($F$3:$F3,$F3))-ROW($K$3:$K$201)),"") Ctrl + Shift + Enter
นำไปใช้แล้ว เมื่อคลุมพื้นที่ในคอลัมน์ H ถึง K และ J ให้รวมไปถึงพื้นที่ว่างๆ คือเผื่อดึงข้อมูลมาแล้วไม่พอ เลยกำหนดให้เยอะไว้ก่อน ทำให้สูตรที่ได้จากอาจารย์ แสดงผลลัพธ์เป็นว่างครับ ขอบคุณครับsnasui wrote: Thu Apr 25, 2019 7:04 am ตัวอย่างสูตรให้นำค่าที่น้อยกว่าหรือเท่ากับ 15 มาแสดงครับ
เซลล์ E3 คีย์
=IFERROR(INDEX(INDEX($H$3:$K$9,0,MATCH(E$2,$H$2:$K$2,0)),SMALL(IF(--$J$3:$J$9<16,ROW($H$3:$H$9)-ROW($E$3)+1),ROWS(E$3:E3))),"")
Ctrl+Shift+Enter > Copy ไป F3 แล้ว Copy ลงด้านล่าง
แก้ไขของเดิมดูครับปรับเป็นTotem wrote: Thu Apr 25, 2019 1:12 pmนำไปใช้แล้ว เมื่อคลุมพื้นที่ในคอลัมน์ H ถึง K และ J ให้รวมไปถึงพื้นที่ว่างๆ คือเผื่อดึงข้อมูลมาแล้วไม่พอ เลยกำหนดให้เยอะไว้ก่อน ทำให้สูตรที่ได้จากอาจารย์ แสดงผลลัพธ์เป็นว่างครับ ขอบคุณครับsnasui wrote: Thu Apr 25, 2019 7:04 am ตัวอย่างสูตรให้นำค่าที่น้อยกว่าหรือเท่ากับ 15 มาแสดงครับ
เซลล์ E3 คีย์
=IFERROR(INDEX(INDEX($H$3:$K$9,0,MATCH(E$2,$H$2:$K$2,0)),SMALL(IF(--$J$3:$J$9<16,ROW($H$3:$H$9)-ROW($E$3)+1),ROWS(E$3:E3))),"")
Ctrl+Shift+Enter > Copy ไป F3 แล้ว Copy ลงด้านล่าง
ยังไม่ได้ครับ ขอบคุณครับlogic wrote: Thu Apr 25, 2019 1:20 pm แบบนี้ได้ไหมครับ
E3 =IFERROR(INDEX(INDEX($H$3:$K$9,0,MATCH(E$2,$H$2:$K$2,0)),SMALL(IF($J$3:$J$9<>"",IF($J$3:$J$9+0<16,ROW($H$3:$H$9)-ROW($E$3)+1)),ROWS(E$3:E3))),"") Ctrl+Shift+Enter
ใช่เลย ยอดเยี่ยมครับ ได้ตามต้องการครับ ขอบคุณ คุณ puriwutpokin และอาจารย์รวมถึงเพื่อนสมาชิกที่ช่วยตอบและแก้ไขปัญหาให้ครับpuriwutpokin wrote: Thu Apr 25, 2019 1:32 pmแก้ไขของเดิมดูครับปรับเป็นTotem wrote: Thu Apr 25, 2019 1:12 pmนำไปใช้แล้ว เมื่อคลุมพื้นที่ในคอลัมน์ H ถึง K และ J ให้รวมไปถึงพื้นที่ว่างๆ คือเผื่อดึงข้อมูลมาแล้วไม่พอ เลยกำหนดให้เยอะไว้ก่อน ทำให้สูตรที่ได้จากอาจารย์ แสดงผลลัพธ์เป็นว่างครับ ขอบคุณครับsnasui wrote: Thu Apr 25, 2019 7:04 am ตัวอย่างสูตรให้นำค่าที่น้อยกว่าหรือเท่ากับ 15 มาแสดงครับ
เซลล์ E3 คีย์
=IFERROR(INDEX(INDEX($H$3:$K$9,0,MATCH(E$2,$H$2:$K$2,0)),SMALL(IF(--$J$3:$J$9<16,ROW($H$3:$H$9)-ROW($E$3)+1),ROWS(E$3:E3))),"")
Ctrl+Shift+Enter > Copy ไป F3 แล้ว Copy ลงด้านล่าง
E3=IFERROR(INDEX(H$3:H$201,AGGREGATE(15,6,(ROW(K$3:K$201)-ROW(K$2))/((K$3:K$201=$F3)*(VALUE(J$3:J$201)<=15)),COUNTIF(F$3:F3,F3))),"") คัดลอกลงครับ
ได้เฉพาะในส่วนที่ตัดออกไป 0-1-1 แต่ในช่องคอลัมน์ E ด้วยกัน ข้อความตัวเลขอื่นกลับเป็นค่าว่างครับ ยังไม่ได้ตามที่ต้องการครับpuriwutpokin wrote: Thu Apr 25, 2019 3:45 pm ปรับเป็นที่ E3=IFERROR(INDEX(H$3:H$201,AGGREGATE(15,6,(ROW(K$3:K$201)-ROW(K$2))/((K$3:K$201=$F3)*((LEFT(J$3:J$201,FIND("-",J$3:J$201)-1)+0)<=15)),COUNTIF(F$3:F3,F3))),"") คัดลอกลงครับ