Page 1 of 1

การ copy ข้อมูลข้ามชีสจากแนวตั้งเป็นแนวนอนครับ

Posted: Sun Sep 20, 2015 12:58 pm
by wongsaton
ผมต้องการ copy ข้อมูลจาก sheet1 ที่เป็นแนวตั้งให้ copy ไปอยู่ใน sheet3 แบบแนวนอนครับ
ผมลองเขียน code แบบที่ผมเข้าใจก็ไม่เป็นอย่างที่ผมต้องการครับ ผิดพลาดประการใดขออภัยครับ มือใหม่ครับ
รบกวนทุกท่านแนะนำผมทีนะครับ ขอบพระคุณครับ
ปล.ผมทำผลลัพธ์ที่ต้องการมาเป็นตัวอย่างใน sheet2 ในไฟล์แนบครับ

Re: การ copy ข้อมูลข้ามชีสจากแนวตั้งเป็นแนวนอนครับ

Posted: Sun Sep 20, 2015 1:44 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Sheets(1).Range("a1").CurrentRegion.copy
Sheets(2).Range("a1").PasteSpecial Paste:=xlPasteValues, Transpose:=True
Application.CutCopyMode = False

Re: การ copy ข้อมูลข้ามชีสจากแนวตั้งเป็นแนวนอนครับ

Posted: Sun Sep 20, 2015 2:51 pm
by wongsaton
ขอบพระคุณมากๆครับอาจารย์ สำเร็จแล้วครับ
code สั้นได้ใจความมากเลยครับ แต่ถ้าผมจะรบกวนอาจารย์ช่วยกรุณาอธิบายคำสั่งแต่ละคำสั่งจะได้ไหมครับ
แต่ถ้าอาจารย์ไม่สะดวกไม่เป็นไรครับผม ขอบพระคุณครับ

Re: การ copy ข้อมูลข้ามชีสจากแนวตั้งเป็นแนวนอนครับ

Posted: Sun Sep 20, 2015 3:11 pm
by snasui
:D จาก Sheets(1).Range("a1").CurrentRegion.copy เป็นการ Copy เซลล์ทั้งหมดที่ติดกับเซลล์ A1 ของ Sheet1 ครับ

Sheets(2).Range("a1").PasteSpecial Paste:=xlPasteValues, Transpose:=True เป็นการวางข้อมูลที่ Copy ไว้ที่เซลล์ A1 ของ Sheet2 โดยกำหนดให้วางแบบสลับแกน

Application.CutCopyMode = False เป็นการยกเลิกคำสั่ง Copy ครับ

Re: การ copy ข้อมูลข้ามชีสจากแนวตั้งเป็นแนวนอนครับ

Posted: Sun Sep 20, 2015 3:53 pm
by wongsaton

Code: Select all

.PasteSpecial Paste:=xlPasteValues, Transpose:=True
เป็นคำสั่งสลับแกนทั้งหมดเลยใช่ไหมครับอาจารย์

Code: Select all

.CurrentRegion.copy
เป็นคำสั่ง copy เซลล์ที่ติดกับ A1 ใช่ไหมครับอาจารย์
แล้วถ้าผมต้องการจะ copy เซลล์ที่ไม่ได้ติดกับ A1 จะมีวิธีทำอย่างไรครับอาจารย์
ขอบพระคุณล่วงหน้าครับ

Re: การ copy ข้อมูลข้ามชีสจากแนวตั้งเป็นแนวนอนครับ

Posted: Sun Sep 20, 2015 4:00 pm
by snasui
wongsaton wrote: .PasteSpecial Paste:=xlPasteValues, Transpose:=True
เป็นคำสั่งสลับแกนทั้งหมดเลยใช่ไหมครับอาจารย์
:D ถูกต้องครับ
wongsaton wrote: .CurrentRegion.copy
เป็นคำสั่ง copy เซลล์ที่ติดกับ A1 ใช่ไหมครับอาจารย์
แล้วถ้าผมต้องการจะ copy เซลล์ที่ไม่ได้ติดกับ A1 จะมีวิธีทำอย่างไรครับอาจารย์
ขอบพระคุณล่วงหน้าครับ
เซลล์ที่ไม่ติดกับ A1 คือเซลล์ใดครับ :?:

ปกติการ Copy เซลล์ สามารถบันทึก Macro แล้วดู Code ได้ โดยลองเลือกทั้งเซลล์ติดกัน ไม่ติดกัน เช่นนี้เป็นต้นครับ

Re: การ copy ข้อมูลข้ามชีสจากแนวตั้งเป็นแนวนอนครับ

Posted: Sun Sep 20, 2015 4:07 pm
by wongsaton
เข้าใจกระจ่างแล้วครับอาจารย์ ขอบพระคุณมากครับ
แล้วถ้าผมต้องการจะ copy เซลล์ที่ไม่ติดกัน จะต้องเริ่มต้นโดยคำสั่งใดครับอาจารย์
เช่น ในไฟล์แนบครับผม ปล.ผมถามเพื่อเป็นความรู้ เพื่อไปปรับใช้ในอนาคตครับอาจารย์ กรุณาด้วยนะครับผม

Re: การ copy ข้อมูลข้ามชีสจากแนวตั้งเป็นแนวนอนครับ

Posted: Sun Sep 20, 2015 5:02 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Dim rall As Range, r As Range, rs As Range
With Sheets(1)
    Set rs = .Range("a1")
    Set rall = .Columns("b:b").SpecialCells(xlCellTypeConstants)
    For Each r In rall
        Set rs = Union(rs, r.CurrentRegion)
    Next r
End With
rs.Copy
Sheets(2).Range("a1").PasteSpecial Paste:=xlPasteValues, Transpose:=True
Application.CutCopyMode = fasle