Page 1 of 1

การนำข้อมูลจาก sheet อื่นมาเรียงใหม่

Posted: Mon Apr 18, 2016 10:11 pm
by bboy_access
สวัสดีครับอาจารย์

วันนี้ผมลองดึงข้อมูลจากเว็ปแล้วอยากนำมาเรียงใหม่ให้ได้ตามรูปแบบตามช่องสีเหลือง (ถ้าดึงข้อมูลวันที่ 11 จะมีข้อมูลทั้งหมด 12 แถว ถ้าดึงข้อมูลวันที่ 12 จะมีข้อมูลจากเว็ปทั้งหมด 14 แถว แต่ถ้าถึงข้อมูลวันที่ 13 พบว่ามีข้อมูลจากเว็ปทั้งหมด 17 แถว ปล.ข้อมูลที่ผมดึงมาวันหลังจะทับข้อมูลวันก่อนหน้านะครับ แต่ในที่นี้ผมแยก sheet ให้ดูเข้าใจง่ายครับ ปกติจะมีแค่ 2 sheet คือ sheetเรียงข้อมูล และ sheet ที่ดึงจากเว็ปนะครับ)

ดังนั้นถ้าผมต้องการเฉพาะข้อมูลช่องสีเหลืองมาเรียงใหม่ ผมจะใช้สูตรอะไรที่เหมาะสมครับ

ขอบคุณครับ

Re: การนำข้อมูลจาก sheet อื่นมาเรียงใหม่

Posted: Tue Apr 19, 2016 7:16 am
by XDoll
:D ลองดูครับ
1.สูตรนี้มีข้อจำกัดนิดนึงครับคือ Column A Format ต้องไม่เป็น Text(เนื่องจากถ้าดึงจาก web นั้น ตัวเลขอาจจะเป็น text ได้)
2.ให้ชีทหลักในการ Import เข้ามาเป็นชีท "ดึงจากเว็ปวันที่ 13 " นะครับ (เข้าใจว่าหากดึงมาทับทุกวัน ข้อมูลจะเพิ่มขึ้นเรื่อยๆ และเข้าใจว่าต้องการตัดข้อความออก ซึ่งทำให้แถวเริ่มต้น ในแต่ละวันแถวจะไม่ตรงกัน)

ผมแก้ไขโดยให้เริ่มนับจากแถวแรกในคอลัมน์ A ที่เป็นวันที่

คีย์สูตรที่ชีท "เรียงข้อมูลใหม่" A3 =IFERROR(INDEX('ดึงจากเว็ปวันที่ 13 '!$A$1:$D$100,SMALL(IF(ISNUMBER('ดึงจากเว็ปวันที่ 13 '!$A$1:$A$100),ROW('ดึงจากเว็ปวันที่ 13 '!$A$1:$A$100)),ROWS(A$3:A3)),COLUMNS($A3:A3)),"") กด Ctrl+Shift ค้างไว้แล้ว Enter คัดลอกไปถึง D3 และลงล่างครับ

*หากข้อมูลมากกว่า 100 แถวให้แก้ไขช่วงที่เป็น สีแดง ได้ครับ

Re: การนำข้อมูลจาก sheet อื่นมาเรียงใหม่

Posted: Tue Apr 19, 2016 9:45 am
by bboy_access
ขอบคุณครับ

แต่ถ้าข้อมูลที่ได้มาเป็น Text จะมีวิธีใดบ้างมาแก้ใขครับ

Re: การนำข้อมูลจาก sheet อื่นมาเรียงใหม่

Posted: Tue Apr 19, 2016 11:08 am
by XDoll
bboy_access wrote:ขอบคุณครับ

แต่ถ้าข้อมูลที่ได้มาเป็น Text จะมีวิธีใดบ้างมาแก้ใขครับ
หาก Import มาแล้วเป็น txt มี 2 วิธีครับ
1 แก้ที่สูตร
ที่ A3 =TEXT(IFERROR(INDEX('ดึงจากเว็ปวันที่ 13 '!$A$1:$D$100,SMALL(IF(IFERROR(('ดึงจากเว็ปวันที่ 13 '!$A$1:$A$100)+0,0)>0,ROW('ดึงจากเว็ปวันที่ 13 '!$A$1:$A$100)),ROWS(A$3:A3)),COLUMNS($A3:A3)),""),"dd/mm/yy") กด Ctrl+Shift ค้างไว้แล้ว Enter และลงล่างครับ

ที่ B3 =IFERROR(INDEX('ดึงจากเว็ปวันที่ 13 '!$A$1:$D$100,SMALL(IF(IFERROR(('ดึงจากเว็ปวันที่ 13 '!$A$1:$A$100)+0,0)>0,ROW('ดึงจากเว็ปวันที่ 13 '!$A$1:$A$100)),ROWS(B$3:B3)),COLUMNS($A3:B3))+0,"") กด Ctrl+Shift ค้างไว้แล้ว Enter คัดลอกไปถึง D3 และลงล่างครับ

หรือ
2.แก้ที่ต้นทางโดย(ตามภาพครับ)

Re: การนำข้อมูลจาก sheet อื่นมาเรียงใหม่

Posted: Tue Apr 19, 2016 12:52 pm
by bboy_access
ขอบคุณมากๆเลยครับ

แต่ผมเจอปัญหาคือ ผมลองเข้าไปดูที่ Format cell บางช่องดึงมาเป็น "Date" แต่บางช่องดึงมาเป็น "General" สำหรับวันที่ที่ดึงมาเป็น General จะไม่สามารถดึงมาจัดเรียงเลยครับ

รบกวนช่วยดูในไฟล์แนบนะครับ สีเหลืองจะเป็น General ครับ แต่ตัวอื่นจะเป็น Date ครับ ปล.ผมดึงข้อมูลมาครั้งเดียวกันแต่ทำไมไม่อยู่ใน format เดียวกันครับ

Re: การนำข้อมูลจาก sheet อื่นมาเรียงใหม่

Posted: Tue Apr 19, 2016 1:57 pm
by XDoll
:D สาเหตุคงจะเกิดจาก 29/2/2559
เรามองเห็นเป็น พ.ศ. ก็จริงแต่ Excel มองเป็น ค.ศ (นั่นคือ ค.ศ.2559) ซึ่ง วันที่นั้นไม่มีอยู่จริง ทำให้ Excel ไม่สามารถประมวลผลได้ครับ
วิธีแก้ผมไม่แน่ใจ ว่าหากไปเปลี่ยนใน system date ของ windows เป็น พศ. จะหายไหม

ส่วนแนวทางอื่นก็คงต้องแก้สูตรและรอแนวทางจากอาจารย์เพื่อนสามาชิกครับ เดี๋ยวจะกลับมาดูสูตรให้อีกทีครับ

Re: การนำข้อมูลจาก sheet อื่นมาเรียงใหม่

Posted: Tue Apr 19, 2016 2:44 pm
by bboy_access
ลองเปลี่ยนแล้วครับยังไม่หายเลยครับ

Re: การนำข้อมูลจาก sheet อื่นมาเรียงใหม่

Posted: Tue Apr 19, 2016 3:53 pm
by XDoll
:D ลองดูตามไฟล์แนบครับ ผมแก้ 29/02/2559 (ดูแล้วจะมีปัญหาเฉพาะวันนี้เท่านั้น) ให้แล้วครับน่าจะใช้ได้นะครับ

วิธีการคือ เปลี่ยน "29/02/2559" เป็นตัวเลขด้วยสูตร SUBSTITUTE(FROMWEB!$A$1:$A$100,"29/02/2559",240756) ครับ ซึ่งสูตรนี้จะใช้ได้ถึงปี พศ. 2562 เท่านั้นครับ (คงไม่ได้ใช้ยาวขนาดนั้น) แต่หากจะใช้ถึงปี 2563 ก็สามารถเปลี่ยนสูตรตรง สีแดง(ตรงพศ.) ได้ครับ

ตามภาพผม ขออนุญาตแก้ไขชื่อชีท เนื่องจากง่ายต่อการอ่านสูตร(ด้วยตา)

Re: การนำข้อมูลจาก sheet อื่นมาเรียงใหม่

Posted: Tue Apr 19, 2016 4:04 pm
by bboy_access
ได้ความรู้อีกเยอะเลย


ขอบคุณมากๆครับ