: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

ต้องการ copy ข้อมูลมาต่อๆ กันไปเรื่อยๆ

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

ต้องการ copy ข้อมูลมาต่อๆ กันไปเรื่อยๆ

#1

Post by March201711 »

เข่น copy ทั้งบรรทัดที่ 5:5 ไปต่อลงมาอีก 1 บรรทัด เป็นบรรทัดที่ 6 และเอาสูตรยกไปอีกบรรทัดถัดไป อยากให้โค้ดมีความยืดหยุ่นค่ะ

Code: Select all

Sub Updates()
'
' aaa Macro
'

'
    Rows("5:5").Select
    Selection.Copy
    Rows("6:6").Select
    ActiveSheet.Paste
    Rows("5:5").Select
    Range("C5").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B5").Select
    Application.CutCopyMode = False
    Range("J7").Select
    Windows("data.xlsx").Activate
    Range("C5:C8").Select
    Selection.ClearContents
    Range("C3").Select
    ActiveCell.FormulaR1C1 = "4/23/2023"
    Range("C4").Select
    Windows("Keep.xlsm").Activate
    Range("I4").Select
    
    
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการ copy ข้อมูลมาต่อๆ กันไปเรื่อยๆ

#2

Post by snasui »

:D Code สำหรับ Copy เซลล์ที่เลือกลงไปด้านล่าง 1 บรรทัดครับ

Code: Select all

Selection.Copy
Selection.Offset(1, 0).PasteSpecial xlPasteValues
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: ต้องการ copy ข้อมูลมาต่อๆ กันไปเรื่อยๆ

#3

Post by March201711 »

แล้วexcel จะรุ้ได้อย่างไรคะว่า copy บรรทัดไหน ให้เลือกจากวันที่ที่ cell A1 ได้ไหมคะ
You do not have the required permissions to view the files attached to this post.
Last edited by March201711 on Thu May 25, 2023 5:25 pm, edited 1 time in total.
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: ต้องการ copy ข้อมูลมาต่อๆ กันไปเรื่อยๆ

#4

Post by March201711 »

ปรับสูตรตามที่อาจารย์แนะนำแล้ว ก็ยังทำไม่ได้ค่ะ

แล้ว excel จะรุ้ได้อย่างไรคะว่า copy บรรทัดไหน ให้เลือกจากวันที่ที่ cell A1 ได้ไหมคะ ทำเพิ่มมาให้แล้วค่ะ ตามไฟล์แนบ
เข่น copy ทั้งบรรทัดที่ 5:5 ไปต่อลงมาอีก 1 บรรทัด เป็นบรรทัดที่ 6 และเอาสูตรยกไปอีกบรรทัดถัดไป คือ ยังอยากเอาสูตรใช้ต่อในวันต่อไปน่ะค่ะ

Code: Select all

 Sub Updates()
'
' aaa Macro
'

'
    Rows("5:5").Select
    Selection.Copy
    Selection.Offset(1, 0).PasteSpecial xlPasteValues
'    Rows("6:6").Select
'    ActiveSheet.Paste
    Rows("5:5").Select
    Range("C5").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B5").Select
    Application.CutCopyMode = False
    Range("J7").Select
    Windows("data.xlsx").Activate
    Range("C5:C8").Select
    Selection.ClearContents
    Range("C3").Select
    ActiveCell.FormulaR1C1 = "4/23/2023"
    Range("C4").Select
    Windows("Keep.xlsm").Activate
    Range("I4").Select
    
    
End Sub
 
You do not have the required permissions to view the files attached to this post.
User avatar
logic
Gold
Gold
Posts: 1506
Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365

Re: ต้องการ copy ข้อมูลมาต่อๆ กันไปเรื่อยๆ

#5

Post by logic »

บรรทัดที่ 5 ไม่มีสูตร พอคัดลอกไปบรรทัดที่ 6 กลับมีสูตร ไปเอาสูตรมาจากไหนครับ

ที่บอกว่าใช้ A1 เป็นเงื่อนไข ก็ไม่เห็นมีบรรทัดไหนตรงกับค่าใน A1 :flw:
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: ต้องการ copy ข้อมูลมาต่อๆ กันไปเรื่อยๆ

#6

Post by March201711 »

ที่ให้เลือกตรงกับ a1 เพราะให้บรรทัดหาค่าตรงกับa5 เพื่อให้เลือกว่าเป็นแถวที่5 ค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการ copy ข้อมูลมาต่อๆ กันไปเรื่อยๆ

#7

Post by snasui »

:D จากภาพ A1 ไม่มีอยู่ในข้อมูลด้านล่างครับ

กรุณาเขียนเงื่อนไขมาอีกรอบ อธิบายวิธีคิดในการทำงานนี้มาให้เพื่อน ๆ ได้ทราบด้วยจะได้เข้าใจตรงกัน

เมื่อ Code มีอยู่ใน Module แล้ว ไม่จำเป็นต้องวาง Code ลงใน Worksheet อีก แค่เขียนอธิบายว่าจากข้อมูลใดต้องการให้เป็บแบบใดด้วยเงื่อนไขใด เท่านี้ก็เป็นการเพียงพอ สิ่งสำคัญคือต้องมี Code อยู่ใน Module เสมอครับ
You do not have the required permissions to view the files attached to this post.
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: ต้องการ copy ข้อมูลมาต่อๆ กันไปเรื่อยๆ

#8

Post by March201711 »

คืออย่างนี้ค่ะ จุดประสงค์คือจะเตรียมข้อมูลที่จะ link ใน file data เพื่อรับรองข้อมูลที่มาใหม่ในวันถัดไป แต่ก็ต้องเก็บข้อมูลเป็นวันๆ ถัดลงมาก่อนน่ะค่ะ
เช่น วันนี้วันที่ 22/4/23 ข้อมูลจะเข้ามาที่ file data ที่ sheet main ที่ column C ตามวันที่ ข้อมูล high light สีเหลืองค่ะ แล้วเอามาวางที่ file Keep sheet Apr23 ซึ่งเป็นการ link ตามสูตรมาจาก file Data

พอจบวันที่ 22/4/23 แล้ว จะเตรียมไฟล์งานขึ้นวันถัดไป อยากให้ code vba copy สูตรที่ link มาจาก file data แต่ก็ยังคงเก็บข้อมูลวันที่ผ่านมาแล้วค่ะ ก็คือ copy แถวที่ 20 : 20 เพื่อจะเอาสูตรใช้ในวันถัดไปลงมาอีกบรรทัดนึง ไปวางที่ แถวที่ 21:21 แล้วทำการ paste value แถวที่ 20 : 20 เพื่อเป็นการเก็บข้อมูลน่ะค่ะ


จึงอยากให้ code vba มีความยืดหยุ่น ให้ code จับบรรทัดล่าสุดของข้อมูลมา copy แล้ว เอาสูตรที่ link จาก data มาวางในวันถัดไป โดยที่ paste value วันที่ copy เพื่อเป็นการเก็บข้อมูลเป็นวันๆๆ ต่อๆๆ กันมาค่ะ
จริงๆ ข้อมูลมีเยอะมากกเป็นวันเก่าๆ ทำให้ดูเพื่อเป็นการยกตัวอย่างน่ะค่ะ

Code: Select all

Sub Updates_new()

    Cells.Find(What:="total", After:=ActiveCell, LookIn:=xlFormulas2, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
    Selection.End(xlUp).Select
    Rows("20:20").Select
    Selection.Copy
    Rows("21:21").Select
    ActiveSheet.Paste
    Rows("20:20").Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("G23").Select
    Application.CutCopyMode = False
    
    
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการ copy ข้อมูลมาต่อๆ กันไปเรื่อยๆ

#9

Post by snasui »

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

Code: Select all

With Range("a5").End(xlDown).Resize(, 6)
    .Copy .Offset(1, 0)
    .Value = .Value
End With
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: ต้องการ copy ข้อมูลมาต่อๆ กันไปเรื่อยๆ

#10

Post by March201711 »

ได้แล้วค่ะ ช่วยอธิบาย code vba ไดเไหมคะ เพื่อไปประยุกต์ใช้อย่างอื่นต่อค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการ copy ข้อมูลมาต่อๆ กันไปเรื่อยๆ

#11

Post by snasui »

:D แปลว่าจากเซลล์ A5 ให้ลงไปบรรทัดล่างสุด จากนั้นขยายไปทางขวา 6 คอลัมน์แล้ว Copy ไปบรรทัดล่าง จากนั้นกำหนดค่าให้บรรทัดเดิมเป็นค่าคงที่ครับ
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: ต้องการ copy ข้อมูลมาต่อๆ กันไปเรื่อยๆ

#12

Post by March201711 »

เข้าใจแล้วค่ะ แต่ติดตรง code นี้

Code: Select all

  Offset(1, 0) 
คืออะไรค่ะ ถ้าลงมา 2 บรรทัด ต้องเป็น

Code: Select all

 Offset(2, 0) 
หรือค่ะ แล้ว

Code: Select all

 Offset(1, 0) 
0 คืออะไรคะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการ copy ข้อมูลมาต่อๆ กันไปเรื่อยๆ

#13

Post by snasui »

:D เลขตัวแรกใน Offset คือแนวบรรทัด เลขตัวที่สองคือแนวคอลัมน์

ถ้าเลขตัวแรกเป็นบวกหมายถึงไปยังบรรทัดล่าง ถ้าเป็นลบก็ไปในแนวทางกลับกัน
ถ้าเลขตัวที่สองเป็นบวกหมายถึงไปยังคอลัมน์ขวา ถ้าเป็นลบก็ไปในแนวทางกลับกัน
March201711
Gold
Gold
Posts: 1016
Joined: Sat Mar 11, 2017 7:01 pm
Excel Ver: 2010, 365

Re: ต้องการ copy ข้อมูลมาต่อๆ กันไปเรื่อยๆ

#14

Post by March201711 »

ค่ะ สงสัยวว่าทำไม อาจารย์ไม่มีกำหนดตัวแปรเลยหรอคะ ที่ผ่านๆ มาจะมีการกำหนดตัวแปรก่อนทุกครั้งแค่ทำไมครั้งนี้ไม่มีเลยคะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการ copy ข้อมูลมาต่อๆ กันไปเรื่อยๆ

#15

Post by snasui »

:D กำหนดตัวแปรหรือไม่อยู่มีปัจจัยพิจารณาหลายประการ เช่น
  1. ต้องเก็บค่าเอาไปใช้ในภายหลังหรือไม่ ไม่ว่าจะ Procedure ที่เขียน Code หรือต้องส่งไปคำนวณต่อใน Function หรือ Procedure หรือ Project อื่น
  2. พื้นที่ที่ต้องจัดการมีการผันแปรตามจำนวนข้อมูลหรือไม่ กรณีนี้คือเป็นพื้นที่เท่าเดิม คือ 1 บรรทัดและ 6 คอลัมน์
การเขียน VBA จำเป็นต้องศึกษาและใช้เวลามาก ที่ผ่าน ๆ มาคุณ March201711 ทำมาแค่การบันทึก Macro ซึ่งจะพบได้ด้วยตัวเองว่า ยังไม่สามารถเข้าใจในเรื่องเหล่านี้เพิ่มขึ้นได้ เพราะการบันทึก Macro มีข้อจำกัด ไม่สามารถ Loop ไม่สามารถสร้างเงื่อนไขในการตัดสินใจได้ หรือหากได้รับคำตอบที่เป็นการเขียน VBA ก็จะไม่สามารถเข้าใจได้แม้เป็น Statement ง่าย ๆ ดังนั้นควรศึกษาเพิ่มจากคู่มือหรือตำรา หรือคลิปต่าง ๆ จะช่วยให้เข้าใจสิ่งเหล่านี้ได้มากขึ้นครับ
Post Reply