: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 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Excel VBA ในการดึงข้อมูลแต่ละเดือนไปยังอีกไฟล์ที่มีเดือนตรงกัน

Re: Excel VBA ในการดึงข้อมูลแต่ละเดือนไปยังอีกไฟล์ที่มีเดือนตรงกัน

#14

by mistertenshi » Fri Aug 24, 2018 10:43 am

ขอขอบคุณ อาจารย์ parakorn มากเลยครับ ที่มาอธิบายให้ผมเข้าใจมากขึ้นในส่วนนี้

Re: Excel VBA ในการดึงข้อมูลแต่ละเดือนไปยังอีกไฟล์ที่มีเดือนตรงกัน

#13

by parakorn » Fri Aug 24, 2018 10:19 am

--(ISNUMBER(SEARCH("A",[Data_Test.xlsx]Sheet1!$BY$3:$BY$396))) คือการค้นหาว่า บรรทัดไหนมีตัว A บ้าง แล้วเปลี่ยนเป็นค่า TRUE FALSE ด้วยสูตร ISNUMBER ครับ แล้วใช้ -- เปลี่ยน TRUE เป็น 1 เปลี่ยน FALSE เป็น 0

INDEX([Data_Test.xlsx]Sheet1!$N$3:$BI$396,0,MATCH(LOOKUP(9.99999999999999E+307,$E$4:E$4),[Data_Test.xlsx]Sheet1!$N$1:$BI$1,0)+1) คือการเลือกข้อมูลในช่วง [Data_Test.xlsx]Sheet1!$N$3:$BI$396 ที่มีหัว Column เป็นเดือนที่ตรงกับ หัวตารางในชีต EST ครับ การที่อาจารย์ใช้ MATCH ตามด้วย LOOKUP เพราะการอ้างอิง Cell ที่ Merge ไม่สามารถอ้างอิงได้ทุก Cell เช่นว่า Merge Cell E4 ถึง G4 แต่ถ้าเราต้องการอ้างอิงข้อมูลจะสามารถอ้างอิงได้แค่ E4 สูตร LOOKUP(9.99999999999999E+307,$E$4:E$4) จึงเป็นการขยายการอ้างอิงช่วงข้อมูลเรื่อยๆ โดยเริ่มตั้งแต่ E4 เป็นต้นไป ถ้าพบข้อความล่าสุดคือข้อความใด จะนำข้อความนั้นมาอ้างอิง ดังนั้นจึงตอบโจทย์ เมื่ออ้างอิง F4 G4 สูตร LOOKUP จะนำ E4 มาอ้างอิง แต่เมื่อ Copy ไปทางขวาต่อ ไปพบข้อความที่ H4 ดังนั้น H4 ถึง I4 จะนำข้อมูลจาก H4 มาอ้างอิง

หลังจากได้ผลลัพท์ทั้ง 3 Array แล้ว สูตร Sumproduct จะนำมาคูณกัน

Array ที่ 1 คือ --([Data_Test.xlsx]Sheet1!$BT$3:$BT$396="g") จะคืนค่าเป็น 0 หรือ 1 กรณีบรรทัดนั้นตรงเงื่อนไข
Array ที่ 2 คือ --(ISNUMBER(SEARCH("A",[Data_Test.xlsx]Sheet1!$BY$3:$BY$396))) จะคืนค่าเป็น 0 หรือ 1 กรณีบรรทัดนั้นตรงเงื่อนไขเช่นกัน
Array ที่ 3 คือ INDEX([Data_Test.xlsx]Sheet1!$N$3:$BI$396,0,MATCH(LOOKUP(9.99999999999999E+307,$E$4:E$4),[Data_Test.xlsx]Sheet1!$N$1:$BI$1,0)+1) จะได้เป็นยอดที่มีหัว Column ตรงกับเงื่อนไข

นำทั้ง 3 Array มาคูณกับ Array อื่นๆ (ถ้าผลลัพท์ใดๆคูณด้วย 0 จะได้0) แล้วนำมารวมกันจะได้เป็นผลลัพท์ครับ

Re: Excel VBA ในการดึงข้อมูลแต่ละเดือนไปยังอีกไฟล์ที่มีเดือนตรงกัน

#12

by mistertenshi » Fri Aug 24, 2018 8:44 am

ได้ผลตามที่ต้องการครับ ขอบคุณอาจารย์ คนควน มากครับ :thup:

จะสอบถามเพิ่มเติ่มเกี่ยวกับกรณีที่ ต้องใช้ในการดึงข้อมูลจากไฟล์อื่นนอกจากไฟล์นี้ครับ
เพราะจำเป็นต้องดึงข้อมูลออกมาโดยวิธีเดิมๆแต่ไฟล์ต้นทางที่ต้องดึงออกมา จำเป็นต้องเปลี่ยนไปเรื่อยๆครับ
รบกวนอาจารย์ ช่วยอธิบายขั้นตอนคิดของสูตร
=SUMPRODUCT(--([Data_Test.xlsx]Sheet1!$BT$3:$BT$396="g"),--(ISNUMBER(SEARCH("A",[Data_Test.xlsx]Sheet1!$BY$3:$BY$396))),INDEX([Data_Test.xlsx]Sheet1!$N$3:$BI$396,0,MATCH(LOOKUP(9.99999999999999E+307,$E$4:E$4),[Data_Test.xlsx]Sheet1!$N$1:$BI$1,0)+1))*1000000

ตั้งแต่ --(ISNUMBER(SEARCH("A",[Data_Test.xlsx]Sheet1!$BY$3:$BY$396))),INDEX([Data_Test.xlsx]Sheet1!$N$3:$BI$396,0,MATCH(LOOKUP(9.99999999999999E+307,$E$4:E$4),[Data_Test.xlsx]Sheet1!$N$1:$BI$1,0)+1))*1000000
ทำไมถึงต้องเป็น -- แล้วMATCH(LOOKUP9.99999999999999E+307 หมายความว่าอะไรครับ :?:

Re: Excel VBA ในการดึงข้อมูลแต่ละเดือนไปยังอีกไฟล์ที่มีเดือนตรงกัน

#11

by snasui » Thu Aug 23, 2018 8:56 pm

:D ตัวอย่างสูตรที่เซลล์ E6 ครับ

=SUMPRODUCT(--([Data_Test.xlsx]Sheet1!$BT$3:$BT$396="g"),--(ISNUMBER(SEARCH("A",[Data_Test.xlsx]Sheet1!$BY$3:$BY$396))),INDEX([Data_Test.xlsx]Sheet1!$N$3:$BI$396,0,MATCH(LOOKUP(9.99999999999999E+307,$E$4:E$4),[Data_Test.xlsx]Sheet1!$N$1:$BI$1,0)+1))*1000000

Enter > คัดลอกไปด้านขวาเฉพาะเซลล์ที่เกี่ยวข้อง

กรณีเป็น Rank อื่นจะต้องอธิบายมาอย่างละเอียดเช่นเดิมว่ามีวิธีคิดอย่างไรจะได้เขียนสูตรเปรียบเทียบได้ครับ

Re: Excel VBA ในการดึงข้อมูลแต่ละเดือนไปยังอีกไฟล์ที่มีเดือนตรงกัน

#10

by mistertenshi » Thu Aug 23, 2018 8:14 am

เซลล์ E6 ใน sheet EST ในไฟล์ Sum_Data.xlsm มาจาก การใช้ Filter ของ OGC ให้โชว์แค่ตัว g และ Filter Rank ให้โชว์แค่ A และ A B/S แล้วใช้สูตร Subtotal ในเดือน เม.ย.-18 ของช่อง EST โดยสูตร Subtotal นี้คลุมเซลล์ทั้งหมดในช่อง EST ของเดือน เม.ย.-18 ครับ และนำค่านั้นมาคูณด้วย 1,000,000 ครับ จึงได้ค่า 1,785,130 จากไฟล์ที่ชื่อว่า Data_Test.xlsx

Re: Excel VBA ในการดึงข้อมูลแต่ละเดือนไปยังอีกไฟล์ที่มีเดือนตรงกัน

#9

by snasui » Wed Aug 22, 2018 8:08 pm

:D ค่อย ๆ ถามตอบกันไปครับ

เซลล์ E6 ในชีต EST ของไฟล์ Sum_Data.xlsm มีค่า 1785130 นำมาจากเซลล์ไหนของไฟล์ต้นทางบ้าง พิจารณาอย่างไรว่าให้นำค่านั้นมาครับ :?:

Re: Excel VBA ในการดึงข้อมูลแต่ละเดือนไปยังอีกไฟล์ที่มีเดือนตรงกัน

#8

by mistertenshi » Wed Aug 22, 2018 8:00 am

นี่ตัวอย่างไฟล์ครับ
Attachments
Data_Test.xlsx
ไฟล์ต้น
(188.04 KiB) Downloaded 10 times
Sum_Data.xlsm
ไฟล์ปลายทาง
(428.06 KiB) Downloaded 9 times

Re: Excel VBA ในการดึงข้อมูลแต่ละเดือนไปยังอีกไฟล์ที่มีเดือนตรงกัน

#7

by mistertenshi » Wed Aug 22, 2018 7:59 am

สิ่งที่ต้องการคือ การดึงข้อมูลเงิน EST ที่แยก OGC Rank เป็นกลุ่มๆของแต่ละเดือน และ PL จากไฟล์ต้นทางหรือไฟล์ Data_Test.xlsx ไปยังไฟล์ปลายทางหรือไฟล์ Sum_Data.xlsm ที่มีหมวดหมู่ Rank , OGC / IH ในแต่ละเดือนให้ตรงกัน ครับ โดยมีข้อแม้คือข้อมูล EST ที่ถูกดึงมาจากไฟล์ต้นคือ Data_Test.xlsx จำนวนเงินที่ถูกดึงออกมาจำเป็นต้อง คูณ 1,000,000 ก่อนครับแล้วค่อยนำไปใส่ยังไฟล์ปลายทางหรือไฟล์ Sum_Data.xlsm ตาม หมวดหมู่และเดือน
Attachments
ผลลัพธ์ตัวอย่างครับ ข้อมูลเงินที่ถูกคำนวณแล้วตาม Rank ตามเดือนและ ตาม OGC กับ IH ครับ
ผลลัพธ์ตัวอย่างครับ ข้อมูลเงินที่ถูกคำนวณแล้วตาม Rank ตามเดือนและ ตาม OGC กับ IH ครับ
data.PNG (46.23 KiB) Viewed 118 times
ไฟล์ต้นที่ต้องการดึงข้อมูลในแต่ละเดือนโดยต้องข้อมูลจาก EST
ไฟล์ต้นที่ต้องการดึงข้อมูลในแต่ละเดือนโดยต้องข้อมูลจาก EST
sales1.PNG (17.14 KiB) Viewed 118 times
ไฟล์ต้นที่มีหมวดหมูโดยใช้ OGC และ Rank เป็นตัวแบ่ง และ PL
ไฟล์ต้นที่มีหมวดหมูโดยใช้ OGC และ Rank เป็นตัวแบ่ง และ PL
sales2.PNG (24.01 KiB) Viewed 118 times

Re: Excel VBA ในการดึงข้อมูลแต่ละเดือนไปยังอีกไฟล์ที่มีเดือนตรงกัน

#6

by snasui » Tue Aug 21, 2018 8:19 pm

:D ไฟล์ปลายทางต้องการนำข้อมูลใดจากไฟล์ต้นทางมาบ้าง ช่วยแสดงตัวอย่างคำตอบที่ถูกต้องมาด้วย จะได้คำนวณเปรียบเทียบได้

สำหรับไฟล์ที่แนบมานั้นเป็นวิธีการใช้งานโปรแกรม ซึ่งมีการเขียน Code ไว้ให้เรียบร้อยแล้ว กรณีมีปัญหาควรนำไปถามจากผู้ที่เขียน VBA หรือหากยังแก้ไม่ได้ให้ผู้ที่เขียน VBA มาถามเองจะสะดวกกว่าครับ

Re: Excel VBA ในการดึงข้อมูลแต่ละเดือนไปยังอีกไฟล์ที่มีเดือนตรงกัน

#5

by mistertenshi » Tue Aug 21, 2018 7:47 pm

สิ่งที่ผมต้องการคือ พอจะมีคำสั่งหรือมีวิธีในการดึงข้อมูลจากเดือนนึงไปยังอีกอีกไฟล์ ที่มีเดือนเหมือนกัน ได้มั้ยครับ ถ้ามีก็อยากทราบครับว่าใช้วิธีไหนอย่างไรครับ เพราะถ้าจำเป็นต้องใช้ VBA ผมไม่มีเวลามากในการทำงานชิ้นนี้ครับ

Re: Excel VBA ในการดึงข้อมูลแต่ละเดือนไปยังอีกไฟล์ที่มีเดือนตรงกัน

#4

by snasui » Tue Aug 21, 2018 7:40 pm

:D กรุณานำ Code ที่เขียนเองแล้วยังติดปัญหามาถามกัน กรณีไม่มีความรู้ยังไม่ควรใช้ VBA จำเป็นต้องศึกษามาเองก่อนตามบำดับ หากเขียนมาแล้วให้ปฏิบัติตามกฎการใช้บอร์ดข้อ 5 ด้านบนครับ :roll:

Re: Excel VBA ในการดึงข้อมูลแต่ละเดือนไปยังอีกไฟล์ที่มีเดือนตรงกัน

#3

by mistertenshi » Tue Aug 21, 2018 6:55 pm

ที่ผมเขียนมาทั้งหมดคือเป็นการเลือกไฟล์ที่ต้องการแล้ว Copy Data ออกมาคำนวณใหม่แล้วค่อยนำค่าที่คำนวณแล้วนั้นไปวางไว้ในไฟล์ปลายทางครับ
Attachments
Data_Test.xlsx
ไฟล์ที่ต้องการดึง
(180.86 KiB) Downloaded 9 times
Sum_Data.xlsm
ไฟล์ปลายทาง
(473.71 KiB) Downloaded 9 times
วิธีการ Run Macro.docx
วิธีการใช้งาน
(463.79 KiB) Downloaded 9 times

Re: Excel VBA ในการดึงข้อมูลแต่ละเดือนไปยังอีกไฟล์ที่มีเดือนตรงกัน

#2

by parakorn » Tue Aug 21, 2018 4:29 pm

แนบไฟล์ตัวอย่างมาด้วย ทุกคนจะได้เข้าถึงปัญหาและทดลองทำได้ครับ

Excel VBA ในการดึงข้อมูลแต่ละเดือนไปยังอีกไฟล์ที่มีเดือนตรงกัน

#1

by mistertenshi » Tue Aug 21, 2018 3:25 pm

Excel VBA สามารถที่จะดึงข้อมูลที่ติด Filter Criteria ในแต่ละเดือนไปยังอีกไฟล์ที่เป็นเดือนเดียวกันได้มั้ยครับ และถ้าทำได้จำเป็นต้องใช้วิธีไหนบ้างครับ

ปล.ผมแทบไม่มีความรู้ทางด้าน VBA Macro เลยครับ
Attachments
ไฟล์ข้อมูลที่ต้องการดึง ที่วงกลมแดงคือเดือนต่างๆที่ต้องการดึงข้อมูล
ไฟล์ข้อมูลที่ต้องการดึง ที่วงกลมแดงคือเดือนต่างๆที่ต้องการดึงข้อมูล
Capture.PNG (115.18 KiB) Viewed 145 times
ไฟล์ปลายทางที่จะดึงมาใส่
ไฟล์ปลายทางที่จะดึงมาใส่
asd.PNG (30.55 KiB) Viewed 145 times

Top