: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

การใช้สูตร Hyperlink ในสมุดงานเดียวกัน

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
borsalino
Member
Member
Posts: 43
Joined: Mon May 12, 2014 12:17 pm

การใช้สูตร Hyperlink ในสมุดงานเดียวกัน

#1

Post by borsalino »

อาจารย์ครับ มีวิธีให้ hyperlink ไป cell ถัดจาก ROW สุดท้ายใน sheet อื่นในสมุดงานเดียวกันมั้ยครับ

ผมใช้สูตร =HYPERLINK("[สต๊อก - สินค้า57.xlsm]"&B3&"!A6","ไป") มันไปที่ A6

แต่ผมอยากให้มันไป cell ถัดจาก ROW สุดท้าย ต้องเปลี่ยนสูตรยังไงครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31159
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การใช้สูตร Hyperlink ในสมุดงานเดียวกัน

#2

Post by snasui »

:D ลองปรับสูตรเป็นด้านล่างครับ

=HYPERLINK("[สต๊อก - สินค้า57.xlsm]"&B3&"!"&"A"&MATCH(TRUE,INDEX($A$1:$A$100<>"",0),0)+1,"ไป")
borsalino
Member
Member
Posts: 43
Joined: Mon May 12, 2014 12:17 pm

Re: การใช้สูตร Hyperlink ในสมุดงานเดียวกัน

#3

Post by borsalino »

snasui wrote::D ลองปรับสูตรเป็นด้านล่างครับ

=HYPERLINK("[สต๊อก - สินค้า57.xlsm]"&B3&"!"&"A"&MATCH(TRUE,INDEX($A$1:$A$100<>"",0),0)+1,"ไป")
อาจารย์ครับ สูตรนี้ตัว =MATCH(TRUE,INDEX($A$1:$A$100<>"",0),0)
มันได้เลข ROW สุดท้ายของ sheet1 ที่ผมใช้ค้นหาอ่ะครับ มันไม่ได้ตาม ROW สุดท้ายของ sheet อื่นๆตาม "&B3&" ครับ

คือ sheet1 ผมใช้ให้ hyperlink ไป sheet อื่น(2,3,4,..) และกำหนด cell ถัดจาก ROW สุดท้าย
borsalino
Member
Member
Posts: 43
Joined: Mon May 12, 2014 12:17 pm

Re: การใช้สูตร Hyperlink ในสมุดงานเดียวกัน

#4

Post by borsalino »

ต้องเป็นสูตรประมาณ =HYPERLINK("[สต๊อก - สินค้า57.xlsm]"&B3&"!"&"A"&MATCH จากชีทอื่น,"ไป") หรือเปล่าครับ

หรือว่าหลักการ มันควรจะเป็น
=HYPERLINK("[สต๊อก - สินค้า57.xlsm]"&B3&"!"&"A"&ตามด้วยเลข,"ไป")

ซึ่งผมต้องไป MATCH สูตรลงใน sheet2,3,4,... แล้วค่อยดึงค่ามาใช้เป็น

=HYPERLINK("[สต๊อก - สินค้า57.xlsm]"&B3&"!"&"J"&INDIRECT("'[สต๊อก - สินค้า57.xlsm]"&B3&"'!$O$2"),"ไป")
สูตรนี้ผม MATCH ลงไปในcell O2

ปล.ในไฟล์ผมมีหลายชีท พอมีสูตรพวก VLOOKUP INDIRECT มันทำให้ไฟล์มาช้าลงมากๆเลย มีวิธีแก้มั้ยครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31159
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การใช้สูตร Hyperlink ในสมุดงานเดียวกัน

#5

Post by snasui »

:D ควรแนบไฟล์ตัวอย่างมาด้วยเพื่อสะดวกในการตอบครับ

สำหรับการ Match ตามค่าใน Sheet ที่ระบุใน B2 สามารถปรับสูตรเป็น

=HYPERLINK("[สต๊อก - สินค้า57.xlsm]"&B3&"!"&"A"&MATCH(TRUE,INDEX(INDIRECT("[สต๊อก - สินค้า57.xlsm]"&B3&"!"&"$A$1:$A$100")<>"",0),0)+1,"ไป")

การใช้ Vlookup จำนวนมากสามารถปรับเป็นพวก Index, Match เพื่อเพิ่มความเร็วได้

กรณี Indirect ควรใช้เท่าที่จำเป็น หากใช้มากจะทำให้คำนวณช้า ควรปรับฐานข้อมูลให้อยู่ในชีทเดียวกัน ไม่ควรแยกเป็นหลายชีท
borsalino
Member
Member
Posts: 43
Joined: Mon May 12, 2014 12:17 pm

Re: การใช้สูตร Hyperlink ในสมุดงานเดียวกัน

#6

Post by borsalino »

snasui wrote::D ควรแนบไฟล์ตัวอย่างมาด้วยเพื่อสะดวกในการตอบครับ

สำหรับการ Match ตามค่าใน Sheet ที่ระบุใน B2 สามารถปรับสูตรเป็น

=HYPERLINK("[สต๊อก - สินค้า57.xlsm]"&B3&"!"&"A"&MATCH(TRUE,INDEX(INDIRECT("[สต๊อก - สินค้า57.xlsm]"&B3&"!"&"$A$1:$A$100")<>"",0),0)+1,"ไป")

การใช้ Vlookup จำนวนมากสามารถปรับเป็นพวก Index, Match เพื่อเพิ่มความเร็วได้

กรณี Indirect ควรใช้เท่าที่จำเป็น หากใช้มากจะทำให้คำนวณช้า ควรปรับฐานข้อมูลให้อยู่ในชีทเดียวกัน ไม่ควรแยกเป็นหลายชีท
ทำได้แล้วครับอาจารย์ ผมปรับสูตรเป็น

=HYPERLINK("[สต๊อก - สินค้า57.xlsm]"&B3&"!"&"J"&MATCH(FALSE,INDEX(INDIRECT("'[สต๊อก - สินค้า57.xlsm]"&B3&"'!"&"$A$6:$A$1000")<>"",0),0)+4,"ไป")

ตอนนี้ติดปัญหาคคือ ในกรณีที่ "&B3&" เป็นข้อความที่มีเว้นวรรคหรือวงเล็บ มันจะขึ้น popup คำว่า
การอ้างอิงไม่ถูกต้อง

ผมกำลังจำลองไฟล์แนบให้อาจารย์อยู่ครับ เผื่อจะได้ถามเรื่อง Vlookup เป็น Index, Match
borsalino
Member
Member
Posts: 43
Joined: Mon May 12, 2014 12:17 pm

Re: การใช้สูตร Hyperlink ในสมุดงานเดียวกัน

#7

Post by borsalino »

แนบไฟล์จำลองครับ

ที่ ชีท รายชื่อ คอลัมม์ C ผมปรับสูตรตามไฟล์จำลองนะครับ

=IF(C2="",0,HYPERLINK("[สต๊อก - สินค้า57.xlsm]"&B3&"!"&"B"&MATCH(FALSE,INDEX(INDIRECT("'[สต๊อก - สินค้า57.xlsm]"&B3&"'!"&"$A$1:$A$1000")<>"",0),0)-1,"ไป"))

ที่ C3,C4 สามารถลิงค์ไปยังชีทได้ครับ แต่ C5,C6 ไม่สามารถลิงค์ได้ครับ

ปล.เรื่องสูตรนะครับ ในกรณีนี้ ผมเลี่ยงโดยไม่ใช้ Indirect ได้มั้ยครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31159
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การใช้สูตร Hyperlink ในสมุดงานเดียวกัน

#8

Post by snasui »

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

เซลล์ C2 ปรับสูตรเป็น

=IF(C1="",0,HYPERLINK("#'"&B2&"'!"&"B"&MATCH(FALSE,INDEX(INDIRECT("'"&B2&"'!"&"$A$1:$A$1000")<>"",0),0)-1,"ไป"))

Enter > Copy ลงด้านล่าง

กรณีทำ Hyperlink ในไฟล์ปัจจุบันไม่จำเป็นต้องอ้างถึงชื่อไฟล์ครับ
borsalino
Member
Member
Posts: 43
Joined: Mon May 12, 2014 12:17 pm

Re: การใช้สูตร Hyperlink ในสมุดงานเดียวกัน

#9

Post by borsalino »

1.ปรับตามนี้ใช้งานได้ไม่มีปัญหาแล้วครับ
ในลักษณะเรื่องความเร็วนี่ เปลี่ยนไปใช้สูตรอื่น ที่ไม่ใช้ Indirect ตามอาจารย์บอกได้มั้ยครับ

2.ผมทำไฟล์จำลอง ในการรวมราคาของแต่ละวันที่มาเรียบร้อยด้วยสูตร ในเซลล์ B13

=SUMPRODUCT(SUMIF(INDIRECT("'[สต๊อก - สินค้า57.xlsm]"&AllSh&"'!A2:A1000"),$A13,INDIRECT("'[สต๊อก - สินค้า57.xlsm]"&AllSh&"'!E2:E1000")))

อาจารย์แนะนำเปลี่ยนสูตรใช้ Match, Index หน่อยครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31159
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การใช้สูตร Hyperlink ในสมุดงานเดียวกัน

#10

Post by snasui »

:D สูตรที่สองเป็นการรวมแบบหลายชีทแบบมีเงื่อนไข เป็นสูตรแบบประยุกต์ไม่ใช่ว่าจะใข้สูตรใดก็ได้ครับ ต้องพึ่ง VBA เข้ามาจัดการแทนการใช้สูตรหากต้องการความเร็วจากสูตรลักษณะนี้ครับ :lol:

สำหรับสูตรแรกหากเป็นการใช้ใน Hyperlink ถึงแม้จะใช้สูตรอืนมาช่วยเช่น Cell, Address ก็ไม่ได้ทำให้เร็ว เพราะเป็นสูตรที่อยู่ในกลุ่มหรือเป็นประเภทเดียวกับ Indirect ซึ่งเป็นสูตรที่เป็น Volatile หรือสูตรที่ถูกกระทบให้เปลียนแปลงได้โดยง่่าย ที่ช้าเพราะเกิดการคำนวณทุกครั้งที่มีการเปลี่ยนแปลงในเซลล์ใด ๆ แม้ไม่เกียวกับเซลล์ที่เขียนสูตรก็ตาม
borsalino
Member
Member
Posts: 43
Joined: Mon May 12, 2014 12:17 pm

Re: การใช้สูตร Hyperlink ในสมุดงานเดียวกัน

#11

Post by borsalino »

borsalino wrote:
=SUMPRODUCT(SUMIF(INDIRECT("'[สต๊อก - สินค้า57.xlsm]"&AllSh&"'!A2:A1000"),$A13,INDIRECT("'[สต๊อก - สินค้า57.xlsm]"&AllSh&"'!E2:E1000")))
ขอคำแนะนำ ในการเปลี่ยน CODE ด้านบนเป็น VBA หน่อยครับ เป็นการดึงข้อมูลที่อยู่ในวันเดียวกันของแต่ละชีทมาบวกกัน
ผมมีการใช้ Indirect เยอะ แค่เปิดไฟล์มันก็รอคำนวนนานมากแล้วล่ะครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31159
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การใช้สูตร Hyperlink ในสมุดงานเดียวกัน

#12

Post by snasui »

:D Code ต้องเขียนมาเองตามกฎข้อ 5 ด้านบน :roll: ติดตรงไหนแล้วค่อยถามกันต่อครับ
Post Reply