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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
na_nut
Member
Posts: 12 Joined: Wed Feb 24, 2010 11:48 am
#1
Post
by na_nut » Sat Jul 17, 2010 11:17 am
สวัสดีครับ
มีเรื่องรบกวนนิดนึงครับ คืออยากได้คำสั่งลิงค์ข้อมูลข้ามเวิร์คชีต ดังนี้ครับ
- ข้อมูลที่ต้องการอยู่ที่ drive และ Folder D:\product
- ไฟล์ที่ต้องการอยู่ใน drive และ Folder ที่กล่าวมา ตั้งชื่อไฟล์ว่า code-xxx.xls
- ในแต่ละไฟล์มีชีตย่อย ๆ อีกไฟล์ละเป็นร้อยชีต โดยตั้งชื่อชีตตามรหัสสินค้า เช่น รหัสสินค้า = 1234567890ABC ชื่อชีตก็เป็น 1234567890ABC เช่นกัน (ชีตต่อไปอาจเป็น 1234211567DAEO อะไรประมาณนี้ แต่สามตัวหน้าต้องตรงกันกับรหัส xxx ในชื่อไฟล์ เช่น ไฟล์ชื่อ Code-123.xls ชื่อชีตในไฟล์นั้นต้องขึ้นต้นด้วย 123 ตามด้วยเลขต่อท้ายและตัวอักษร ตามตัวอย่าง)
- ข้อมูลที่ต้องการอยู่ที่ cell K8 กับ L8 คงที่ทุกชีต (มีหลายร้อยชีต)
- ในจำนวนไฟล์ทั้งหมดซึ่งมีหลายสิบไฟล์ มีอยู่ 1 ไฟล์ที่เป็นไฟล์สรุปตัวเลขที่เอามาจาก cell K8 กับ L8 ของทุกชีต ทุกไฟล์
ยกตัวอย่างที่ต้องการคือ
ลำดับที่ รหัส รายการ หน่วย ราคา จำนวนของ จำนวนเงิน
1 12322252225AAN น้ำมันหมูเกรดพิเศษแพ็คถุง 5 กิโล ถุง 300.- 100 30,000.-
*remark รหัส 1232225225aan อยู่ที่ cell b10
-ช่องรหัส ผมใช้สูตรนับชีตที่คุณคนควน Post สอนไว้ นำมาใช้ได้ประโยชน์มากจริง ๆ ข้อมูลที่นำมาใส่ในช่อรหัส ก็ copy มาจาก ชีตที่มีสูตร countsheet แล้วมา vlookup หา description ใส่อีกที
-ที่เหลือคือ จำนวนของ กับ จำนวนเงิน ซึ่งจะมีการเปลี่ยนแปลงไปเรื่อย ๆ ผมจึุงอยากได้สูตรที่กว่าที่ไว้
-ที่ทำไว้ก็คือ ทำ link ไปหา cell k8 กับ l8 (ดูเหมือนน่าจะดี แต่ไม่ดีตรงที่ ไฟล์นี้คนทำไม่ค่อยได้อัพเดทรหัสปล่อยให้มีรหัสเกิดใหม่ มากมายผมต้องเสียเวลามาทำลิงค์กันเป็นวัน
สรุป ความต้องการ
- อยากรบกวนคุณคนควน ขอสูตร (คิดอยู่หลายวันแล้ว) ดึงค่าจาก cell K8 กับ L8 โดยอ้างอิงชื่อชีตจากรหัส
- สูตรเดิมที่ใช้อยู่ แค่ทำลิงค์ธรรมดาคือ ='[Code-123.xls]123555422dady'!$K$8
- สูตรที่พยายามทำ ='[Code-123.xls]ฺิิิิิ&B10'!$K$8 แต่ error ref# มั่ง Value# มั่ง ไม่รู้จะทำอย่างไรให้ชื่อชีตมันมาต่อกับชื่อไฟล์ได้โดยอ้างอิงจาก cell b10 เพื่อจะได้ไม่ต้องมานั่งแก้ตัวเลขทุก ๆ บรรทัดซึ่งมีเป็นพัน ๆ บรรทัด
พยายามรวบรัดแล้วครับ แต่มันก็ยาวจนได้ นี่เป็นการโพสก์ครั้งแรก หากผิดพลาดขออภัยด้วย และรบกวนด้วยครับ
snasui
Site Admin
Posts: 30920 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#2
Post
by snasui » Sat Jul 17, 2010 12:11 pm
การสร้างสูตรให้ Link กันกรณีข้ามไฟล์นั้นสามารถทำได้ 2 กรณีครับ อย่างที่ผมจะนำเสนอนี้เป็นการใช้ฟังก์ชั่น Indirect เข้ามาช่วย ส่วนอีกกรณีเป็นการใช้เทคนิคจากการรวมข้อมูลจากหลายไฟล์มาไว้ในไฟล์เดียว สามารถดูได้จาก
http://snasui.blogspot.com/2010/06/blog-post.html
การรวมข้อมูลตาม Link ด้านบน ไม่จำเป็นต้องเปิดไฟล์ต้นทาง แต่สำหรับการใช้ฟังก์ชั่น Indirect นั้นไฟล์ต้นทางจำเป็นจะต้องเปิดขึ้นมาครับ ไม่เ่ช่นนั้นจะเกิดค่าผิดพลาด เช่นตัวอย่างที่ผมทำมา File ที่ชื่อ Code-123.xls นั้นถูกเปิดขึ้นมาพร้อมกับไฟล์ที่เรากำัลังเขียนสูตร โดยทำดังนี้ครับ
1. คอลัมน์ A เป็นการระบุชื่อไฟล์ที่นำมาใช้
2. คอลัมน์ B เป็นการระบุชื่อ Sheet ในไฟล์ที่นำมาใช้
3. คอลัมน์ C และ D ระบุชื่อเซลล์ที่นำข้อมูลมาใช้
4. ที่ C2 เขียนสูตร
=INDIRECT("'["&$A2&"]"&$B2&"'!"&C$1)
Enter > Copy ไปทางขวาและลงด้านล่าง
ต้องปรับใช้ดูครับ
You do not have the required permissions to view the files attached to this post.
na_nut
Member
Posts: 12 Joined: Wed Feb 24, 2010 11:48 am
#3
Post
by na_nut » Sat Jul 17, 2010 1:37 pm
ขอบคุณครับ ผมได้นำไปปรับใช้ได้เรียบร้อยแล้วครับ
แต่เนื่องจากไฟล์ที่ลิงค์กันมีจำนวนมาก ลองเปิดมาทั้งหมดเล่นเอาเครื่องอืดไปเลย เครื่องเ่ก่า รุ่น p4 นู่น แรมแค่ 512
เลยอยากได้สูตรหรือฟังชั่นที่ไม่ต้องเปิดไฟล์ มีมั้ยครับ
ขอบคุณครับ ขอรบกวนอีกครั้งครับ
snasui
Site Admin
Posts: 30920 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#4
Post
by snasui » Sat Jul 17, 2010 2:09 pm
na_nut wrote: ขอบคุณครับ ผมได้นำไปปรับใช้ได้เรียบร้อยแล้วครับ
แต่เนื่องจากไฟล์ที่ลิงค์กันมีจำนวนมาก ลองเปิดมาทั้งหมดเล่นเอาเครื่องอืดไปเลย เครื่องเ่ก่า รุ่น p4 นู่น แรมแค่ 512
เลยอยากได้สูตรหรือฟังชั่นที่ไม่ต้องเปิดไฟล์ มีมั้ยครับ
ขอบคุณครับ ขอรบกวนอีกครั้งครับ
หากไม่ต้องการเปิดไฟล์สามารถใช้วิธีตาม Link ที่ให้ไปครับตามด้านล่าง ลองทำดูนะครับ ติดขัดตรงไหนถามมาได้เรื่อย ๆ ไม่ต้องเกรงใจครับ
snasui wrote: การสร้างสูตรให้ Link กันกรณีข้ามไฟล์นั้นสามารถทำได้ 2 กรณีครับ อย่างที่ผมจะนำเสนอนี้เป็นการใช้ฟังก์ชั่น Indirect เข้ามาช่วย ส่วนอีกกรณีเป็นการใช้เทคนิคจากการรวมข้อมูลจากหลายไฟล์มาไว้ในไฟล์เดียว สามารถดูได้จาก
http://snasui.blogspot.com/2010/06/blog-post.html ...
na_nut
Member
Posts: 12 Joined: Wed Feb 24, 2010 11:48 am
#5
Post
by na_nut » Sat Jul 17, 2010 2:40 pm
ขอบคุณครับ จะลองศึกษาและเอาไปปรับปรุงงานดูครับ