snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Chonlakritzz
Member
Posts: 14 Joined: Sun Feb 21, 2016 3:05 am
#1
Post
by Chonlakritzz » Wed Apr 13, 2016 7:31 pm
รบกวนสอบถามครับ
พอดีผมใช้เครื่องมือ Google Form ในการรวบรวมคำตอบสินค้าที่ขาดจากน้องๆ ที่อยู่คนละสาขา
ซึ่งรวบรวมได้สะดวกมาก แต่ พอได้คำตอบมา ผม Pivot ไม่ได้เนื่องจาก ข้อมูลเป็นแบบนี้ มีลูกน้ำคั่น
ตัวอย่าง (ในเอกสารแนบ)
8850002017580 ยาสีฟันซิสเท็มม่าสปริง 160 กรัม, 8850002026254 แปรงซอลส์ดิฟแอนด์แนโรว์แอ็คทิฟ, 8850002008953 ยาสีฟันซอลส์เฟรช 90 กรัม
สิ่งที่อยากได้
8850002017580 ยาสีฟันซิสเท็มม่าสปริง 160 กรัม
8850002026254 แปรงซอลส์ดิฟแอนด์แนโรว์แอ็คทิฟ
8850002008953 ยาสีฟันซอลส์เฟรช 90 กรัม
หรือแบบไหนก็ได้ครับที่ให้ผม Pivot สรุปข้อมูลได้
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30919 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#2
Post
by snasui » Sun Apr 17, 2016 8:32 pm
แจ้งให้น้องๆ กรอกข้อมูลมาเป็น Database แทนการคั่นด้วยลูกน้ำ หรือติดปัญหาใดที่ไม่สามารถทำเป็น Database ได้ครับ
หากติดปัญหาจำเป็นจะต้องแปลงข้อมูลที่คั่นด้วยลูกน้ำมาเป็นข้อมูลแยกบรรทัดเสียก่อนด้วย VBA ซึ่งต้องเขียนมาเองก่อน ติดแล้วค่อยถามกันต่อครับ
Chonlakritzz
Member
Posts: 14 Joined: Sun Feb 21, 2016 3:05 am
#3
Post
by Chonlakritzz » Mon Apr 18, 2016 8:24 pm
ตอบคำถามแรก ตัวฟอร์มจาก Google ครับ ซึ่งคนกรอกจะกรอกง่าย แต่เบื้องหลังข้อมูลจะรวมมาครับ
ขอถามเพิ่มครับอาจารย์ พอดีผมยังไม่เก่งเรื่อง VBA
1.ถ้าผมแยกข้อมูลออกมา Text to Column แล้วจะนำข้อมูลจากคอลัมภ์สินค้าที่ 2 (คอลัมภ์ E) เป็นต้นไป
ให้มาต่อด้านล่างของคอลัมภ์สินค้าที่ 1 (คอลัมภ์ D) โดยให้มี ชื่อสาขาและวันที่มาด้วยได้ไหมครับ
ตามไฟล์แนบคือ ฃ่องที่มีสีต่างๆ ให้มาอยู่ในตำแหน่งตามสีด้านล่างครับ
ปล.สุดท้ายถ้าต้องใช้เรื่อง VBA จริงๆอาจารย์บอกนะครับ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30919 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#4
Post
by snasui » Tue Apr 19, 2016 9:54 pm
ตัวอย่างการใช้สูตรครับ
ที่ชีต Lotus แทรกคอลัมน์หน้าสุด 2 คอลัมน์เพื่อเป็นคอลัมน์ช่วย
เซลล์ B2 คีย์สูตรเพื่อนับค่าที่ไม่เป็นค่าว่างในบรรทัดนั้น ๆ
=COUNTA(E2:K2)
Enter > Copy ลงด้านล่าง
เซลล์ A2 คีย์สูตรเพื่อให้หมายเลขบรรทัดที่เริ่มข้อมูลหากนำค่าในข้อ 1 มาเรียงต่อกัน
=SUM(B$2:B2)-B2+1
Enter > Copy ลงด้านล่าง
เซลล์ B24 รวมยอดค่าในเซลล์ B2:B23 คีย์สูตร
=SUM(B2:B23)
Enter
เพิ่ม Sheet1 เพื่อทำเป็น Database ใหม่
เซลล์ A1:D1 คีย์ค่า Line, Lotus สาขา, วันที่ และ สินค้าที่ OOS ตามลำดับ
เซลล์ A2 คีย์สูตร
=IF(ROWS(B$2:B2)>Lotus!$B$24,"",LOOKUP(ROWS(B$2:B2),Lotus!$A$2:$A$23,Lotus!A$2:A$23))
Enter > Copy ลงด้านล่าง
เซลล์ B2 คีย์สูตร
=IF(ROWS(C$2:C2)>Lotus!$B$24,"",LOOKUP(ROWS(C$2:C2),Lotus!$A$2:$A$23,Lotus!D$2:D$23))
Enter > Copy ไปยัง C2 แล้ว Copy เซลล์ B2:C2 ลงด้านล่าง
เซลล์ D2 คีย์สูตร
=IF(N(A2),INDEX(Lotus!$E$2:$K$23,MATCH(A2,Lotus!$A$2:$A$23,0),COUNTIF(A$2:A2,A2)),"")
Enter > Copy ลงด้านล่าง
นำ Database ตามข้อ 2 ไปทำ PivotTable ตามต้องการ
Chonlakritzz
Member
Posts: 14 Joined: Sun Feb 21, 2016 3:05 am
#5
Post
by Chonlakritzz » Wed Apr 20, 2016 5:42 am
ขอบคุณครับอาจารย์ประหยัดเวลาไปเยอะเลย
แต่ผมต้องแก้ ข้อ 4 เป็นเซลล์ B2 C$2:C$23 ก่อน แล้วค่อย Copy>วางเปลี่ยนเป็น D$2:D$23 ถูกไหมครับ
เซลล์ B2 คีย์สูตร
=IF(ROWS(C$2:C2)>Lotus!$B$24,"",LOOKUP(ROWS(C$2:C2),Lotus!$A$2:$A$23,Lotus!D$2:D$23))
Enter > Copy ไปยัง C2 แล้ว Copy เซลล์ B2:C2 ลงด้านล่าง
snasui
Site Admin
Posts: 30919 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#6
Post
by snasui » Wed Apr 20, 2016 7:23 am
ตามที่ผมแจ้งไปนั้นสูตรจะเปลี่ยนเอง ไม่ต้องแก้ไขอะไรอีกครับ
หากยังไม่ได้คำตอบให้แนบไฟล์ที่ปรับปรุงเองแล้วมาดูกันอีกทีครับ