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] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#1
Post
by bank9597 » Fri Nov 25, 2011 11:04 am
เป็นความเข้าใจส่วนตัวครับ ไม่รู้ว่าผิดหรือถูกแค่ไหน ผมคิดว่า อาร์เรย์คือหน่วยความจำทำหน้าที่เหมือน RAM ในคอมพิวเตอร์ ที่จะจำค่าต่างๆที่เรากำหนดไว้
สอดคล้องกับที่ว่า หากข้อมูลน้อย ก็จะคำนวนเร็ว หากข้อมูลเยอะก็จะคำนวนได้ช้า เปรียบเหมือนการใช้งานคอมพิวเตอร์ หากเราใช้งานหลายโปรแกรมในเวลาเดียวกัน จะทำให้เครื่องคอมทำงานช้า
เป็นความคิดส่วนตัวครับ รบกวนอาจารย์ช่วยแชร์ความรู้ด้วยครับ
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
snasui
Site Admin
Posts: 31176 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Fri Nov 25, 2011 11:10 am
Array ใน Excel คือช่วงข้อมูลไม่ได้หมายถึงหน่วยความจำครับ จะเกี่ยวข้อกับหน่วยความจำคือกรณีใช้ Array ขนาดใหญ่ จะสิ้นเปลีองหน่วยความจำ
Array สามารถมีได้ 3 แบบคือ
ช่วงข้อมูลไปทางคอลัมน์ ช่วงข้อมูลไปทางบรรทัด ช่วงข้อมูลแบบผสมคือมีลักษณะเป็นตาราง
ดูคำอธิบายเพิ่มเติมที่นี่ครับ
Array
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#3
Post
by bank9597 » Fri Nov 25, 2011 11:23 am
ฟังก์ชั่นที่มีส่วนประกอบเป็น Array และสามารถคืนค่าเป็น Array เช่น
Index()
Transpose()
Trend()
ฟังก์ชัน ที่คืนค่าเป็น Array เช่น Index ได้ใช้อยู่บ่อยๆ เช่น ใช้ INDEX การแปลงค่าที่ได้จากการนับ เช่นฟังก์ชันประเภท COUNT
แต่คืนค่าแบบ Transpose ,Trend ไม่เคยเจอเลย เคยเข้าใจว่า Transpose คือการเปลี่ยนแกนเท่านั้น รบกวนอายกตัวอย่างสูตรที่คืนค่าลักษณะนี้ให้ดูได้ไหมครับ
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#4
Post
by bank9597 » Fri Nov 25, 2011 11:30 am
ทำไมเวลาเราต้องการจะป้อนสูตรที่เป็น Array เราต้องกด CTRL+SHIFT+ENTER ด้วยครับ
ตัวไหนหมายถึงอะไรบ้าง ทำไมถึงแตกต่างจากการ Enter โดยทั่วไปครับ
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
snasui
Site Admin
Posts: 31176 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#5
Post
by snasui » Fri Nov 25, 2011 11:37 am
ตัวไหนหมายถึงอะไรไม่มีอธิบายไว้เช่นนั้นครับ การกดแป้นเพื่อสร้างสูตร Array ต้องกด 3 แป้น เป็นวิธีการใช้ที่กำหนดมาโดย Microsoft ที่พบได้ใน Help เพื่อจะให้สูตรทำงานในแบบ Array แทนที่จะ Enter แบบธรรมดา
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#6
Post
by bank9597 » Fri Nov 25, 2011 11:47 am
จากสูตรที่คืนค่าเป็น INDEX นั้น ผมเข้าใจว่ามันเเสดงข้อมูลออกมาในรูปแบบ แถว+คอลัมน์ จนได้เป็นช่องตาราง
แต่ทีนี้ การที่เราต้องกด CTRL+SHIFT+ENTER ผมเข้าว่ามันต้องโฟกัสตำแหน่งให้ถูกต้อง เพราะสูตรที่คืนค่าเป็น INDEX มีมากมายหลายค่าแล้วแต่ข้อมูล
และหากเรากดแค่ ENTER อย่างเดียว สูตรก็จะแสดงค่าไม่ได้เลย
เป็นข้อสังเกตครับ
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
snasui
Site Admin
Posts: 31176 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#7
Post
by snasui » Fri Nov 25, 2011 11:59 am
การใช้งานสำหรับ Index แบบ Ctrl+Shift+Enter เพื่อให้แสดงผลลัพธ์เป็น Array นั้น โดยทั่ว ๆ ไปจะใช้ Array แบบ 1 คอลัมน์ หรือ 1 บรรทัด หากจะใช้ Array แบบผสมก็ย่อมได้
ส่วนการกำหนดตำแหน่งให้ถูกต้อง ขึ้นอยู่กับเงื่อนไขในการระบุตำแหน่งบรรทัดและตำแหน่งคอลัมน์ ที่จำเป็นต้องทำให้เป็น Array วัตถุประสงค์หลักเพราะต้องการหาตำแหน่งบรรทัดตามเงื่อนไขหลายเงื่อนไข หรือ หาตำแหน่งคอลัมน์ตามเงื่อนไขหลายเงื่อนไข ถ้าเงื่อนไขเดียว ไม่จำเป็นต้องกดแป้น Ctrl+Shift+Enter แต่อย่างใดครับ
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#8
Post
by bank9597 » Fri Nov 25, 2011 12:12 pm
เข้าใจแล้วครับ
ถ้าเงื่อนไขเดียว ไม่จำเป็นต้องกดแป้น Ctrl+Shift+Enter แต่อย่างใดครับ
สูตรพวกนี้เช่น VLOOKUP,Sumproduct,Match ฯลฯ เพราะเป็นสูตรอาร์เรย์โดยธรรมชาติอยู่แล้ว (อาจารย์เคยบอก)
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ