:!: โปรดทราบ Image
    1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ดครับ Image
    2. การสมัครสมาชิกเพื่อโพสต์คำถาม ดาวน์โหลดไฟล์แนบไปศึกษา ทำตามขั้นตอนด้านล่างครับ
      1. สมัครสมาชิก ดูขั้นตอนตาม Link นี้ครับ => สมัครสมาชิก กรณีลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่นี่ครับ => Reset รหัสผ่านImage
      2. Login เข้าระบบโดยคลิก Login ตรงมุมขวาบนของหน้านี้ Image กรณีมีปัญหาในการเข้าใช้งาน คลิก Link นี้เพื่อแจ้งผู้ดูแลระบบครับ => ติดต่อผู้ดูแลระบบ
    3. เมื่อ Login แล้วสามารถกำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษได้ที่ Link นี้ครับ => ตั้งค่าส่วนตัว Image
    4. วิธีการตั้งและตอบกระทู้ดูได้ที่ Link นี้ครับ => วิธีการตั้งและตอบกระทู้ Image
    5. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ Link นี้ครับ => จัดรูปแบบตัวอักษร และสามารถกำหนดขนาดตัวอักษรใน Browser ได้ที่นี่ครับ ==> กำหนดขนาดตัวอักษรใน Browser Image

นำยอดtotalจากทุกชีทมารวมไว้ในชีทเดียวแบบเรียงลำดับลงมาเรื่อยๆ

ฟอรั่มถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถาม-ตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบ ต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. อธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. ควรแนบตัวอย่างไฟล์มาที่ฟอรั่มนี้เพื่อเพิ่มความสะดวกในการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่น นอกจากนี้ไม่ควรแนบไฟลที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. สำหรับคำถามเกี่ยวกับ VBA ให้ลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน ควรโพสต์ Code ให้แสดงเป็น Code เพื่อสะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. แจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
kio2002
Member
Member
Posts: 133
Joined: Thu Sep 20, 2012 8:40 am

นำยอดtotalจากทุกชีทมารวมไว้ในชีทเดียวแบบเรียงลำดับลงมาเรื่อยๆ

#1

Postby kio2002 » Sat Sep 16, 2017 8:59 pm

นำยอดtotalจากทุกชีทมารวมไว้ในชีทเดียวแบบเรียงลำดับลงมาเรื่อยๆ
ผมต้องการนำยอดtotalจากทุกชีทมารวมไว้ที่ชีท"รวมสรุปยอด"โดยเรียงลำดับลงมาเรื่อยๆ
ยอดtotalจะอยู่ที่เซลล์D5ทุกชีทครับ
(ต้องขออภัยด้วยครับ ไฟล์นี้ผมยกตัวอย่างมา เนื่องจากไฟล์ของจริง ไม่สามารถเปิดเผยได้)
code ที่ได้เขียนไว้ มีดังนี้ครับ

Code: Select all

Sub Button2_Click()
    Sheets("sheet2").Select
        Range("d5").Copy
        Sheets("ÃÇÁÊÃØ»ÂÍ´").Select
        Range("A2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("sheet3").Select
        Range("d5").Copy
        Sheets("ÃÇÁÊÃØ»ÂÍ´").Select
        Range("A3").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("sheet4").Select
        Range("d5").Copy
        Sheets("ÃÇÁÊÃØ»ÂÍ´").Select
        Range("A4").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("sheet5").Select
        Range("d5").Copy
        Sheets("ÃÇÁÊÃØ»ÂÍ´").Select
        Range("A5").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("sheet6").Select
        Range("d5").Copy
        Sheets("ÃÇÁÊÃØ»ÂÍ´").Select
        Range("A6").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub


แต่ติดตรงที่ว่า ผมต้อง new sheet ขึ้นมาเรื่อยๆ เป็นร้อยๆชีท และมีการเปลี่ยนชื่อชีททุกชีทด้วย
จึงรบกวนสมาชิกทุกๆท่านช่วยหน่อยครับ

ขอบคุณมากๆครับ
You do not have the required permissions to view the files attached to this post.

User avatar
snasui
Site Admin
Site Admin
Posts: 21986
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

Re: นำยอดtotalจากทุกชีทมารวมไว้ในชีทเดียวแบบเรียงลำดับลงมาเรื่อยๆ

#2

Postby snasui » Sat Sep 16, 2017 11:32 pm

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

Code: Select all

Sub Button2_Click()
    Dim sh As Worksheet   
    Worksheets("รวมสรุปยอด").Range("a2:a1000").ClearContents
    For Each sh In Worksheets
        If sh.Name <> "รวมสรุปยอด" Then
            With Worksheets("รวมสรุปยอด")
                .Range("a" & .Rows.Count).End(xlUp).Offset(1, 0).Value = sh.Range("d5").Value
            End With
        End If
    Next sh
End Sub

kio2002
Member
Member
Posts: 133
Joined: Thu Sep 20, 2012 8:40 am

Re: นำยอดtotalจากทุกชีทมารวมไว้ในชีทเดียวแบบเรียงลำดับลงมาเรื่อยๆ

#3

Postby kio2002 » Sun Sep 17, 2017 8:01 pm

ขอบคุณมากครับ
code ตรงตามที่ต้องการเลยครับอาจารย์
แต่ผมปรับให้มันเริ่มวางตั้งแต่เซลล์ A2ลงมา ปรากฎว่ามันดึงค่าเฉพาะชีทสุดท้ายมา
รบกวนอาจารย์ช่วยหน่อยครับ

Code: Select all

Sub Button2_Click()
    Dim sh As Worksheet
    Worksheets("รวมสรุปยอด").Range("a2:a1000").ClearContents
    For Each sh In Worksheets
        If sh.Name <> "รวมสรุปยอด" Then
            With Worksheets("รวมสรุปยอด")
                .Range("a2", .Range("a" & .Rows.Count)).End(xlUp).Offset(1, 0).Value = sh.Range("d5").Value
            End With
        End If
    Next sh
End Sub
You do not have the required permissions to view the files attached to this post.

puriwutpokin
Silver
Silver
Posts: 840
Joined: Fri Jan 04, 2013 9:49 pm

Re: นำยอดtotalจากทุกชีทมารวมไว้ในชีทเดียวแบบเรียงลำดับลงมาเรื่อยๆ

#4

Postby puriwutpokin » Mon Sep 18, 2017 12:09 am

ใช่ให้ค่าแรกอยู่ที่ A3 หรือเปล่าถ้าใช่ปรับเป็น

Code: Select all

Sub Button2_Click()
    Dim sh As Worksheet
    Worksheets("รวมสรุปยอด").Range("a2:a1000").ClearContents
    For Each sh In Worksheets
        If sh.Name <> "รวมสรุปยอด" Then
            With Worksheets("รวมสรุปยอด")
                 .Range("a3").Offset(Application.CountA(.Range("a3:a" & .Rows.Count)), 0).Value = sh.Range("d5").Value
            End With
        End If
    Next sh
End Sub


kio2002
Member
Member
Posts: 133
Joined: Thu Sep 20, 2012 8:40 am

Re: นำยอดtotalจากทุกชีทมารวมไว้ในชีทเดียวแบบเรียงลำดับลงมาเรื่อยๆ

#5

Postby kio2002 » Mon Sep 18, 2017 10:11 pm

ผมลองใช้ code ของคุณ puriwutpokin แล้วครับ
เซลล์บางคอลัมน์ ค่ามันไม่เริ่มแถวเดียวกัน ทั้งๆที่เขียนcodeให้เริ่มแถวเดียวกัน คือแถวที่4
รบกวนกวนเช็คให้อีกทีครับ

Code: Select all

Sub Button2_Click()
    Dim sh As Worksheet
    Worksheets("รวมสรุปยอด").Range("b4:g31").ClearContents
    For Each sh In Worksheets
        If sh.Name <> "รวมสรุปยอด" Then
            With Worksheets("รวมสรุปยอด")
                 .Range("b4").Offset(Application.CountA(.Range("b4:b" & .Rows.Count)), 0).Value = sh.Range("a4").Value
                 .Range("c4").Offset(Application.CountA(.Range("c4:c" & .Rows.Count)), 0).Value = sh.Range("b4").Value
                 .Range("d4").Offset(Application.CountA(.Range("d4:d" & .Rows.Count)), 0).Value = sh.Range("c4").Value
                 .Range("e4").Offset(Application.CountA(.Range("e4:e" & .Rows.Count)), 0).Value = sh.Range("d4").Value
                 .Range("f4").Offset(Application.CountA(.Range("f4:f" & .Rows.Count)), 0).Value = sh.Range("e4").Value
                 .Range("g4").Offset(Application.CountA(.Range("g4:g" & .Rows.Count)), 0).Value = sh.Range("f4").Value
            End With
        End If
    Next sh
End Sub


ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.

puriwutpokin
Silver
Silver
Posts: 840
Joined: Fri Jan 04, 2013 9:49 pm

Re: นำยอดtotalจากทุกชีทมารวมไว้ในชีทเดียวแบบเรียงลำดับลงมาเรื่อยๆ

#6

Postby puriwutpokin » Mon Sep 18, 2017 10:24 pm

ปรับเป็น

Code: Select all

Sub Button2_Click()
    Dim sh As Worksheet
    Worksheets("รวมสรุปยอด").Range("b4:g31").ClearContents
    For Each sh In Worksheets
        If sh.Name <> "รวมสรุปยอด" Then
            With Worksheets("รวมสรุปยอด")
                 .Range("b4:g4").Offset(Application.CountA(.Range("b4:b" & .Rows.Count)), 0).Value = sh.Range("a4:f4").Value
            End With
        End If
    Next sh
End Sub

menem
Bronze
Bronze
Posts: 418
Joined: Mon Jan 26, 2015 11:02 am

Re: นำยอดtotalจากทุกชีทมารวมไว้ในชีทเดียวแบบเรียงลำดับลงมาเรื่อยๆ

#7

Postby menem » Tue Sep 19, 2017 11:16 am

Code: Select all

Sub AllTotal()

    StartRow = 2
    StartCol = 1
   
    TargetCell = "D5"
   
    SheetsCount = ThisWorkbook.Worksheets.Count
    CurrSheet = ActiveSheet.Name
   
'
' Clear Answer Area
'
    WorkRow = StartRow - 1
    For i = 1 To SheetsCount - 1
        WorkRow = WorkRow + 1
        Cells(WorkRow, StartCol).ClearContents
    Next i
   
'
' Put Answer
'
    WorkRow = StartRow - 1
    For i = 1 To SheetsCount
   
        If Worksheets(i).Name <> CurrSheet Then
           WorkRow = WorkRow + 1
           Cells(WorkRow, StartCol).Value = Worksheets(i).Range(TargetCell).Value
        End If
   
    Next i

End Sub


kio2002
Member
Member
Posts: 133
Joined: Thu Sep 20, 2012 8:40 am

Re: นำยอดtotalจากทุกชีทมารวมไว้ในชีทเดียวแบบเรียงลำดับลงมาเรื่อยๆ

#8

Postby kio2002 » Tue Sep 19, 2017 3:11 pm

puriwutpokin wrote:ปรับเป็น

Code: Select all

Sub Button2_Click()
    Dim sh As Worksheet
    Worksheets("รวมสรุปยอด").Range("b4:g31").ClearContents
    For Each sh In Worksheets
        If sh.Name <> "รวมสรุปยอด" Then
            With Worksheets("รวมสรุปยอด")
                 .Range("b4:g4").Offset(Application.CountA(.Range("b4:b" & .Rows.Count)), 0).Value = sh.Range("a4:f4").Value
            End With
        End If
    Next sh
End Sub


ขอโทดทีครับ คุณ puriwutpokin ข้อมูลจากชีทที่ต้นทาง อาจจะไม่ได้เรียงแบบนี้ครับ
sh.Range("a4:f4").Value

ข้อมูลต้นทางจะกระจายกันอยู่ ขอยกตัวอย่างอีกรอบนะครับ code ตามไฟล์แนบครับ
ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.

puriwutpokin
Silver
Silver
Posts: 840
Joined: Fri Jan 04, 2013 9:49 pm

Re: นำยอดtotalจากทุกชีทมารวมไว้ในชีทเดียวแบบเรียงลำดับลงมาเรื่อยๆ

#9

Postby puriwutpokin » Tue Sep 19, 2017 3:50 pm

ปรับเป็น

Code: Select all

Sub Button2_Click()
    Dim sh As Worksheet
    Worksheets("รวมสรุปยอด").Range("b4:g31").ClearContents
    For Each sh In Worksheets
        If sh.Name <> "รวมสรุปยอด" Then
            With Worksheets("รวมสรุปยอด")
                 .Range("b4").Offset(Application.CountA(.Range("b4:b" & .Rows.Count)), 0).Value = sh.Range("b1").Value
                 .Range("c4").Offset(Application.CountA(.Range("c4:c" & .Rows.Count)), 0).Value = sh.Range("b10").Value
                 .Range("d3").Offset(Application.CountA(.Range("d4:d" & .Rows.Count)), 0).Value = sh.Range("b3").Value
                 .Range("e4").Offset(Application.CountA(.Range("e4:e" & .Rows.Count)), 0).Value = sh.Range("b5").Value
                 .Range("f3").Offset(Application.CountA(.Range("f4:f" & .Rows.Count)), 0).Value = sh.Range("c7").Value
                 .Range("g3").Offset(Application.CountA(.Range("g4:g" & .Rows.Count)), 0).Value = sh.Range("d7").Value
            End With
        End If
    Next sh
End Sub

kio2002
Member
Member
Posts: 133
Joined: Thu Sep 20, 2012 8:40 am

Re: นำยอดtotalจากทุกชีทมารวมไว้ในชีทเดียวแบบเรียงลำดับลงมาเรื่อยๆ

#10

Postby kio2002 » Wed Sep 20, 2017 7:52 pm

ได้แล้วครับ ของคุณท่านอาจารย์ snasui คุณpuriwutpokin และ คุณ menem ที่คอยช่วยเหลือครับ
code ของคุณ menem ผมจะลองเอาไปปรับใช้นะครับ


Return to “Excel”

Who is online

Users browsing this forum: ampertise and 17 guests