EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)Code: Select all
Sub copyunit()
Dim s As Worksheet
Dim M As Worksheet
Set M = Sheets("Main")
Dim lr As Long
For Each s In Worksheets
s.Range("A1:Y1").Copy
lr = M.Range("B" & Rows.Count).End(xlUp).Row + 1
M.Range("B5" & lr).PasteSpecial xlPasteValues
Next s
'MsgBox ("Completed")
End Sub
Code: Select all
'Other code
For Each s In Worksheets
If s.Name <> M.Name Then
s.Range("A1:Y1").Copy
lr = M.Range("c" & Rows.Count).End(xlUp).Row + 1
M.Range("B" & lr).PasteSpecial xlPasteValues
End If
Next s
'Other code
ขออนุญาตครับ เนื่องจากความผิดพลาดของผมเอง ผมได้เพิ่มแถวสูตรรวมไว้ที่แถว B32 : Z32 ทำให้copy ข้อมูลไปต่อที่แถว 32 พยายามปรับแก้แล้วครับ แต่ยังไม่ได้ รบกวนชี้แนะด้วยครับ ขอบพระคุณครับsnasui wrote: Sun Oct 22, 2023 5:27 pm ตัวอย่างการปรับ Code ครับ
Code: Select all
'Other code For Each s In Worksheets If s.Name <> M.Name Then 'ชื่อไม่ตรงกัน s.Range("A1:Y1").Copy lr = M.Range("c" & Rows.Count).End(xlUp).Row + 1 'แถวสุดท้ายที่มีข้อมูล M.Range("B" & lr).PasteSpecial xlPasteValues End If Next s 'Other code
lr = M.Range("C31").End(xlUp).Row + 1
ครับผมไปปรับแก้ที่ตำแหน่งอื่นที่ไม่ใช่ตรงนี้ครับ ขอบพระคุณครับอาจารย์snasui wrote: Sun Oct 22, 2023 9:07 pm ปรับการกำหนดค่าให้กับตัวแปร lr เป็นlr = M.Range("C31").End(xlUp).Row + 1
ครับ
Code: Select all
Sub copy_unit()
Dim s As Worksheet
Dim M As Worksheet
Set M = Sheets("Main")
Dim lr As Long
For Each s In Worksheets
If s.Name <> M.Name Then 'ชื่อไม่ตรงกัน
s.Range("A1:Z1").Copy
lr = M.Range("C34").End(xlUp).Row + 1
M.Range("B" & lr).PasteSpecial xlPasteValues
End If
Next s
'MsgBox ("Completed")
End Sub
Code: Select all
'Other code
For Each s In Worksheets
If s.Name <> M.Name Then 'ª×èÍäÁèµÃ§¡Ñ¹
s.Range("A1:Z1").Copy
lr = M.Range("C34").End(xlUp).Row + 1
if lr < 5 then lr = 5
M.Range("B" & lr).PasteSpecial Paste:=xlPasteValues
End If
Next s
'Other code
ขอบพระคุณครับอาจารย์ ผมนำไปใช้ในงานอื่นได้พอดีเลยครับsnasui wrote: Sat Mar 02, 2024 10:42 am เกิดจากหัว Report มีหลายบรรทัด มีการ Merge เอาไว้ การหาค่าบรรทัดว่างเพื่อวางข้อมูลจะผิดพลาด วิธีการด้านล่างเป็นการปรับตัวแปรให้เป็นบรรทัดที่พร้อมวางข้อมูลครับ
Code: Select all
'Other code For Each s In Worksheets If s.Name <> M.Name Then 'ª×èÍäÁèµÃ§¡Ñ¹ s.Range("A1:Z1").Copy lr = M.Range("C34").End(xlUp).Row + 1 if lr < 5 then lr = 5 M.Range("B" & lr).PasteSpecial Paste:=xlPasteValues End If Next s 'Other code