:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

การอ้างอิงข้ามไฟล์

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
nobody
Member
Member
Posts: 11
Joined: Fri Oct 28, 2011 11:11 am

การอ้างอิงข้ามไฟล์

#1

Post by nobody »

ผมมีปัญหาการอ้างอิงไฟล์ โดยกำหนดตัวแปรชื่อไฟล์ไว้ โดยใช้สูตร

=VLOOKUP($B$4,"["&$B$2&".xlsx]Sheet1'!$B$2:$E$5",3,0)
(ตามไฟล์แนบครับ)

ได้ผลลัพท์เป็น " #VALUE! " ไม่ทราบใส่สูตรผิดตรงไหน :cry:

ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: การอ้างอิงข้ามไฟล์

#2

Post by bank9597 »

:D ลองตามนี้ครับ

ที่เซลล์ B7 คีย์ =VLOOKUP($B$4,INDIRECT("["&B2&".xlsx"&"]"&"Sheet1"&"!"&"$B$3:$E$5"),3,0)

สามารถเปลี่ยนชื่อไฟล์ได้ใน B2

ปล. การทำเช่นนี้ ทุกไฟล์จะต้องมีตารางข้อมูลที่เหมือนกัน และชื่อชีทด้วย
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
nobody
Member
Member
Posts: 11
Joined: Fri Oct 28, 2011 11:11 am

Re: การอ้างอิงข้ามไฟล์

#3

Post by nobody »

รบกวนสอบถามอีกที ยังไม่ตรงกับความต้องการครับ

เนื่อง INDIRECT ต้องเปิดไฟล์ data.xlsx ค้างไว้ ข้อมูลถึงจะมาด้วยครับ

แต่ถ้าไม่ต้องการให้ไฟล์ data.xlsx เปิดไว้จะได้หรือไม่? เนื่องจากไฟล์ data.xlsx ผมมีอยู่หลายไฟล์ เช่น data1.xlsx , data2.xlsx , data3.xlsx , ........


ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การอ้างอิงข้ามไฟล์

#4

Post by snasui »

:D ไม่สามารถใช้สูตรอื่นนอกจาก Indirect มาแบบเชื่อมให้เป็น Path แบบ String แล้วให้แสดงข้อมูลจากไฟล์ต้นทางได้ครับ

กรณีเป็นการรวบรวมข้อมูลจากหลาย ๆ ไฟล์ลองดูตัวอย่างจากที่นี่ครับ http://snasui.blogspot.com/2010/06/blog-post.html นอกเหนือจากนี้คงต้องพึ่ง VBA ครับ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: การอ้างอิงข้ามไฟล์

#5

Post by bank9597 »

ต้องเปิดไฟล์ data.xlsx ค้างไว้ ข้อมูลถึงจะมาด้วยครับ
:lol: ครั้งแรกที่เปิดไฟล์ขึ้นมา จำเป็นต้องเปิดไฟล์ที่เกี่ยวข้องขึ้นมาพร้อมกันก่อนครับ และไม่ว่าสูตรไหน วิธีไหน คุณจำเป็นต้องเปิดขึ้นมาพร้อมกันก่อนเสมอ เพื่อให้สูตรจดจำปลายทางของอีกไฟล์ได้
เมื่อขึ้นมาพร้อมกันแล้ว คุณทดสอบปิดไฟล์ Data ไป สังเกตุที่สูตรจะยังทำงานตามปกติเหมือนเดิม

แต่กรณีใช้สูตร =VLOOKUP($B$4,[Data.xlsx]Sheet1!$B$3:$E$5,3,0) คุณไม่จำเป็นต้องเปิดไฟล์ทั้ง 2 พร้อมกันครับ สามารถเปิดแค่ไฟล์ที่ต้องการได้
ส่วนเหตุผลเป็นเพราะอะไรนั้น ต้องให้อาจารย์ หรือผู้รู้ท่านอื่นมาอธิบายอีกครั้งครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
nobody
Member
Member
Posts: 11
Joined: Fri Oct 28, 2011 11:11 am

Re: การอ้างอิงข้ามไฟล์

#6

Post by nobody »

ขอบคุณทุกท่านมากครับ ที่ช่วยให้คำตอบ

พอเป็นแนวทางไปต่อได้ ยังไงจะลองปรับข้อมูลตามลิงค์ดูสงสัยยังไงจะเข้ามาสอบถามใหม่ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การอ้างอิงข้ามไฟล์

#7

Post by snasui »

bank9597 wrote:ครั้งแรกที่เปิดไฟล์ขึ้นมา จำเป็นต้องเปิดไฟล์ที่เกี่ยวข้องขึ้นมาพร้อมกันก่อนครับ และไม่ว่าสูตรไหน วิธีไหน คุณจำเป็นต้องเปิดขึ้นมาพร้อมกันก่อนเสมอ เพื่อให้สูตรจดจำปลายทางของอีกไฟล์ได้
:D การเปิดไฟล์ขึ้นมาพร้อมกันช่วยให้ง่ายในการอ้างอิงข้ามไฟล์เท่านั้นครับ กรณีที่สามารถเขียนสูตรอ้างอิงแบบข้ามเครื่อง ข้ามไดรฟ์ ข้ามโฟลเดอร์ ข้ามไฟล์ได้ก็ไม่จำเป็นต้องเปิดไฟล์ขึ้นมาก่อนแต่อย่างใด :mrgreen:
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: การอ้างอิงข้ามไฟล์

#8

Post by bank9597 »

:D อธิบายเพิ่มเติมครับ

กรณีที่ต้องใช้สูตรแบบอ้างชื่อไฟล์ลงไปในสูตร เช่น Indirect Sumif Countif Offset เหล่านี้เป็นต้น จำเป็นต้องเปิดไฟล์ขึ้นมาพร้อมกันเสมอครับ

แต่กรณีใช้สูตร Vlookup ,Sum,Count,Sumproduct เหล่านี้ัเป็นต้น ไม่จำเป็นต้องเปิดไฟล์พร้อมกันก็ได้ เพียงแต่คุณต้องแม่นพอที่จะระบุที่อยู่ของไฟล์ได้ถูกต้อง แต่ตามหลักความเป็นจริงแล้ว จำเป็นต้องเปิดไฟล์พร้อมกันเสมอ เพื่อให้สามารถเขียนสูตรได้ง่ายและถูกต้องครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: การอ้างอิงข้ามไฟล์

#9

Post by bank9597 »

snasui wrote:
bank9597 wrote:ครั้งแรกที่เปิดไฟล์ขึ้นมา จำเป็นต้องเปิดไฟล์ที่เกี่ยวข้องขึ้นมาพร้อมกันก่อนครับ และไม่ว่าสูตรไหน วิธีไหน คุณจำเป็นต้องเปิดขึ้นมาพร้อมกันก่อนเสมอ เพื่อให้สูตรจดจำปลายทางของอีกไฟล์ได้
:D การเปิดไฟล์ขึ้นมาพร้อมกันช่วยให้ง่ายในการอ้างอิงข้ามไฟล์เท่านั้นครับ กรณีที่สามารถเขียนสูตรอ้างอิงแบบข้ามเครื่อง ข้ามไดรฟ์ ข้ามโฟลเดอร์ ข้ามไฟล์ได้ก็ไม่จำเป็นต้องเปิดไฟล์ขึ้นมาก่อนแต่อย่างใด :mrgreen:
:lol: ขอบคุณอาจารย์ด้วยครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
nobody
Member
Member
Posts: 11
Joined: Fri Oct 28, 2011 11:11 am

Re: การอ้างอิงข้ามไฟล์

#10

Post by nobody »

แต่กรณีใช้สูตร Vlookup ,Sum,Count,Sumproduct เหล่านี้ัเป็นต้น ไม่จำเป็นต้องเปิดไฟล์พร้อมกันก็ได้ เพียงแต่คุณต้องแม่นพอที่จะระบุที่อยู่ของไฟล์ได้ถูกต้อง แต่ตามหลักความเป็นจริงแล้ว จำเป็นต้องเปิดไฟล์พร้อมกันเสมอ เพื่อให้สามารถเขียนสูตรได้ง่ายและถูกต้องครับ
อีกทีครับ แล้วทำไม เราถึงอ้างอิงตัวแปรชื่อไฟล์ ไม่ได้ครับ Data.xlsx ระหว่าง

=VLOOKUP($B$4,[Data.xlsx]Sheet1!$B$3:$E$5,3,0)

กับ

=VLOOKUP($B$4,"["&$B$2&".xlsx]Sheet1'!$B$2:$E$5",3,0)
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การอ้างอิงข้ามไฟล์

#11

Post by snasui »

:shock:
snasui wrote: ไม่สามารถใช้สูตรอื่นนอกจาก Indirect มาแบบเชื่อมให้เป็น Path แบบ String แล้วให้แสดงข้อมูลจากไฟล์ต้นทางได้ครับ
Path หมายถึงเส้นทางเพื่อที่จะให้สูตรรู้จักต้นแหล่ง ผมกล่าวรวมถึงชื่อไฟล์ด้วยครับ
nobody
Member
Member
Posts: 11
Joined: Fri Oct 28, 2011 11:11 am

Re: การอ้างอิงข้ามไฟล์

#12

Post by nobody »

ดังนั้นข้อหัวกระทู้นี้สามารถทำได้ 2 วิธี

1.
ที่เซลล์ B7 คีย์ =VLOOKUP($B$4,INDIRECT("["&B2&".xlsx"&"]"&"Sheet1"&"!"&"$B$3:$E$5"),3,0)
กรณีนี้ต้องเปิดไฟล์ที่เชื่อมโยงด้วยเท่านั้น

2.
ไม่สามารถใช้สูตรอื่นนอกจาก Indirect มาแบบเชื่อมให้เป็น Path แบบ String แล้วให้แสดงข้อมูลจากไฟล์ต้นทางได้ครับ

กรณีเป็นการรวบรวมข้อมูลจากหลาย ๆ ไฟล์ลองดูตัวอย่างจากที่นี่ครับ http://snasui.blogspot.com/2010/06/blog-post.html นอกเหนือจากนี้คงต้องพึ่ง VBA ครับ
กรณีนี้ไม่จำเป็นต้องเปิดไฟล์ที่เชื่อมโยง


ถูกต้องไหมครับ ขอบคุณทุกท่านอีกทีครับ ถ้าท่านใดจะเสริมก็ได้เลยนะครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การอ้างอิงข้ามไฟล์

#13

Post by snasui »

:lol: กรณีความต้องการตามกระทู้นี้ถ้าต้องการให้ครอบคลุมเนื่องจากไม่ได้ระบุว่าต้องเป็นสูตร ผมสรุปให้ครอบคลุมแล้วกันครับ
ที่สามารถจะทำได้คือ
  1. สูตร Indirect ร่วมกับสูตรใด ๆ ก็ได้ทั้งนั้นที่สามารถเขียน Lookup ค่าออกมาได้ ไม่จำเป็นต้อง Vlookup กรณีที่เปิดไฟล์ต้นทาง
  2. เทคนิคตาม http://snasui.blogspot.com/2010/06/blog-post.html ซึ่งต้อง Manual เข้าไปส่วนหนึ่งเพื่อ Activate สูตรให้ทำงานกับไฟล์ที่ปิดอยู่ได้
  3. ด้วย Add-ins หรือการ Coding เช่น VBA
Post Reply