Page 1 of 1
ต้องการให้excelเปลี่ยนแปลงrangeที่เลือกไว้สำหรับplotได้เองครับ
Posted: Mon Dec 25, 2017 11:36 am
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
ขอบคุณครับ
Re: ต้องการให้excelเปลี่ยนแปลงrangeที่เลือกไว้สำหรับplotได้เองครับ
Posted: Mon Dec 25, 2017 3:39 pm
by snasui

ตัวอย่างการทำกราฟให้ Dynamic ตามค่าที่เลือก ทำตามด้านล่างครับ
- สร้าง 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))
- สร้าง Range Name ชื่อ ChartHeader คลิก New > ที่ Name: คีย์ ChartData > ที่ Refers to: คีย์
=OFFSET(ChartHeader,MATCH(Set_data!$D$1,Set_data!$C$4:$C$10000,0),0)
- คลิกขวาแท่ง Chart > Select Data
ตรง Legend Entries (Series) คลิก Edit > ตรง Series values: คีย์ =excel_snasui.xlsm!ChartData
- ตรง Horizontal (Category) Axis labels คลิก Edit > ตรง Axis label range: คีย์ =excel_snasui.xlsm!ChartHeader > OK
- คลิก Text box ที่เป็นชื่อ Chart > คลิกใน Formula bar > คีย์เครื่องหมาย = แล้วเลือกเซลล์ D1 > Enter
Re: ต้องการให้excelเปลี่ยนแปลงrangeที่เลือกไว้สำหรับplotได้เองครับ
Posted: Mon Jan 01, 2018 2:39 am
by adamjensen
สวัสดีปีใหม่ครับอาจารย์ ขอโทษด้วยครับที่ตอบกลับช้า พึ่งกลับจากเที่ยวปีใหม่ ลองทำดูแล้วใช้ได้ดีเลยครับ
แต่มีปัญหานิดนึงครับ ถ้าเกิดเราพิมพ์ชื่อหุ้นลงในช่อง "D1" ผิดหรือไม่มีในฐานข้อมมูล โปรแกรมจะแจ้งเตือนขึ้นมาเป็นดังนี้
พอมีวีธีข้ามการทำงานส่วนนี้ไปก่อนไหมครับ เหมือนในแบบ vba เราก็พิมพ์ "error resume next" จนกว่าเราจะกรอกชื่อหุ้นได้ถูกต้องก่อน
snasui_error.JPG
แต่คำถามที่ผมต้องไปหาจากเว็ปต่างประเทศก็คือ การที่คลิกที่ชื่อหุ้นแล้วให้ excel สร้างกราฟขึ้นมาได้เองเลย คำถามนี้ผมก็ยังไม่สามารถหาคำตอบที่แน่ชัดได้ว่าทำได้หรือไม่ครับ มีโพสใน stackoverflow ก็ยังไม่มีผู้รู้คนไหนมาตอบได้แน่ชัดเลยครับ ส่วนใหญ่ก็บอกทำนองว่า ต้องใช้ active.sheet ในการทำงานบ้างอะไรแบบนี้ครับ
รบกวนอาจารย์ชี้แนะคำถามส่วนนี้ให้ด้วยครับว่าทำได้จริงหรือไม่
Re: ต้องการให้excelเปลี่ยนแปลงrangeที่เลือกไว้สำหรับplotได้เองครับ
Posted: Mon Jan 01, 2018 8:57 pm
by snasui
adamjensen wrote:การที่คลิกที่ชื่อหุ้นแล้วให้ excel สร้างกราฟขึ้นมาได้เองเลย คำถามนี้ผมก็ยังไม่สามารถหาคำตอบที่แน่ชัดได้ว่าทำได้หรือไม่ครับ

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