snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ขอข้อมูลเพิ่มเติมหน่อยครับ เพื่ออาจารย์จะได้ช่วยเหลือได้ง่ายขึ้น
1. ในไฟล์ File usage คอลัมน์ G กรองเฉพาะ type R ไว้ แสดงว่าต้องการดึงข้อมูลเฉพาะ Material Type R ใช่ไหมครับ?
2. ใน Template มีตารางลักษณะดังรูปด้านล่าง และเรียงต่อกันลงไปเรื่อยๆ เป็นชุดๆ อยากถามว่าชุดหนึ่งๆ จะมี Material แค่ตัวเดียวใช่ไหมครับ?
ข้อมูลเพิ่มเติมนะคะ
1. ใช่ค่ะกรองเฉพราะ type R
2.ชุดหนึ่งจะมี Material แค่ตัวเดียวค่ะ ตามที่คุณ DhitiBank เข้าใจเลยค่ะ
3. Material ที่เป็น 0 ให้แสดงด้วยค่ะ
4.ต้องการให้เรียงชือตาม material และ plant ตามลำดับค่ะ
แนบรูปเพิ่มเติมมาให้ดูเป็นตัวอย่างค่ะ
ขอบคุณค่ะ
p_d
You do not have the required permissions to view the files attached to this post.
(1) IF จากเงื่อนไขสำคัญคือ เอาเฉพาะ type R จึงเอาคอลัมน์ G ในข้อมูลดิบมาตรวจก่อนว่าลำดับไหนเท่ากับ R บ้าง หากเท่าก็ให้แสดงด้วยลำดับจาก
ROW('[File usage.xlsx]Sheet1'!$G$2:$G$200)-1
ซึ่งหากคลุมช่วงนี้แล้วกด F9 ดู มันคือเลขลำดับครับ
{2;3;4;...;200}-1 = {1;2;...;199}
สมมติว่ามีแค่ G2 ตำแหน่งเดียวที่เป็น R สูตร IF ก็จะคำนวณได้ผลว่า
{1;False;False;...;False}
เพื่อเอาไปใช้ต่อในถัดไป
(3) Match ใช้ตรวจวันที่ในหัว template กับวันที่ในข้อมูลดิบครับ โดยจากสูตร LEFT('[File usage.xlsx]Sheet1'!$J$1:$AE$1,LEN('[File usage.xlsx]Sheet1'!$J$1:$AE$1)-8)
จะตัดเอาเฉพาะตัวเลข "วันที่" ในหัวตารางข้อมูลดิบ จากนั้น Match ก็จะมาเทียบกับเลข "วันที่" ในหัวตาราง template ว่าตรงกับคอลัมน์ที่เท่าไร สูตร Match ใช้เพื่อหาว่าต้องเอาข้อมูลคอลัมน์ไหนในข้อมูลดิบมาแสดง
(4) Index(Array,x,[y]) หาก array มีหลายแถวหลายคอลัมน์ ต้องระบุทั้ง x และ y ให้ครบ สูตรนี้จะเอาข้อมูลใน array มาแสดงโดยเป็นข้อมูลแถวที่ x คอลัมน์ที่ y
ค่า x ได้จากข้อ (2)
ค่า y ได้จากข้อ (3) ครับ