: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

การ insertrow ละ nsert columns ออกมาทีละแถว

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
hutthaya
Member
Member
Posts: 57
Joined: Thu Nov 14, 2013 2:56 pm

การ insertrow ละ nsert columns ออกมาทีละแถว

#1

Post by hutthaya »

insertrowadncolumns.xlsx

ไฟล์ตัวอย่างนะค่ะ
อยากให้มีการ insertrows ละ insert columns ออกมาตามรูปแบบ sheet: exam ค่ะ อยากให้ได้ออกมาตามฟอแมตนั้นเลยค่ะ
อยากได้เป็นโค้ด vba เพื่อจะไปประยุกต์ใช้ต่อค่ะ ผู้รู้ช่วยแนะนำด้วยน่ะค่ะ ขอบคุณค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การ insertrow ละ nsert columns ออกมาทีละแถว

#2

Post by snasui »

:D ต้องขออภัยที่จะบอกว่า ที่นี่ไม่แจก Code ครับ ต้องเขียนมาเองก่อน ติดแล้วค่อยถามกันได้เรื่อย ๆ ครับ
hutthaya
Member
Member
Posts: 57
Joined: Thu Nov 14, 2013 2:56 pm

Re: การ insertrow ละ nsert columns ออกมาทีละแถว

#3

Post by hutthaya »

จะ insert คอลัมน์ยังไงให้แสดงชื่อเดือนเรียงต่อกันค่ะอาจาร์ยหนูมองไม่ออกเลยค่ะ
ลองรันโค้ดด้านล่างนี้นะค่ะ

Code: Select all

Function showmonthmps()
Dim i As Integer, x As Integer
Dim month() As String
Dim no_d As Single, sum As Single, total As Single

    i = 1
     no_d = 0
    Do Until Worksheets("MONTH").Cells(i + 1, 1).Value = ""
        
        i = i + 1
        no_d = no_d + 1
        
    Loop
ReDim month(1 To no_d)
 
i = 1
    For i = 1 To no_d ' collection with array sheet : MPS COMPARE
       month(i) = Worksheets("MONTH").Cells(1 + i, 1).Value
     
Next i
i = 1
For i = 1 To no_d


       If Worksheets("MPS COMPARE").Cells(6, 2 + i).Value = "" Then
       'MPS1
     
    Worksheets("MPS COMPARE").Cells(6, 2 + i).NumberFormat = "@"
    Worksheets("MPS COMPARE").Cells(6, 2 + i).Value = Worksheets("MONTH").Cells(1 + i, 1).Value
    
[color=#FF0000]Columns("D:D").Select
   
      Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
   'end frist month show commit
   Call comparefmonth1mps1[/color]End If
                  
                          Next i
End Function
You do not have the required permissions to view the files attached to this post.
Last edited by hutthaya on Thu Jan 16, 2014 2:01 pm, edited 1 time in total.
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การ insertrow ละ nsert columns ออกมาทีละแถว

#4

Post by snasui »

:D ถ้ายังเขียน Sub Procedure เป็น Function Procedure อยู่เช่นเดิม ผมจะไม่ตอบ เนื่องจากแจ้งไปหลายรอบแล้วครับ
hutthaya
Member
Member
Posts: 57
Joined: Thu Nov 14, 2013 2:56 pm

Re: การ insertrow ละ nsert columns ออกมาทีละแถว

#5

Post by hutthaya »

ขอโทษจริงๆค่ะอาจาร์ย แก้ไขแล้วค่ะ หนูลืมแก้ไขตลอดเลยต่อไปจะแก้ไขการเขียนค่ะ
insertcolum.xlsm

Code: Select all

Public Sub showmonthmps()
Dim i As Integer, x As Integer
Dim month() As String
Dim no_d As Single, sum As Single, total As Single

    i = 1
     no_d = 0
    Do Until Worksheets("MONTH").Cells(i + 1, 1).Value = ""
        
        i = i + 1
        no_d = no_d + 1
        
    Loop
ReDim month(1 To no_d)
 
i = 1
    For i = 1 To no_d ' collection with array sheet : MPS COMPARE
       month(i) = Worksheets("MONTH").Cells(1 + i, 1).Value
     
Next i
i = 1
For i = 1 To no_d


       If Worksheets("MPS COMPARE").Cells(6, 2 + i).Value = "" Then
       'MPS1
     
    Worksheets("MPS COMPARE").Cells(6, 2 + i).NumberFormat = "@"
    Worksheets("MPS COMPARE").Cells(6, 2 + i).Value = Worksheets("MONTH").Cells(1 + i, 1).Value
    
Columns("D:D").Select
   
      Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
   'end frist month show commit
   Call comparefmonth1mps1
End If
                  
                          Next i
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: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การ insertrow ละ nsert columns ออกมาทีละแถว

#6

Post by snasui »

:D ตัวอย่าง Code สำหรับแทรกคอลัมน์ ลองปรับใช้ดูครับ

Code: Select all

Sub test()
    Dim rAll As Range
    Dim i As Integer
    With Sheets("MPS COMPARE")
        Set rAll = .Range("c6", .Cells(6, Columns.Count).End(xlToLeft))
    End With
    For i = rAll.Count To 2 Step -1
        rAll(i).EntireColumn.Insert
    Next i
End Sub
hutthaya
Member
Member
Posts: 57
Joined: Thu Nov 14, 2013 2:56 pm

Re: การ insertrow ละ nsert columns ออกมาทีละแถว

#7

Post by hutthaya »

ขอบคุณน่ะค่ะอาจาร์ย

คือตอนนี้หนูะเอาโค้ดที่อาจาร์ยให้มาประยุกต์ใช้กับการ insert ชื่อพร้อมคอลัมน์แล้ว แต่หนูอยากให้ตารางสามารถ insert มาเหมือนตารางที่อยู่ในไฟล์ sheet : TEMPLATE ค่ะ
ตอนนี้แสดงมาได้แค่ mps เดียวอยู่เลยค่ะ



ลำดับการแสดงข้อมูล

Code: Select all

Public Sub compare11()
Call insertcolumns
Call compareprocap
Call comparefmonth1mps1
End Sub
insertcolum.xlsm
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การ insertrow ละ nsert columns ออกมาทีละแถว

#8

Post by snasui »

:D ผมเห็นว่าสิ่งที่ควรทำคือด้านล่าง
  1. ใช้ PivotTable สำหรับทำงานนี้
  2. หากต้องการทำด้วย Code เพื่อแสดงความสามารถหรือเพื่อการใดก็ตาม :lol:
    1. นำข้อมูลมาวางให้ครบ ซึ่งจะทำ Subtotal ไปพร้อมกับวางข้อมูลหรือวางข้อมูลให้จบก่อนแล้วค่อยแทรก Subtotal เพื่อลดความซับซ้อน
    2. จัด Format ตามต้องการ โดยแยก Code สำหรับการจัด Format ออกมาต่างหาก เพื่อลดความซับซ้อน
สำหรับ Code ที่แจ้งมานั้นผมลอง Run แล้วไม่เกิดผลลัพธ์การแทรกคอลัมน์ ควรทำให้เสร็จเป็นขั้น ๆ ไม่ว่าจะด้วยวิธีใดแล้วถามเฉพาะที่ติดปัญหา หากผมทดสอบไม่ถูกต้องช่วยลำดับการทดสอบมาให้ด้วยครับ
hutthaya
Member
Member
Posts: 57
Joined: Thu Nov 14, 2013 2:56 pm

Re: การ insertrow ละ nsert columns ออกมาทีละแถว

#9

Post by hutthaya »

ไฟล์นี้เกิดการแทรกคอลัมน์ค่ะอาจาร์ย
insertcolum.xlsm

Public Sub compare11()
Call insertcolumns ' จะทำการแทรกคอลัมน์ก่อน
Call compareprocap 'จะแสดงชื่อโปรดัคและคาปาซิตี้
Call comparefmonth1mps1 ' แสดงค่าซัมของเดือนแรก
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: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: การ insertrow ละ nsert columns ออกมาทีละแถว

#10

Post by snasui »

:D ไฟล์ที่แนบมามีการแทรกคอลัมน์และวางข้อมูลเรียบร้อยแล้ว ไม่ทราบว่าติดปัญหาใด

หากปัญหาคือไม่สามารถ Loop เพื่อที่จะให้ข้อมูลแสดงเหมือน Template ได้นั้น Code ที่จะทำเช่นนั้นจะต้องเขียนมาเองก่อนครับ ติดแล้วค่อยถามกันครับ

หากเขียนมาแล้ว Code นั้นชื่ออะไร ติดที่บรรทัดใด ยกมาเฉพาะที่ติดปัญหาจะได้เข้าถึงข้อมูลได้เร็วขึ้นครับ
hutthaya
Member
Member
Posts: 57
Joined: Thu Nov 14, 2013 2:56 pm

Re: การ insertrow ละ nsert columns ออกมาทีละแถว

#11

Post by hutthaya »

ขอบคุณค่ะอาจาร์ยเดี๋ยวหนูลองแก้ไขเพิ่มเติมก่อนนะค่ะ :D
Post Reply