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

บันทึกข้อมูลแนวตั้งและให้แสดงแนวนอนอีก sheet ตามเดือน

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
janry
Member
Member
Posts: 37
Joined: Sat Oct 01, 2011 8:50 am

บันทึกข้อมูลแนวตั้งและให้แสดงแนวนอนอีก sheet ตามเดือน

#1

Post by janry »

:roll: :lol: เราจะใช้ function หรือ Macro ไหนดี ที่ได้ข้อมูลตามต้องการ

1. Key แผนกตามช่อง G3 Input data ของแต่ละตำแหน่ง(E10:N10) เช่น ตำแหน่ง M1 มี 1 คน ,J3 = 3 คน , J2 = 8คน ตั้งแต่ Jan-Dec
เดือน(C12:C23) , แผนก(B12:B23 โดย Key มาจาก G3)

2.ให้ไปแสดงที่Sheet ชื่อ Summary เป็นแนวนอนของแต่ละเดือน jan-dec ตามตำแหน่ง

หมายเหตุ >>ชื่อแผนก (G3 มีการเปลี่ยนชื่อแผนกได้ ตัวเลขของแต่ละตำแหน่ง เปลี่ยนไปตามแต่ละแผนก)


เราจะเขียนสูตรอย่างไรดีให้ได้ข้อมูลที่ต้องการ โดยที่เราไม่ต้องมา manual ทำในแต่ละเดือน

ปัจจุบันที่ทำอยู่จะใช้ copy >> paste specital >>traspose
You do not have the required permissions to view the files attached to this post.
janry
Member
Member
Posts: 37
Joined: Sat Oct 01, 2011 8:50 am

Re: บันทึกข้อมูลแนวตั้งและให้แสดงแนวนอนอีก sheet ตามเดือน

#2

Post by janry »

janry wrote::roll: :lol: เราจะใช้ function หรือ Macro ไหนดี ที่ได้ข้อมูลตามต้องการ

1. Key แผนกตามช่อง G3 Input data ของแต่ละตำแหน่ง(E10:N10) เช่น ตำแหน่ง M1 มี 1 คน ,J3 = 3 คน , J2 = 8คน ตั้งแต่ Jan-Dec
เดือน(C12:C23) , แผนก(B12:B23 โดย Key มาจาก G3)

2.ให้ไปแสดงที่Sheet ชื่อ Summary เป็นแนวนอนของแต่ละเดือน jan-dec ตามตำแหน่ง

หมายเหตุ >>ชื่อแผนก (G3 มีการเปลี่ยนชื่อแผนกได้ ตัวเลขของแต่ละตำแหน่ง เปลี่ยนไปตามแต่ละแผนก)


เราจะเขียนสูตรอย่างไรดีให้ได้ข้อมูลที่ต้องการ โดยที่เราไม่ต้องมา manual ทำในแต่ละเดือน

ปัจจุบันที่ทำอยู่จะใช้ copy >> paste specital >>traspose

หรืออีกแบบ
1. มี File หลาย ๆ ไฟล์ เช่น 2100.xlsx,2300.xlsx,2400.xlsx มีประมาณ 50 file จะนำข้อมูลของแต่ละ file มาสรุปรวม อยู่ที่ file Summary
ขอตัวอย่างการเขียน macro หรือ VBA
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: บันทึกข้อมูลแนวตั้งและให้แสดงแนวนอนอีก sheet ตามเดือน

#3

Post by snasui »

:lol: การนำรายงานไปทำรายงานไม่ง่ายครับ สูตรสามารถทำได้แบบเดือนใดเดือนหนึ่ง คือเมื่อคีย์ในชีท Data เพียงเดือนใด ข้อมูลก็จะแสดงในชีท Summary เฉพาะเดือนนั้น

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

หากใช้ VBA จัดการก็สามารถทำได้ แต่ต้องเขียนมาก่อน ติดตรงไหนก็มาถามกัน

ทางเลือกอื่นคือให้ทำข้อมูลเป็น Database หมายความว่าให้คีย์ที่ชีท Data แล้วข้อมูลไปเก็บที่ชีท Database ก่อน จากนั้นค่อยใช้สูตรดึงไปแสดงผลที่ชีท Summary วิธีนี้ใช้ร่วมกันทั้ง VBA และ สูตร ขอให้ลองค้นด้วยคำว่า Database ในฟอรัมนี้แล้วลองปรับปรุงไฟล์มาดู ติดตรงไหนก็มาถามกันต่อ ค่อย ๆ ปรับไปครับ
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: บันทึกข้อมูลแนวตั้งและให้แสดงแนวนอนอีก sheet ตามเดือน

#4

Post by snasui »

janry wrote:หรืออีกแบบ
1. มี File หลาย ๆ ไฟล์ เช่น 2100.xlsx,2300.xlsx,2400.xlsx มีประมาณ 50 file จะนำข้อมูลของแต่ละ file มาสรุปรวม อยู่ที่ file Summary
ขอตัวอย่างการเขียน macro หรือ VBA
:lol: หากต้องการใช้ VBA ให้เขียนมาก่อนครับ ติดตรงไหนก็มาถามกัน ผมไม่ได้ทำตัวอย่างไว้ล่วงหน้าในทุก ๆ เรื่อง จะเน้นแก้ที่ติดปัญหาเป็นหลัก เป็นเรื่อง ๆ ไปครับ :mrgreen:
janry
Member
Member
Posts: 37
Joined: Sat Oct 01, 2011 8:50 am

Re: บันทึกข้อมูลแนวตั้งและให้แสดงแนวนอนอีก sheet ตามเดือน

#5

Post by janry »

ลองใช้ macro recorder ดู ทำทีละ step แต่เวลา run แล้ว แสดงข้อมูลไม่ถูกต้องค่ะ สลับไปสลับมา
1. เปิดไฟล์ Summary >> record macro >>และ เปิดทีละไฟล์ 2200,2300,2400,2500 >> ลากข้อมูล E12:N23 ของแต่ละไฟล์ >> นำไป Paste special เลือก value >> เลือก Transpose ทำแต่ละไฟล์ >> stop macro
2. ลอง run macro

คำถามค่ะ
1. ในกรณีที่ทำจากหลาย ๆ ไฟล์ เวลา run ต้องเปิดแต่ละไฟล์ไว้ด้วยคะ พอจะมีวิธีเขียนแบบอื่น ไหมคะ ที่ไม่ต้องเปิดไฟล์ไว้ เพราะถ้ามีไฟล์เป็นร้อย ทำให้ทำงานยาก
2. เวลาที่จะนำไฟล์แต่ละไฟล์มาไว้ที่ sheet summary ต้องเปิดไฟล์ต่าง ๆ ไว้ ไม่สามารถเปิด ณ ขณะทำแต่ละไฟล์ได้เลย ต้องเปิดทิ้งไว้ก่อน



ขอบคุณค่ะ
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: บันทึกข้อมูลแนวตั้งและให้แสดงแนวนอนอีก sheet ตามเดือน

#6

Post by snasui »

:? :roll: ตัวอย่าง Code อยู่ในไฟล์ไหนครับ :?:
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: บันทึกข้อมูลแนวตั้งและให้แสดงแนวนอนอีก sheet ตามเดือน

#8

Post by snasui »

:shock: ไฟล์ summary นามสกุล .xlsx ไม่สามารถแนบ Code มาได้ครับ

ไฟล์ที่จะแนบ Code ได้ต้องนามสกุล .xlsm หรือ .xls (กรณีเป็นไฟล์ Version 2003 ลงไป)
janry
Member
Member
Posts: 37
Joined: Sat Oct 01, 2011 8:50 am

Re: บันทึกข้อมูลแนวตั้งและให้แสดงแนวนอนอีก sheet ตามเดือน

#9

Post by janry »

แนบ file ที่เป็น summary.xlsm มาแล้วค่ะ
You do not have the required permissions to view the files attached to this post.
janry
Member
Member
Posts: 37
Joined: Sat Oct 01, 2011 8:50 am

Re: บันทึกข้อมูลแนวตั้งและให้แสดงแนวนอนอีก sheet ตามเดือน

#10

Post by janry »

ตอนนี้ทำงานได้แล้ว แต่ไม่อยากให้ถามว่า save fie หรือป่าว ไม่อยากให้ขึ้น pop up จะเขียน code อย่างไรดีคะ step แรกที่ขึ้น OK ไม่เป็นไร ถามหา file link แต่ step ที่ 2 ไม่อยากให้ขึ้นคะ
ตัวอย่างตามไฟล์แนบค่ะ
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: บันทึกข้อมูลแนวตั้งและให้แสดงแนวนอนอีก sheet ตามเดือน

#11

Post by snasui »

janry wrote:ตอนนี้ทำงานได้แล้ว แต่ไม่อยากให้ถามว่า save fie หรือป่าว ไม่อยากให้ขึ้น pop up จะเขียน code อย่างไรดีคะ step แรกที่ขึ้น OK ไม่เป็นไร ถามหา file link แต่ step ที่ 2 ไม่อยากให้ขึ้นคะ
8-) เยี่ยมเลยครับ แต่เนื่องจากยังต้องอ้างอิงชื่อไฟล์เข้าไปใน Code แบบตรง ๆ ซึ่งอาจจะเป็นปัญหาในการทำงานกับไฟล์จำนวนมาก ผมเขียน Code มาให้ใหม่ สามารถเลือกได้เองว่าจะ Copy ข้อมูลจากไฟล์ไหนมาบ้าง ทั้งยังไม่ให้แสดงการ Update Link และปิดโดยไม่ต้อง Confirm ลองดูตัวอย่างตามด้านล่างครับ

Code: Select all

Sub CollectAllFile()
Dim nb As Workbook, ob As Workbook
Dim r As Range
Dim nb1 As Range, nb2 As Range
Dim nb3 As Range, nb4 As Range
Dim i As Integer, lng As Long
Dim FileSelected As Variant
    
Application.ScreenUpdating = False
On Error GoTo MsgError
lng = Rows.Count
Set ob = Workbooks("summary.xlsm")
FileSelected = Application.GetOpenFilename("Excel Files (*.xlsx),*.xlsx", , _
       "Select your Excel's File", , True)
For i = 1 To UBound(FileSelected)
    Workbooks.Open Filename:=(FileSelected(i)), UpdateLinks:=0
    Set nb = ActiveWorkbook
    With nb.Worksheets("Data")
        Set nb1 = .Range("G3")
        Set nb2 = .Range("C12:C23")
        Set nb3 = .Range("E10:N10")
        Set nb4 = .Range("E12:N23")
    End With
    Set r = ob.Worksheets("Summary").Range("A" & lng).End(xlUp).Offset(2, 0)
    nb1.Copy: r.PasteSpecial xlPasteValues
    nb2.Copy: r.Offset(0, 1).PasteSpecial Paste:=xlPasteAll, Transpose:=True
    nb3.Copy: r.Offset(1, 0).PasteSpecial Paste:=xlPasteAll, Transpose:=True
    nb4.Copy: r.Offset(1, 1).PasteSpecial Paste:=xlPasteAll, Transpose:=True
    Application.CutCopyMode = False
    nb.Close False
Next i
Application.ScreenUpdating = True
MsgBox "Finish."
Exit Sub
    
MsgError:
    MsgBox "Please try again."
    Exit Sub

End Sub
janry
Member
Member
Posts: 37
Joined: Sat Oct 01, 2011 8:50 am

Re: บันทึกข้อมูลแนวตั้งและให้แสดงแนวนอนอีก sheet ตามเดือน

#12

Post by janry »

ขอบคุณมากเลยนะคะ จะลองนำมาปรับใช้ในงานดูค่ะ
Post Reply