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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
natsuda
Member
Posts: 19 Joined: Sun Feb 14, 2016 8:15 pm
#1
Post
by natsuda » Mon Apr 18, 2016 4:05 pm
คือพอดีต้องการให้มีการเพิ่มข้อมูลใหม่เอามาถ้าเจอว่ามีข้อมูลตัวนั้นอยู่แล้วให้รวมค่ามาอยู่บรรทัดเดียวกัน แล้วตัวที่เพิ่มเข้ามาไม่แสดงให้เห็นคะ ช่วยหน่อยนะคะ
You do not have the required permissions to view the files attached to this post.
XDoll
Bronze
Posts: 261 Joined: Sun Mar 03, 2013 9:23 pm
#2
Post
by XDoll » Mon Apr 18, 2016 5:31 pm
ยังไม่เข้าใจคำถามครับ
1.ไม่ทราบคำตอบอยู่ Column ไหนครับ
2.
"ตัวที่เพิ่มเข้ามาไม่แสดงให้เห็น" นั้น ไม่ทราบว่าไม่ให้แสดงยังไงครับ มีเงื่อนไขใดพิจารณา ให้คีย์ตัวอย่างคำตอบที่ถูกต้อง เงื่อนไขต่างๆมาให้ครบ แล้วแนบไฟล์มาใหม่ครับ
DhitiBank
Gold
Posts: 1676 Joined: Mon Oct 15, 2012 12:07 am
#3
Post
by DhitiBank » Mon Apr 18, 2016 5:33 pm
2016-04-18 17_29_00-Microsoft Excel - สมุดงาน2.xlsx [Read-Only].png
งงด้วยคนครับ รบกวนอธิบายให้ละเอียดขึ้นอีกหน่อยได้ไหมครับว่า จากตัวอย่างที่ยกมา ซ้ำอย่างไร ต้องการให้ผลที่ได้เป็นยังไง อ้างอิงเป็นเซลล์เลยครับเช่น ที่เซลล์ C12 ซ้ำกับ C10 อยากให้... (ยกตัวอย่างเฉยๆ ครับ) จะได้สังเกตได้ง่าย
ในตัวอย่างไม่เห็นมีซ้ำเลยครับ ในคอลัมน์ชื่อก็เรียง 1-10 ลองยกตัวอย่างกรณีซ้ำได้ไหมครับ
You do not have the required permissions to view the files attached to this post.
natsuda
Member
Posts: 19 Joined: Sun Feb 14, 2016 8:15 pm
#4
Post
by natsuda » Mon Apr 18, 2016 5:47 pm
XDoll wrote: ยังไม่เข้าใจคำถามครับ
1.ไม่ทราบคำตอบอยู่ Column ไหนครับ
2.
"ตัวที่เพิ่มเข้ามาไม่แสดงให้เห็น" นั้น ไม่ทราบว่าไม่ให้แสดงยังไงครับ มีเงื่อนไขใดพิจารณา ให้คีย์ตัวอย่างคำตอบที่ถูกต้อง เงื่อนไขต่างๆมาให้ครบ แล้วแนบไฟล์มาใหม่ครับ
ขอบคุณที่เข้ามาช่วยนะคะ
แนบคำอธิบายเข้าไปแล้วนะคะ
You do not have the required permissions to view the files attached to this post.
natsuda
Member
Posts: 19 Joined: Sun Feb 14, 2016 8:15 pm
#5
Post
by natsuda » Mon Apr 18, 2016 5:49 pm
DhitiBank wrote: 2016-04-18 17_29_00-Microsoft Excel - สมุดงาน2.xlsx [Read-Only].png
งงด้วยคนครับ รบกวนอธิบายให้ละเอียดขึ้นอีกหน่อยได้ไหมครับว่า จากตัวอย่างที่ยกมา ซ้ำอย่างไร ต้องการให้ผลที่ได้เป็นยังไง อ้างอิงเป็นเซลล์เลยครับเช่น ที่เซลล์ C12 ซ้ำกับ C10 อยากให้... (ยกตัวอย่างเฉยๆ ครับ) จะได้สังเกตได้ง่าย
ในตัวอย่างไม่เห็นมีซ้ำเลยครับ ในคอลัมน์ชื่อก็เรียง 1-10 ลองยกตัวอย่างกรณีซ้ำได้ไหมครับ
ขอบคุณที่ช่วยนะคะ
อธิบายไว้ในไฟล์ที่แนบไปใหม่ให้แล้วนะคะ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30761 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#6
Post
by snasui » Mon Apr 18, 2016 7:00 pm
การทำเช่นนั้นต้องใช้คอลัมน์ช่วยหากจะทำด้วยสูตร ยกเว้นใช้ VBA จึงจะวางข้อมูลในคอลัมน์เดิมได้ครับ
ตัวอย่างการใช้คอลัมน์ช่วย
เซลล์ E4 คีย์สูตรเพื่อเรียงชื่อขึ้นมาใหม่โดยไม่เอาค่าซ้ำ
=IFERROR(INDEX($B$4:$B$13,SMALL(IF(FREQUENCY (MATCH($B$4:$B$13,$B$4:$B$13),ROW($B$4:$B$13)-ROW($B$4)+1),ROW($B$4:$B$13)-ROW($B$4)+1),ROWS(E$4:E4))),"")
Ctrl+Shift+Enter > Copy ลงด้านล่าง
เซลล์ F4 คีย์สูตรเพื่อหาค่าเฉลี่ยของแต่ละชื่อ
=IF(LEN(E4),AVERAGE(IF($B$4:$B$13=E4,$C$4:$C$13)),"")
Ctrl+Shift+Enter > Copy ลงด้านล่าง
! Note: Ctrl+Shift+Enter หมายถึง
กรณีคีย์สูตรเอง เมื่อคีย์สูตรแล้ว แทนที่จะกด Enter ให้กดแป้น Ctrl+Shift ค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array
กรณี Copy สูตรไปวางให้กดแป้น F2 เพื่อทำการ Edit Cell นั้นก่อน จากนั้นกดแป้น Ctrl+Shift ค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array
หากกดแป้นถูกต้องสูตรนั้นจะมีเครื่องหมายปีกกาครอบ เช่น { =YourFormulas(...)} ปีกกานี้คีย์เข้าไปเองไม่ได้ ถ้ายังไม่เห็นปีกกาครอบสูตรแสดงว่ากดแป้นให้รับสูตรไม่ถูกต้อง
การแก้ไขเปลี่ยนแปลงสูตร Array จะต้องกดแป้นให้รับสูตรด้วย Ctrl+Shift+Enter ทุกครั้ง
natsuda
Member
Posts: 19 Joined: Sun Feb 14, 2016 8:15 pm
#7
Post
by natsuda » Mon Apr 18, 2016 7:18 pm
snasui wrote: การทำเช่นนั้นต้องใช้คอลัมน์ช่วยหากจะทำด้วยสูตร ยกเว้นใช้ VBA จึงจะวางข้อมูลในคอลัมน์เดิมได้ครับ
ตัวอย่างการใช้คอลัมน์ช่วย
เซลล์ E4 คีย์สูตรเพื่อเรียงชื่อขึ้นมาใหม่โดยไม่เอาค่าซ้ำ
=IFERROR(INDEX($B$4:$B$13,SMALL(IF(FREQUENCY (MATCH($B$4:$B$13,$B$4:$B$13),ROW($B$4:$B$13)-ROW($B$4)+1),ROW($B$4:$B$13)-ROW($B$4)+1),ROWS(E$4:E4))),"")
Ctrl+Shift+Enter > Copy ลงด้านล่าง
เซลล์ F4 คีย์สูตรเพื่อหาค่าเฉลี่ยของแต่ละชื่อ
=IF(LEN(E4),AVERAGE(IF($B$4:$B$13=E4,$C$4:$C$13)),"")
Ctrl+Shift+Enter > Copy ลงด้านล่าง
! Note: Ctrl+Shift+Enter หมายถึง
กรณีคีย์สูตรเอง เมื่อคีย์สูตรแล้ว แทนที่จะกด Enter ให้กดแป้น Ctrl+Shift ค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array
กรณี Copy สูตรไปวางให้กดแป้น F2 เพื่อทำการ Edit Cell นั้นก่อน จากนั้นกดแป้น Ctrl+Shift ค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array
หากกดแป้นถูกต้องสูตรนั้นจะมีเครื่องหมายปีกกาครอบ เช่น { =YourFormulas(...)} ปีกกานี้คีย์เข้าไปเองไม่ได้ ถ้ายังไม่เห็นปีกกาครอบสูตรแสดงว่ากดแป้นให้รับสูตรไม่ถูกต้อง
การแก้ไขเปลี่ยนแปลงสูตร Array จะต้องกดแป้นให้รับสูตรด้วย Ctrl+Shift+Enter ทุกครั้ง
ถ้าใช้ VBA นี้จะเป็นยังไงอะคะ น่าจะยากกว่านี้ไม่คะ เพราะตัวงานไม่สามารถเพิ่มคอลัมน์ได้แล้วคะ
snasui
Site Admin
Posts: 30761 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#8
Post
by snasui » Mon Apr 18, 2016 7:21 pm
คำว่า "อะคะ" ให้ใช้คำว่า "คะ" แทน อ่านกฎข้อ 1 ด้านบนประกอบครับ
การใช้ VBA ยากมาก เพราะเป็นการเขียนโปรแกรม ต้องใช้เวลาและความอดทนในการศึกษาและเรียนรู้ครับ
natsuda
Member
Posts: 19 Joined: Sun Feb 14, 2016 8:15 pm
#9
Post
by natsuda » Mon Apr 18, 2016 7:35 pm
snasui wrote: คำว่า "อะคะ" ให้ใช้คำว่า "คะ" แทน อ่านกฎข้อ 1 ด้านบนประกอบครับ
การใช้ VBA ยากมาก เพราะเป็นการเขียนโปรแกรม ต้องใช้เวลาและความอดทนในการศึกษาและเรียนรู้ครับ
ขอโทษทีคะ พยายามแล้วจะไม่พิมพ์แต่ติดคะ คือพอมีความรู้เรื่อง VBA อยู่บ้างคะ แต่ยังหาไอเดียไม่ออกว่าจะเขียนออกมายังไงคะ
snasui
Site Admin
Posts: 30761 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#10
Post
by snasui » Mon Apr 18, 2016 8:06 pm
ผมช่วยเรื่องไอเดียได้ แต่ไม่สามารถเขียนให้ได้ การใช้ VBA ต้องเขียนมาเอง ติดแล้วค่อยถามกัน
ไอเดียคือต้องหาตัวไม่ซ้ำจากข้อมูลเดิม โดยใช้ตัวแปรสำหรับเก็บค่าเดิมทั้งชื่อและค่าเฉลี่ยเอาไว้ จากนั้นนำตัวแปรนั้นมาหาค่าที่ไม่ซ้ำแล้ววางที่เดิม เสร็จแล้วค่อยหาค่าเฉลี่ย เช่นนี้ครับ
natsuda
Member
Posts: 19 Joined: Sun Feb 14, 2016 8:15 pm
#11
Post
by natsuda » Tue Apr 19, 2016 10:47 am
พอลองเปลี่ยนจากตัวเลขมาเป็นตัวหนังสือ ผลที่ออกมาได้ไม่ตรงกันคะ คือมีชื่อซ้ำก็ขึ้น2ช่อง แล้วก็ช์๋อที่มีอันเดียวก็ไม่ขึ้นคะ ช่วยหน่อยนะคะ ขอบคุณคะ
You do not have the required permissions to view the files attached to this post.
XDoll
Bronze
Posts: 261 Joined: Sun Mar 03, 2013 9:23 pm
#12
Post
by XDoll » Tue Apr 19, 2016 12:00 pm
natsuda wrote: พอลองเปลี่ยนจากตัวเลขมาเป็นตัวหนังสือ ผลที่ออกมาได้ไม่ตรงกันคะ คือมีชื่อซ้ำก็ขึ้น2ช่อง แล้วก็ช์๋อที่มีอันเดียวก็ไม่ขึ้นคะ ช่วยหน่อยนะคะ ขอบคุณคะ
ที่ C19 แก้เป็น
=IFERROR(INDEX($B$19:$B$27,SMALL(IF(
FREQUENCY (MATCH($B$19:$B$27,$B$19:$B$27,0),ROW($B$19:$B$27)-ROW($B$19)+1),ROW($B$19:$B$27)-ROW($B$19)+1),ROWS(C$19:C19))),"") Ctrl+Shift+Enter > คัดลอกลงล่างครับ
natsuda
Member
Posts: 19 Joined: Sun Feb 14, 2016 8:15 pm
#13
Post
by natsuda » Tue Apr 19, 2016 12:11 pm
ขอบคุณทุกคนนะคะ ได้แล้วคะ
natsuda
Member
Posts: 19 Joined: Sun Feb 14, 2016 8:15 pm
#14
Post
by natsuda » Thu Apr 21, 2016 12:15 pm
ขอสอบถามอีกรอบนะคะ ตอนนี้คือถ้ากรองชื่อไม่ครบตามจำนวนที่เรากำหนดไว้ข้อมูลจะไม่ขึ้น มีทางที่จะทำได้ไม่คะ ถ้าต้องการให้ สมมติตารางกรองชื่อได้10ตัว แต่กรองไป9ตัวข้อมูลก้อขึ้นอะคะ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30761 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#15
Post
by snasui » Thu Apr 21, 2016 6:38 pm
คำว่า "ก้อ", "อะคะ" ไม่ถูกต้องตามกฎการใช้บอร์ดด้านบน
ระมัดระวังด้วยครับ
จากในไฟล์แนบ
natsuda wrote: คือถ้าต้องการเพิ่มไปที่ละตัวแล้วเพิ่มไปแค่ไม่ถึงตามที่ช่องกำหนดไว้แล้วให้รันค่าได้เลยคะ คือตอนนี้ต้องเพิ่ม10ถึงรันค่า ถ้าเราเพิ่มแค่7--8ตัวก็รันได้ควรทำยังงัย คะ
ผมยังไม่เข้าสิ่งที่เป็นปัญหา ช่วยอธิบายมาใหม่อีกรอบ
natsuda
Member
Posts: 19 Joined: Sun Feb 14, 2016 8:15 pm
#16
Post
by natsuda » Thu Apr 21, 2016 9:27 pm
จากสูตรในช่องC29 มันจะทำงานก็ต่อเมื่อกรอกครบตามจำนวนเซลล์ที่เรากำหนดคะคือตั้งแต่C29-C38 แต่ที่อยากได้คือกรอกข้อมูลไม่ครบทุกเซลล์ก็สามารถรันข้อมูลได้คะ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30761 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#17
Post
by snasui » Thu Apr 21, 2016 9:43 pm
เซลล์ C19 ปรับสูตรเป็นด้านล่างครับ
=IFERROR(INDEX($B$19:$B$27,SMALL(IF(FREQUENCY (IF($B$19:$B$27<>"",MATCH($B$19:$B$27,$B$19:$B$27,0)),ROW($B$19:$B$27)-ROW($B$19)+1),ROW($B$19:$B$27)-ROW($B$19)+1),ROWS(C$19:C19))),"")
Ctrl+Shift+Enter > Copy ลงด้านล่าง
natsuda
Member
Posts: 19 Joined: Sun Feb 14, 2016 8:15 pm
#18
Post
by natsuda » Thu Apr 21, 2016 9:49 pm
ได้แล้ว ขอบคุณคะ