: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

code แทรกคอลัมภ์ตามเงื่อนไข

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
pk_da
Member
Member
Posts: 4
Joined: Fri Feb 23, 2018 4:26 pm

code แทรกคอลัมภ์ตามเงื่อนไข

#1

Post by pk_da »

เรียน ผู้รู้ทุกท่าน

ดิฉันต้องการแทรกคอลัมภ์ 2 คอลัมภ์ในตารางตามไฟล์แนบ ซึ่งมีีรายละเอียดดังนี้
-ชีท data_original คือข้อมูลเดิมที่มีวันที่ติดกันเรียงต่อกันไปเรื่อย ๆ
-ชีท insert2col เป็นผลลัพธ์ที่ต้องการ คือในคอลัมภ์วันที่จะมีคอลัมภ์ที่ติดกันอยู่ ก่อนวันที่ถัดไป ซึ่งเราต้องการเพิ่ม 2 คอลัมภ์แทรกระหว่างข้อมูลแต่ละวัน ตามสีเหลืองที่ใส่ไว้ในไฟล์แนบค่ะ ซึ่งให้แทรกไปเรื่อย ๆ จนครบวันที่ทั้งหมดที่มีซึ่งจะมีเยอะมาก
ด้านล่างเป็นโค้ด vb ที่ record มา ดิฉันทราบว่าต้องใช้คำสั่งวนลูปในการแทรกแต่ไม่เคยทำโค้ดแบบนี้ค่ะ ปกติจะ record แล้วมาปรับแก้ตามที่จะใช้งาน ซึ่งกรณีนี้ยอมรับว่าไม่รู้จริง ๆ ค่ะ

รบกวนผู้รู้ชี้แนะด้วยค่ะ

Code: Select all

Sub insert_col()
'
' insert_col Macro
'

'
    Columns("K:L").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Columns("O:P").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Columns("S:T").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
Attachments
insert_2col.xlsm
(23.43 KiB) Downloaded 5 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: code แทรกคอลัมภ์ตามเงื่อนไข

#2

Post by snasui »

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

Code: Select all

Dim rAll As Range
Dim i As Integer
Dim k As Integer
Dim a As Variant
With Sheets("data_orginal")
    Set rAll = .Range("h1:xfd1").SpecialCells(xlCellTypeConstants)
    a = Split(rAll.Address, ",")
    k = UBound(a)
    For i = k To 0 Step -1
        .Range(a(i)).Resize(1, 2).EntireColumn.Insert
    Next i
End With
pk_da
Member
Member
Posts: 4
Joined: Fri Feb 23, 2018 4:26 pm

Re: code แทรกคอลัมภ์ตามเงื่อนไข

#3

Post by pk_da »

สอบถามค่ะ อาจารย์

Set rAll = .Range("h1:xfd1").SpecialCells(xlCellTypeConstants)
เป็นการกำหนด range ของคอลัมภ์ทั้งหมดใช่หรือไม่คะ
ลองนำมารันกับไฟล์จริง ปรากฎว่าแทรกไม่ครบค่ะ ไฟล์มีวันที่ถึงคอลัมภ์ GG
แต่มาโครเริ่มแทรกที่คอลัมภ์ CS ต้องแก้อย่างไรจึงแทรกทั้งหมดคะ
ตัวอย่างตามไฟล์แนบค่ะ โดย
1.รันมาโครชื่อ InsertColumn
2.รันมาโครชื่อ Insert2Col


ขอบคุณค่ะ
Attachments
Usage PNE ( 23.02.2018 ) - Copy.xlsm
(63.79 KiB) Downloaded 6 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: code แทรกคอลัมภ์ตามเงื่อนไข

#4

Post by snasui »

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

Code: Select all

Dim rAll As Range
Dim i As Integer
Dim k As Integer
With Sheets("Sheet1")
    Set rAll = .Range("h1:xfd1").SpecialCells(xlCellTypeConstants)
    For i = rAll.Count To 1 Step -1
        Debug.Print rAll(i).Address
        rAll(i).Resize(1, 2).EntireColumn.Insert
    Next i
End With
pk_da
Member
Member
Posts: 4
Joined: Fri Feb 23, 2018 4:26 pm

Re: code แทรกคอลัมภ์ตามเงื่อนไข

#5

Post by pk_da »

ต้องรันจากชีทที่ 2 ค่ะอาจารย์ ชีทแรกเป็นข้อมูลต้นฉบับ รบกวนอีกครั้งนะคะ
ขอบคุณค่ะ
PK.
Attachments
Usage PNE ( 23.02.2018 ).xlsm
(103.2 KiB) Downloaded 5 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: code แทรกคอลัมภ์ตามเงื่อนไข

#6

Post by snasui »

:D ลองปรับมาเองก่อน ติดแล้วค่อยถามกันต่อครับ
pk_da
Member
Member
Posts: 4
Joined: Fri Feb 23, 2018 4:26 pm

Re: code แทรกคอลัมภ์ตามเงื่อนไข

#7

Post by pk_da »

ลองแก้แล้วแต่กลายเป็น insert ติดกันหมดเลยค่ะ ถ้าจะเลือกแทรกเฉพาะระหว่างวันที่ต้องใช้ code อะไรคะ รบกวนแนะนำด้วยค่ะ

Code: Select all

Sub add_2_col()
Dim rAll As Range
Dim i As Integer
Dim k As Integer
Dim a As Variant
With Sheets(2)
    Set rAll = .Range("h1:xfd1").SpecialCells(xlCellTypeConstants)
    For i = rAll.Count To 1 Step -1
    a = Split(rAll.Address, ",")
        rAll(i).Resize(1, 2).EntireColumn.Insert
    Next i
End With
End Sub
Attachments
Usage PNE ( 23.02.2018 ).xlsm
(107.68 KiB) Downloaded 10 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: code แทรกคอลัมภ์ตามเงื่อนไข

#8

Post by snasui »

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

Code: Select all

Dim rAll As Range
Dim i As Integer
Dim k As Integer
With Sheets("Sheet2")
    Set rAll = .Range("h1", .Range("xfd1").End(xlToLeft))
    i = rAll.Count
    For k = i To 1 Step -1
        If rAll(k).Value <> "" Then
            rAll(k).Resize(1, 2).EntireColumn.Insert
        End If
    Next k
End With
Post Reply