Page 1 of 1

ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน

Posted: Sat Mar 19, 2011 2:36 pm
by ekkaluk_suk
ถ้าต้องการ นำข้อมูลที่มีอยู่จาก sheet 1 ไปแสดงที่ sheet ที่ 2 จะสามารถทำอย่างไร
ได้บ้างครับ โดยต้องการให้แสดงเฉพาะที่เราต้องการ ตามที่ไฮไลท์ สีเหลืองไว้ ใช้เป็นสูตร
ให้ให้ Run macro ก็ได้ครับ :D

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน

Posted: Sat Mar 19, 2011 2:42 pm
by snasui
:D เอาไปวางด้วยเงื่อนไขใดครับ ถ้าไม่มีเงื่อนไขก็แค่ Link ไปเฉย ๆ คือ คลุมข้อมูลที่ต้องการ > Copy > คลิกขวาบนเซลล์เป้าหมาย > Paste Special > Paste Link ไม่ต้องเขียนสูตรอื่นใดครับ

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน

Posted: Sat Mar 19, 2011 2:46 pm
by ekkaluk_suk
snasui wrote::D เอาไปวางด้วยเงื่อนไขใดครับ ถ้าไม่มีเงื่อนไขก็แค่ Link ไปเฉย ๆ คือ คลุมข้อมูลที่ต้องการ > Copy > คลิกขวาบนเซลล์เป้าหมาย > Paste Special > Paste Link ไม่ต้องเขียนสูตรอื่นใดครับ
เงื่อนไข คือให้กรองเฉพาะข้อมูล ตาม column ที่เราต้องการเท่านั้นมาแสดงครับ คือ 4 column และให้ข้อมูล
เรียงต่อไปเรื่อย ๆ ลงด้านล่าง เป็นการจัดเรียงข้อมูลใหม่ เฉพาะ 4 column ที่เราต้องการเท่านั้น

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน

Posted: Sat Mar 19, 2011 2:52 pm
by snasui
:D คำตอบเดิมครับ เมื่อต้องการเฉพาะคอลัมน์ก็ Copy ไปวางแบบ Link เฉพาะคอลัมน์ ยกเว้นจะเลือกบางค่าในคอลัมน์ นั้น ๆ ถึงจะต้องเขียนสูตรที่ซับซ้อนขึ้นไปครับ

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน

Posted: Sat Mar 19, 2011 3:03 pm
by ekkaluk_suk
คือต้องการลดเวลาในการ copy ลงครับ ไม่แน่ใจว่าจะมีวิธีอื่น ที่เร็วกว่าหรือไม่ ประมาณว่า 1 click ออกมาเป็น sheet ที่ 2 เลยน่ะครับ :D

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน

Posted: Sat Mar 19, 2011 3:06 pm
by snasui
:D การ Copy แบบ Link เราทำแค่ครั้งแรกที่สร้างงานนี้เท่านั้นครับ สามารถ Link ได้ทั้งคอลัมน์ ค่าที่เปลี่ยนแปลงจากต้นทางก็จะเปลี่ยนไปที่ปลายทางเสมอครับ

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน

Posted: Sat Mar 19, 2011 3:23 pm
by ekkaluk_suk
snasui wrote::D การ Copy แบบ Link เราทำแค่ครั้งแรกที่สร้างงานนี้เท่านั้นครับ สามารถ Link ได้ทั้งคอลัมน์ ค่าที่เปลี่ยนแปลงจากต้นทางก็จะเปลี่ยนไปที่ปลายทางเสมอครับ
ขอท้าวความก่อนครับ คือ shee1 จะไป file ที่ลูกค้าส่งมาให้เรา ส่วน sheet 2 เราต้องการมาจัด Format
เพื่อเอาเข้าในระบบ ERP ดังนั้นแต่ละครั้ง file จะมีการเปลี่ยนแปลงตลอด คือไม่ใช่ file ตัวเดิม ดังนั้นการทำ
format จะทำครั้งเดียว สำหรับ file 1 file

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน

Posted: Sat Mar 19, 2011 3:42 pm
by snasui
:D ยังไม่กระจ่างในสิ่งที่ต้องการจะทำครับ

ถ้าหากต้องการให้นำข้อมูลไปแสดงที่ชีท 2 เฉพาะคอลัมน์โดยไม่มีเงื่อนไข สามารถที่จะ Copy แล้ววางแบบ Link ได้เลย และหากต้องมีการจัด Format จะต้องทราบด้วยครับว่าัจัด Format เป็นแบบใด ถ้าแค่วางสับคอลัมน์กันเท่านั้นก็สามารถทำในตอน Copy และวางแบบ Link คือต้องค่อย ๆ Copy มาทีละคอลัมน์จนครบ

หากเงื่อนไขมีว่าดึงมาเฉพาะทุกบรรทัดที่มีค่า x อันนี้ต้องพึ่งสูตรที่ซับซ้อนขึ้น และหากเงื่อนไขมีว่าได้รับข้อมูลมาเฉพาะชีท 1 ชีทเดียว ต้องการให้สร้างชีท 2 และวางข้อมูลอัตโนมัติ อย่างนี้ถึงจะต้องพึ่ง VBA ครับ

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน

Posted: Sat Mar 19, 2011 3:46 pm
by ekkaluk_suk
snasui wrote::D ยังไม่กระจ่างในสิ่งที่ต้องการจะทำครับ

ถ้าหากต้องการให้นำข้อมูลไปแสดงที่ชีท 2 เฉพาะคอลัมน์โดยไม่มีเงื่อนไข สามารถที่จะ Copy แล้ววางแบบ Link ได้เลย และหากต้องมีการจัด Format จะต้องทราบด้วยครับว่าัจัด Format เป็นแบบใด ถ้าแค่วางสับคอลัมน์กันเท่านั้นก็สามารถทำในตอน Copy และวางแบบ Link คือต้องค่อย ๆ Copy มาทีละคอลัมน์จนครบ

หากเงื่อนไขมีว่าดึงมาเฉพาะทุกบรรทัดที่มีค่า x อันนี้ต้องพึ่งสูตรที่ซับซ้อนขึ้น และหากเงื่อนไขมีว่าได้รับข้อมูลมาเฉพาะชีท 1 ชีทเดียว ต้องการให้สร้างชีท 2 และวางข้อมูลอัตโนมัติ อย่างนี้ถึงจะต้องพึ่ง VBA ครับ
และหากเงื่อนไขมีว่าได้รับข้อมูลมาเฉพาะชีท 1 ชีทเดียว ต้องการให้สร้างชีท 2 และวางข้อมูลอัตโนมัติ อย่างนี้ถึงจะต้องพึ่ง VBA ครับ

อันนี้เลยครับที่ต้องการ พอจะชี้แนะได้มั้ยคัรบ

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน

Posted: Sat Mar 19, 2011 3:55 pm
by snasui
:D ลองดู Code ด้านล่างครับ

Code: Select all

Sub CopyRage()
    On Error Resume Next
    Worksheets.Add
    ActiveSheet.Name = "2"
    Worksheets("1").Range("V6:V73").Copy
    Worksheets("2").Range("A1").PasteSpecial xlPasteValues
    Worksheets("1").Range("O6:O73").Copy
    Worksheets("2").Range("B1").PasteSpecial xlPasteValues
    Worksheets("1").Range("L6:M73").Copy
    Worksheets("2").Range("C1").PasteSpecial xlPasteValues
    Application.CutCopyMode = False
End Sub

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน

Posted: Sat Mar 19, 2011 4:02 pm
by ekkaluk_suk
ขออีกนิดครับ
ต้อง copy วางที่ Sheet ไหนและมันจะทำงานด้วยคำสั่งอย่างไรครับ รบกวนหน่อยเนื่องจาก VBA ยังไม่เคยใช้งานครับ :D

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน

Posted: Sat Mar 19, 2011 4:13 pm
by snasui
:P สามารถทำตามนี้ครับ

1. ที่โปรแกรม Excel กดแป้น Alt+F11 จะเข้าหน้าต่าง VBE
2. ที่หน้าต่าง VBE คลิกเมนู Insert เลือก Module
3. Copy Code ด้านล่างนี้ไปวาง (ผมปรับเพิ่มให้หลังจากสังเกตเห็นว่าให้เติมข้อมูลให้เต็มช่องที่ว่าง ๆ ไว้ด้วย)

Code: Select all

Sub CopyRage()
Dim r1 As Range
Dim r2 As Range
Dim i As Integer
    On Error Resume Next
    Worksheets.Add
    ActiveSheet.Name = "2"
    Worksheets("1").Range("V6:V73").Copy
    Worksheets("2").Range("A1").PasteSpecial xlPasteValues
    Worksheets("1").Range("O6:O73").Copy
    Worksheets("2").Range("B1").PasteSpecial xlPasteValues
    Worksheets("1").Range("L6:M73").Copy
    Worksheets("2").Range("C1").PasteSpecial xlPasteValues
    With Worksheets("2")
            i = .Range("B65536").End(xlUp).Row
            Set r2 = .Range("A2:A" & i)
    End With
    For Each r1 In r2
        If r1 = "" Then
            r1 = r1.End(xlUp)
        End If
    Next
    Application.CutCopyMode = False
End Sub
4. กดแป้น Alt+Q เพื่อกลับไปยัง Excel และปิด VBE
5. เมื่อต้องการ Run Code ให้กดแป้น Alt+F8 > เลือก CopyRange > Run

เราสามารถสร้าง Object ใด ๆ เอาไว้เพื่อให้คลิกแล้ว Run Macro ได้ง่าย ๆ ครับ เมื่อสร้าง Object แล้วให้คลิกขวาที่ Object จากนั้นเลือก Assigned Macro > เลือก CopyRange

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน

Posted: Sat Mar 19, 2011 5:47 pm
by ekkaluk_suk
snasui wrote::P สามารถทำตามนี้ครับ

1. ที่โปรแกรม Excel กดแป้น Alt+F11 จะเข้าหน้าต่าง VBE
2. ที่หน้าต่าง VBE คลิกเมนู Insert เลือก Module
3. Copy Code ด้านล่างนี้ไปวาง (ผมปรับเพิ่มให้หลังจากสังเกตเห็นว่าให้เติมข้อมูลให้เต็มช่องที่ว่าง ๆ ไว้ด้วย)

Code: Select all

Sub CopyRage()
Dim r1 As Range
Dim r2 As Range
Dim i As Integer
    On Error Resume Next
    Worksheets.Add
    ActiveSheet.Name = "2"
    Worksheets("1").Range("V6:V73").Copy
    Worksheets("2").Range("A1").PasteSpecial xlPasteValues
    Worksheets("1").Range("O6:O73").Copy
    Worksheets("2").Range("B1").PasteSpecial xlPasteValues
    Worksheets("1").Range("L6:M73").Copy
    Worksheets("2").Range("C1").PasteSpecial xlPasteValues
    With Worksheets("2")
            i = .Range("B65536").End(xlUp).Row
            Set r2 = .Range("A2:A" & i)
    End With
    For Each r1 In r2
        If r1 = "" Then
            r1 = r1.End(xlUp)
        End If
    Next
    Application.CutCopyMode = False
End Sub
4. กดแป้น Alt+Q เพื่อกลับไปยัง Excel และปิด VBE
5. เมื่อต้องการ Run Code ให้กดแป้น Alt+F8 > เลือก CopyRange > Run

เราสามารถสร้าง Object ใด ๆ เอาไว้เพื่อให้คลิกแล้ว Run Macro ได้ง่าย ๆ ครับ เมื่อสร้าง Object แล้วให้คลิกขวาที่ Object จากนั้นเลือก Assigned Macro > เลือก CopyRange

1.ถ้าต้องการให้ของเขตของข้อมูลยืดหยุ่นมากขึ้น สามารถระบุ column ไปอย่างเดียวได้หรือไม่ เผื่ออนาคตมีข้อมูลมากว่าแถวที่ 73
2.สูตรที่ copy มาของ column O ให้คูณ 1,000 ด้วยได้หรือไม่ เช่นต้นทางเป็น 14.700 ให้วางเป็น 14700

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน

Posted: Sat Mar 19, 2011 5:58 pm
by snasui
:) เปลี่ยนเลข 73 เป็นเลขใด ๆ ตามต้องการครับ (เช่นเปลี่ยนเป็น 65536) ส่วนจะให้คูณ 1000 ด้วยนั้นลองดู Code ตามด้านล่างครับ

Code: Select all

Sub CopyRage()
Dim r1 As Range
Dim r2 As Range
Dim i As Integer
    On Error Resume Next
    Worksheets.Add after:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = "2"
    Worksheets("1").Range("V6:V73").Copy
    Worksheets("2").Range("A1").PasteSpecial xlPasteValues
    Worksheets("1").Range("O6:O73").Copy
    Worksheets("2").Range("B1").PasteSpecial xlPasteValues
    Worksheets("1").Range("L6:M73").Copy
    Worksheets("2").Range("C1").PasteSpecial xlPasteValues
    With Worksheets("2")
            i = .Range("B65536").End(xlUp).Row
            Set r2 = .Range("A2:A" & i)
    End With
    For Each r1 In r2
        If r1 = "" Then
            r1 = r1.End(xlUp)
        End If
        r1.Offset(0, 1) = r1.Offset(0, 1) * 1000
    Next
    Application.CutCopyMode = False
End Sub

Re: ต้องการ Sum ข้อมูลไปแสดงอีกแผ่นงาน

Posted: Sat Mar 19, 2011 6:09 pm
by ekkaluk_suk
ขอบคุณมากครับ ตรงตามความต้องการจริง ๆ สมกับเป็นกระบี่มือ 1 จริง ๆ :o :o