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

สอบถามการทำ Professional Macro Recording

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: สอบถามการทำ Professional Macro Recording

Re: สอบถามการทำ Professional Macro Recording

#23

by snasui » Mon Jun 25, 2018 7:53 pm

:D การแนบ Code ให้อ่านกฎการใช้บอร์ดข้อ 5 ด้านบนครับ

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

Re: สอบถามการทำ Professional Macro Recording

#22

by sakajohn » Sun Jun 24, 2018 9:01 pm

สอบถามเพิ่มเติมครับ ผมต้องการให้ CODE VBA รัน LOOP ไปเรื่อยๆ จนกว่าจะเจอค่า cell ว่างครับ แต่ตอนนี้ สูตรถูก กำหนดให้เริ่มที่ เซล
R10C30 ครับ ผมอยากให้การวน loop ครั้งที่2 ถ้าไม่เจอค่าวาง ให้เริ่มที่ เซล R11C30 แฃ้งไล่ลงมาเรื่อยๆครับ
Dim row As Integer
row = 10
Do While Cells(row, 30).Value <> ""
Application.Goto Reference:="OFFSET(R10C30,0,0,1,31)"
Selection.Copy
Workbooks.Open Filename:="\\ACCOUNT\Data (D)\SALE\SaleData.xlsx"
ThisWorkbook.Activate
Application.Goto Reference:= _
"OFFSET('[SaleData.xlsx]RAT'!R1C1,MATCH(R10C30,INDEX('[SaleData.xlsx]RAT'!R2C1:R50000C1,0),0),0)"
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWorkbook.Close

row = row + 1
Loop
ThisWorkbook.Saved = True
ThisWorkbook.Close

End Sub

Re: สอบถามการทำ Professional Macro Recording

#21

by snasui » Sat Jun 23, 2018 6:39 am

sakajohn wrote: Fri Jun 22, 2018 10:35 pm OFFSET(R9C30,1,0,
:D เปลี่ยนเป็น OFFSET(R9C30,1,0, ครับ

Re: สอบถามการทำ Professional Macro Recording

#20

by sakajohn » Fri Jun 22, 2018 10:35 pm

"OFFSET(R9C30,1,0,COUNTIF(C34,"">0""),COUNTA(R9))"
codeนี้ผมได้มาจากการบันทึกมาโคร ใช้ F5 ครับ ถ้าผมต้องการให้ไปทางขวา 30 คอลัมภ์ ต้องเปลี่ยนcode อย่างไรครับ

Re: สอบถามการทำ Professional Macro Recording

#19

by snasui » Fri Jun 22, 2018 10:21 pm

😀 ผมตอบไปในโพสต์ที่ #15 เรียบร้อยแล้วครับ

คำว่าทำด้วย Manual คือทำเองด้วยมือ 😆

Re: สอบถามการทำ Professional Macro Recording

#18

by sakajohn » Fri Jun 22, 2018 9:49 pm

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

Re: สอบถามการทำ Professional Macro Recording

#17

by snasui » Fri Jun 22, 2018 9:22 pm

:D ผมตอบไปอย่างละเอียดแล้วในโพสต์ที่ #13 ไม่เข้าใจประเด็นใดครับ :?:

Re: สอบถามการทำ Professional Macro Recording

#16

by sakajohn » Fri Jun 22, 2018 9:00 pm

รบกวนอาจารย์ช่วยแนะนำได้มั้ยครับ ผมติดตรงนี้ครับ พอเขียนเป็น VBA ก็แชร์ไม่ได้ครับ

Re: สอบถามการทำ Professional Macro Recording

#15

by snasui » Fri Jun 22, 2018 6:35 pm

:D สำหรับการคัดลอกแล้ววางเป็นค่าทำด้วย Manual ได้ครับ

ไฟล์ที่ Shared ไม่สามารถใช้ VBA ได้ครับ

Re: สอบถามการทำ Professional Macro Recording

#14

by sakajohn » Fri Jun 22, 2018 1:01 pm

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

Re: สอบถามการทำ Professional Macro Recording

#13

by snasui » Thu Jun 21, 2018 10:28 pm

:D การใช้สูตรกับข้อมูลจำนวนมากย่อมส่งผลให้คำนวณช้าเป็นปกติอยู่แล้ว ส่วนจะช้าแค่ไหนขึ้นอยู่กับทรัพยกรของเครื่องนั้นครับ

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

อีกวิธีก็เป็นการใช้ VBA ครับ wordpress/search-multiple-sheets/

Re: สอบถามการทำ Professional Macro Recording

#12

by sakajohn » Thu Jun 21, 2018 10:16 pm

วิธีนี้ถ้าเราcopyสูตรไว้เพื่อรอข้อมูลประมาณ 10000 บรรทัด มันจะช้าหรือเปล่าครับ ถ้าช้าเราจะมีวิธีอื่นมั้ยครับ

Re: สอบถามการทำ Professional Macro Recording

#11

by snasui » Thu Jun 21, 2018 9:50 pm

:D ปรับสูตรที่ A2 ใหม่ตามด้านล่างครับ

=IF($E2<>"",OFFSET(INDIRECT("'"&$E2&"'!A2"),COUNTIF($E$2:$E2,$E2)-1,COLUMNS($A2:A2)-1),"")

Enter > Copy ไปด้านขวาและลงด้านล่าง

Re: สอบถามการทำ Professional Macro Recording

#10

by sakajohn » Thu Jun 21, 2018 9:42 pm

ผมลองวางแล้วเป็นตามไฟล์แนบครับ รบกวนถามต่อครับ นอกจากวิธีเขียนสูรเพื่อให้คัดลอกข้อมูลมาวางแล้ว มีวิธีอื่นที่จะทำแบบนี้กับข้อมูลที่มีจำนวนเยอะๆมั้ยครับ เช่น เขียน code vba ครับ ถ้ามีช่วยแนะนำแนวทางด้วยครับจะได้ไปลองเขียนดูครับ
Attachments
SaleData.xlsx
(12.36 KiB) Downloaded 2 times

Re: สอบถามการทำ Professional Macro Recording

#9

by snasui » Thu Jun 21, 2018 7:13 pm

:D แนบไฟล์นั้นมาด้วยแล้วชี้ให้เห็นว่าผิดพลาดตรงไหน อย่างไร จะได้ตอบต่อไปจากนั้นครับ

Re: สอบถามการทำ Professional Macro Recording

#8

by sakajohn » Thu Jun 21, 2018 3:48 pm

อาจารย์ครับ copy ไปแล้วครับ ค่าที่ A3 มันเหมือนกับค่า A2 เลยครับ มันไม่ได้เปลี่ยนตามครับ

Re: สอบถามการทำ Professional Macro Recording

#7

by snasui » Wed Jun 20, 2018 7:44 pm

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

=IF($E2<>"",OFFSET(INDIRECT("'"&$E2&"'!A2"),ROWS($A2:A2)-1,COLUMNS($A2:A2)-1),"")

Enter > Copy ไปด้านขวาและลงด้านล่าง สูตรลักษณะนี้หากใช้มากจะทำให้ไฟล์คำนวณช้าครับ

Re: สอบถามการทำ Professional Macro Recording

#6

by sakajohn » Wed Jun 20, 2018 4:25 pm

อาจารย์ครับรบกวนสอบถามเพิ่มเติมครับ ที่ไฟล์ SaleData.xlsx มี sheet Sale1, Sale2, DATA ที่ Sheet DATA ทำหน้าที่รวมข้อมูลใน Sale1และSale2 มาต่อเรียงลำดับกันครับ ถ้าจำนวนไม่มากทำงานเร็วครับ แต่ถ้า copy สูตรไว้ประมาณ 5,000 บรรทัด โปรแกรมจะทำงานช้าครับ มีวิธีอื่นแนะนำบ้างมั้ยครับ
Attachments
SaleData.xlsx
(11.26 KiB) Downloaded 5 times

Re: สอบถามการทำ Professional Macro Recording

#5

by sakajohn » Tue Jun 19, 2018 9:47 pm

ขอบคุณครับอาจารย์

Re: สอบถามการทำ Professional Macro Recording

#4

by snasui » Tue Jun 19, 2018 8:15 pm

:D ตัวอย่างการปรับ Code ครับ

offset([SaleData.xlsx]DATA!a1,[plannew.xlsm]Sheet1!E1,0,1,5)

Top