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

macro recordbill แยก Deposit ขอบคุณครับ

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

macro recordbill แยก Deposit ขอบคุณครับ

#1

Post by godman »

จากโค้ตนี้ ผมรู้สึกว่ามันจะเอาข้อมูลจาก Template ทั้ง 12 แถวแต่ถ้าผมจะทำให้มันนับจำนวนข้อมูลแถวที่จะเอาเป็น CASE ไปผมต้องปรับเปลี่ยน macro นี้อย่างไรครับ สมมุติว่า cell n1 คือนับจำนวนแถวที่จะเอา ต้องขอขอบคุณผู้แบ่งปัน Record Bill ครับเพราะผมสามารถนำมาใช้ในลักษณะงานของผมต่อไปได้ ผมกำลังต้องาารให้ macro ทำแบบนี้พอดีเลย

Code: Select all

Sub RecordTraining()
Dim rs As Range, rt As Range
Dim rs1 As Range, rt1 As Range
Dim i As Integer
Worksheets("Form1").Range("L1") _
    = Application.Max(Worksheets("Database") _
        .Range("C:C")) + 1
With Worksheets("Template")
    i = Application.CountIf( _
        .Range("M3:M15"), ">0")
    Set rs = .Range("A2:M" & 12 + i)
    Set rs1 = .Range("A21:K21")
End With
    Set rt = Worksheets("Database") _
        .Range("A65536").End(xlUp).Offset(1, 0)
    Set rt1 = Worksheets("Score") _
        .Range("A65536").End(xlUp).Offset(1, 0)
    rs.Copy
    rt.PasteSpecial xlPasteValues
    rs1.Copy
    rt1.PasteSpecial xlPasteValues
    Application.CutCopyMode = False
MsgBox "Finish"
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: macro recordbill แยก Deposit ขอบคุณครับ

#2

Post by snasui »

:D อ่านดูแล้วเข้าใจว่าเป็นการนำข้อมูลโดยเลือกเฉพาะค่าที่ต้องการ หากเป็นเช่นนั้นจะต้องปรับ Code ใหม่เพื่อให้ Loop ครับ ควรมีตัวอย่างเงื่อนไขและตัวอย่างข้อมูลประกอบเพื่อสะดวกในการเขียน Code ครับ
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: macro recordbill แยก Deposit ขอบคุณครับ

#3

Post by godman »

ขอโทษครับ ผมไม่ได้ส่งไฟล์ไป นี่คือไฟล์ตัวอย่างครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: macro recordbill แยก Deposit ขอบคุณครับ

#4

Post by snasui »

:D ช่วยอธิบายเงื่อนไขด้วยครับว่าการเอาบรรทัดต่าง ๆ ไปนั้นโดยดูเงื่อนในคอลัมน์ใด เซลล์ใด อย่างไร ยกตัวอย่างเช่นต้องเป็น True ทั้ง 3 ช่องหรือ ฯลฯ
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: macro recordbill แยก Deposit ขอบคุณครับ

#5

Post by godman »

เอาเฉพาะข้อมูลใน sheet template ที่มีชื่อ ทักษะ J1-J11 เป็นตัวกำหนด ครับ จะเห็นว่ามันมีข้อมูลที่ดึงมาคือ J1-J15 แต่ผมไม่ต้องการ J12-J15 คือสนใจเฉพาะข้อมูลที่มีความหมายครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: macro recordbill แยก Deposit ขอบคุณครับ

#6

Post by snasui »

:D เอาเป็นว่าถามไปตอบไปแล้วกันครับ ตามโจทย์ที่ถามมาทำดังนี้ครับ

1. ที่ชีท Template เซลล์ N1 คีย์เพื่อนับว่าจะต้องนำไปใช้กี่บรรทัด

=COUNTIF(J2:J15,"*?")+1

Enter

2. ตัวอย่างการเปลี่ยน Code สำหรับการ Copy ข้อมูลตามด้านล่าง

Code: Select all

With Worksheets("Template")
    i = Application.CountIf( _
        .Range("M3:M15"), ">0")
    Set rs = .Range("A2:H" & .Range("N1"))
    Set rs1 = .Range("A21:K21")
End With
3. Code ไม่ควรวางอยู่ที่ ThisWorkbook ให้นำไปวางที่ Module ปกติครับ การสร้าง Module ปกติให้คลิกเมนู Insert > Module
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: macro recordbill แยก Deposit ขอบคุณครับ

#7

Post by godman »

ขอบพระคุณมากครับใช้ได้แล้วครับ
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: macro recordbill แยก Deposit ขอบคุณครับ

#8

Post by godman »

อาจารญครับจาก โค้ดนี้ ถ้าเราจะเอาข้อมูลโดยเลือกเฉพาะค่าที่ต้องการ ในส่วนที่ A21:K21 ถ้าผมเปลี่ยนเป็นจะเอา A21:K25 คือเอา 5 แถวแต่เราต้องการให้มันยืดหยุ่น ถ้าไม่มีข้อมูลในแถวที่เหลือ ก็ไม่ต้องเอาไปจะได้ไม่ต้องไปคอยลบในดาต้า คล้ายๆจะกำหนด rang ใน rs1 เราจะต้องเปลี่ยน macro อย่างไรบ้างครับ

Code: Select all

With Worksheets("Template")
    i = Application.CountIf( _
        .Range("M3:M15"), ">0")
    Set rs = .Range("A2:H" & .Range("N1"))
    Set rs1 = .Range("A21:K21")
End With
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: macro recordbill แยก Deposit ขอบคุณครับ

#9

Post by snasui »

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

1. ที่ชีท Template เซลล์ A19 คีย์สูตร

=COUNTIF(A21:A65536,"<>")

2. เปลี่ยน code เป็นตามด้านล่าง

Code: Select all

With Worksheets("Template")
    i = Application.CountIf( _
        .Range("M3:M15"), ">0")
    Set rs = .Range("A2:M" & 12 + i)
    Set rs1 = .Range("A21:K" & 21 + .Range("A19") - 1)
End With
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: macro recordbill แยก Deposit ขอบคุณครับ

#10

Post by godman »

อาจารย์ครบ ขอบคุณครับ วันนี้ผมทำไฟล์เพื่อจัดการกับ manpower planing based on skill performance ทัังวันเลย แต่ว่ามาตายตอนจบ เพราะผมเล่น ลิ้งข้อมูลมาจาก 5 แหล่งในหลากหลายโฟลเดอรื เครื่องไม่ทำงานเลยครับ รอเป็นชั่วโมง เครียดมากเลยครับ อาจารย์พอมีคำแนะนำไหมครับ คร้นจะให้คนกรอกข้อมูลมาใช้ไฟล์เดียวกันก็เกรงว่าจะไม่ได้เพราะอยู่คนละแผนกกันและไฟล์มันก็ใช้ได้ทีละคนครับ ทำไมไฟล์งานผมจึงทำงานช้ายังกับเต่าเป็นช่วโมงก็ยังไม่ update ให้ ผมใช้ 2007 ครบ
อ๋อ คำว่า ครบ นี่หมายถึง ครับ นะครับ คีย์บอร์ดมันไกล้จะพัังแล้ว
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: macro recordbill แยก Deposit ขอบคุณครับ

#11

Post by snasui »

:D ปกติการ Link หลาย Folder ก็ไม่ได้ทำให้ไฟล์ทำงานช้า เว้นเสียแต่ว่าไฟล์มีสูตรจำนวนมาก ยิ่งเป็นสูตร Vlookup แบบตรงตัวก็จะยิ่งคำนวณช้า อันที่จริง Excel 2007 ก็ได้ปรับให้คำนวณเร็วขึ้นสำหรับกรณีนี้แล้ว การคำนวณช้าเป็นชั่วโมงแสดงว่าไม่ปกติแล้วครับ ไม่ทราบว่าในไฟล์ทั้งหลายที่เชื่อมโยงกันมีสูตรซับซ้อนจำนวนมากหรือไม่ครับ

นอกจากนั้นแล้วก็ให้สังเกตว่าได้เปิดโปรแกรมไว้หลายโปรแกรมหรือไม่เพราะอาจจะเป็นการแบ่ง Memory ไปใช้ ทำให้ Excel ใช้ไม่พอ จากประสบการณ์สำหรับเรื่องการ Link ไฟล์จากหลายไฟล์หลาย Folder ก็มีปัญหาว่าช้าบ้างแต่ไม่ช้าถึงขนาดนั้น ผมเปิดไฟล์ทำงานแต่ละครั้งนับสามสิบไฟล์พร้อม ๆ กัน ทั้งมีการ Link ระหว่างไฟล์จำนวนมาก มีสูตรหลากหลายยากง่ายแตกต่างกันไปก็ยังทำงานได้ครับ
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: macro recordbill แยก Deposit ขอบคุณครับ

#12

Post by godman »

ใช่ ผมใช้สูตรมากจริงๆ เช่นสูตรดึงข้อมูลทั้ง sheet เช่น if(isnumber(search)...lookup(9.9999999 ) แต่ผมเลือกท้งฟิลล์ ไม่รู้ว่ามีผลหรือไม่ แล้วก็ index matxh match ก็ใช้เยอะมาก ครับ ไม่ทราบว่าสิ่งเหล่าน้มีผลทำให้ช้า หรือไม่
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: macro recordbill แยก Deposit ขอบคุณครับ

#13

Post by snasui »

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

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

กรณีการใช้สูตรแบบเผื่อช่วงข้อมูลกับการกำหนดช่วงข้อมูลเพียงเท่าที่มี ยกตัวอย่างอย่างเช่น

=Vlookup(A1,A:Z,10,0) กับ Vlookup(A1,A1:Z1000,10,0) ให้ความเร็วที่ต่างกันอย่างมาก

นอกจากนี้การใช้สูตรซ้ำ ๆ กันควรแยกออกมาต่างหาก ยกตัวอย่างเช่น

=Index(A:A,Match(Today()+B1,B:B,0)) แล้ว Copy ลงไปจำนวนมาก จะต่างกับ =Index(A:A,Match($C$1+B1,B:B,0)) ความเร็วจะต่างกันอย่างมากมายมหาศาล สำหรับกรณีที่สองเป็นการคี่ย์ Today() ไว้ที่ C1 แล้วค่อยนำไปใช้ ส่วนกรณีแรกเป็นการคีย์สูตร Today() ทุกสูตร

ฟังก์ชั่น Today และอื่น ๆ อีกมากมายเป็น Volatile Function คือถูกกระทบให้เปลี่ยนแปลงได้โดยง่าย แม้การขยับความกว้างเซลล์ใด ๆ ก็คำนวณทันที หากใช้จำนวนมากทำให้การคำนวณช้ามาก Volatile ฟังก์ชั่นสามารถดูเพิ่มเติมจากที่นี่ครับ http://www.decisionmodels.com/calcsecretsi.htm
godman
Silver
Silver
Posts: 643
Joined: Mon Jul 05, 2010 6:18 pm

Re: macro recordbill แยก Deposit ขอบคุณครับ

#14

Post by godman »

รู้ไหมครับ ว่าเวบของอาจารย์เปลี่ยนชีวิตผม ผมกลายเป็นคน crazy excel ขั้นบ้า กลับจากงานที่โรงงานมา ก็ต้องมาตามดูว่าคนอื่นกระทู้เรื่องอะไรบ้างแล้วก็น่ง load ไปศีกษา ขอบคุณมากครับ หวีงว่าผมจะเก่งได้ซัก 10 เปอร์เซนของอาจารญ์ก็พอ มันช่วยลดเวลาทำงานผมได้มากมาย ผมทำงานเสร้๗เร็วมาก ครับ
Post Reply