: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
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

ต้องการให้excelเปลี่ยนแปลงrangeที่เลือกไว้สำหรับplotได้เองครับ

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
adamjensen
Member
Member
Posts: 13
Joined: Wed Sep 02, 2015 4:02 pm

ต้องการให้excelเปลี่ยนแปลงrangeที่เลือกไว้สำหรับplotได้เองครับ

#1

Post by adamjensen »

สวัสดีครับอาจารย์

ผมได้พยายามค้นหาทั้งเว็ปในและนอกประเทศแล้ว แต่ก็ยังหาคำตอบไม่เจอจนผมไม่แน่ใจว่าสิ่งที่ผมต้องการสามารถทำได้จริงหรือไม่ครับ
คำถามที่ผมสงสัยคือ เราสามารถเขียน code ให้ excel เปลี่ยนแปลง range ที่เลือกไว้สำหรับ plot graph ได้หรือไม่ครับ

ยกตัวอย่างเช่น
1. ผมคลิกที่ ACC หรือ พิมพ์ "ACC" ลงในช่อง "D1"
2. จากนั้นให้แสดงกราฟความสัมพันธ์ระหว่าง "วันที่กับค่า" (range ที่เลือกสำหรับ plot คือ (E3:J3,E5:J5)
3. ถ้าผมคลิกที่ A หรือ พิมพ์ "A" ลงในช่อง "D1" ผมต้องการให้ range ที่เลือกไว้สำหรับ plot เปลี่ยนเป็น (E3:J4) ผมต้องเขียน code อย่างไรได้บ้างครับ
snasui_1.JPG
ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ต้องการให้excelเปลี่ยนแปลงrangeที่เลือกไว้สำหรับplotได้เองครับ

#2

Post by snasui »

:D ตัวอย่างการทำกราฟให้ Dynamic ตามค่าที่เลือก ทำตามด้านล่างครับ
  1. สร้าง Range Name ชื่อ ChartHeader โดยเข้าเมนู Formulas > Name manager > New > ที่ Name: คีย์ ChartHeader > ที่ Refers to: คีย์
    =OFFSET(Set_data!$E$3,0,0,1,COUNT(Set_data!$E$3:$XFD$3))
  2. สร้าง Range Name ชื่อ ChartHeader คลิก New > ที่ Name: คีย์ ChartData > ที่ Refers to: คีย์
    =OFFSET(ChartHeader,MATCH(Set_data!$D$1,Set_data!$C$4:$C$10000,0),0)
  3. คลิกขวาแท่ง Chart > Select Data
    ตรง Legend Entries (Series) คลิก Edit > ตรง Series values: คีย์ =excel_snasui.xlsm!ChartData
  4. ตรง Horizontal (Category) Axis labels คลิก Edit > ตรง Axis label range: คีย์ =excel_snasui.xlsm!ChartHeader > OK
  5. คลิก Text box ที่เป็นชื่อ Chart > คลิกใน Formula bar > คีย์เครื่องหมาย = แล้วเลือกเซลล์ D1 > Enter
adamjensen
Member
Member
Posts: 13
Joined: Wed Sep 02, 2015 4:02 pm

Re: ต้องการให้excelเปลี่ยนแปลงrangeที่เลือกไว้สำหรับplotได้เองครับ

#3

Post by adamjensen »

สวัสดีปีใหม่ครับอาจารย์ ขอโทษด้วยครับที่ตอบกลับช้า พึ่งกลับจากเที่ยวปีใหม่ ลองทำดูแล้วใช้ได้ดีเลยครับ
แต่มีปัญหานิดนึงครับ ถ้าเกิดเราพิมพ์ชื่อหุ้นลงในช่อง "D1" ผิดหรือไม่มีในฐานข้อมมูล โปรแกรมจะแจ้งเตือนขึ้นมาเป็นดังนี้
พอมีวีธีข้ามการทำงานส่วนนี้ไปก่อนไหมครับ เหมือนในแบบ vba เราก็พิมพ์ "error resume next" จนกว่าเราจะกรอกชื่อหุ้นได้ถูกต้องก่อน
snasui_error.JPG
แต่คำถามที่ผมต้องไปหาจากเว็ปต่างประเทศก็คือ การที่คลิกที่ชื่อหุ้นแล้วให้ excel สร้างกราฟขึ้นมาได้เองเลย คำถามนี้ผมก็ยังไม่สามารถหาคำตอบที่แน่ชัดได้ว่าทำได้หรือไม่ครับ มีโพสใน stackoverflow ก็ยังไม่มีผู้รู้คนไหนมาตอบได้แน่ชัดเลยครับ ส่วนใหญ่ก็บอกทำนองว่า ต้องใช้ active.sheet ในการทำงานบ้างอะไรแบบนี้ครับ
รบกวนอาจารย์ชี้แนะคำถามส่วนนี้ให้ด้วยครับว่าทำได้จริงหรือไม่
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ต้องการให้excelเปลี่ยนแปลงrangeที่เลือกไว้สำหรับplotได้เองครับ

#4

Post by snasui »

adamjensen wrote:การที่คลิกที่ชื่อหุ้นแล้วให้ excel สร้างกราฟขึ้นมาได้เองเลย คำถามนี้ผมก็ยังไม่สามารถหาคำตอบที่แน่ชัดได้ว่าทำได้หรือไม่ครับ
:D สามารถทำได้ด้วย VBA โดยใช้ Event Change เมื่อคลิกชื่อหุ้นแล้วแล้วชื่อหุ้นไปแสดงที่ D1 เป็นวิธีการที่ไม่ยาก ลองศึกษาและเขียนมาเองก่อน ติดตรงไหนค่อยถามกันต่อครับ
Post Reply