Page 1 of 1

วิธีการดึงข้อมูลจากที่เลือก เพื่อ copy ไปอีก Sheet หนึ่ง

Posted: Wed Aug 19, 2015 2:50 pm
by titti
รบกวนทุกท่านครับ ผมมีเรื่องสอบถาม

คือ ผมต้องการเขียน Code VBA โดยมีทั้งหมด 3 sheet คือ sheet ที่ 1 เป็นเพียงแค่ชื่อ เพื่อใช้ในการเลือกว่าจะเอาค่าใดบ้าง โดยจะเลือกได้ไม่เกินกว่า 5 ค่า ตามตารางใน Sheet ที่ 3

ส่วน Sheet ที่ 2 คือ ฐานข้อมูลของ Sheet ที่ 1 โดยภายหลังจากมีการเลือกค่าใน Sheet ที่ 1 แล้วรายละเอียดอื่นๆ จะถูกย้ายไปยัง Sheet ที่ 3

ส่วน Sheet ที่ 3 คือ Sheet ที่จะแสดงถึงค่าทั้งหมด ภายหลังจากการเลือกข้อมูลใน Sheet ที่ 1 แล้ว รวมถึงรายละเอียดต่างๆ

ไม่ทราบว่าทุกท่านพอจะมีแนวทางในการเขียน Code VBA ด้วยวิธีใดบ้างครับ ขอบคุณมากครับ

Re: วิธีการดึงข้อมูลจากที่เลือก เพื่อ copy ไปอีก Sheet หนึ่ง

Posted: Wed Aug 19, 2015 3:18 pm
by bank9597
ลองบันทึกมาโครมาดูก่อนครับ ติดตรงไหนจะช่วยปรับให้ครับ พอดีว่าฟอรั่มมีกฏครับ

Re: วิธีการดึงข้อมูลจากที่เลือก เพื่อ copy ไปอีก Sheet หนึ่ง

Posted: Wed Aug 19, 2015 5:49 pm
by titti
ขอโทษด้วยครับ

ผมลอง Record Marco มาแล้ว แต่จะใส่ว่า (IF) เพื่อที่จะเลือกค่าใดที่เป็น True และการเลือกค่าใน Sheet 1 ให้ตรงกับค่า Sheet 2 ไม่ได้ครับ

Sub Macro1()
'
' Macro1 Macro
'

'
Sheets("Sheet1").Select
Sheets("Sheet2").Select
Range("B3:E3,B6:E6,B8:E8").Select
Range("B8").Activate
Selection.Copy
Sheets("Sheet3").Select
Range("B3").Select
ActiveSheet.Paste
Range("B3").Select
End Sub

ขอรบกวนด้วยครับ

Re: วิธีการดึงข้อมูลจากที่เลือก เพื่อ copy ไปอีก Sheet หนึ่ง

Posted: Wed Aug 19, 2015 7:23 pm
by snasui
:D ให้แนบ Code มาในไฟล์แล้วแนบไฟล์นั้นมาใหม่ครับ

สำหรับการโพสต์ Code ให้อ่านตามกฎข้อ 5 ด้านบนครับ :roll:

Re: วิธีการดึงข้อมูลจากที่เลือก เพื่อ copy ไปอีก Sheet หนึ่ง

Posted: Thu Aug 20, 2015 10:28 am
by titti
ขอโทษอีกครั้งครับที่ผมไม่ได้อ่าน กฏ การใช้บอร์ดครับ

Code: Select all

Sub Macro1()
'
' Macro1 Macro
'

'
    Dim j, result, lastrow, a As Long
    j = Worksheets("Sheet2").Range("G3").Value
    lastrow = Worksheets("Sheet1").UsedRange.Rows.Count
    For Row = 3 To lastrow
        If j = True Then
            Sheets("Sheet2").Select
            result = Sheets("Sheet2").Range("B" & Row).Copy
            Sheets("Sheet3").Select
            a = Sheets("Sheet3").Range("B" & Row).PasteSpecial
        End If
             Row = Row + 1
    Next
End Sub

Re: วิธีการดึงข้อมูลจากที่เลือก เพื่อ copy ไปอีก Sheet หนึ่ง

Posted: Thu Aug 20, 2015 11:24 am
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Sub test()
    Dim rAll As Range, r As Range
    With Sheets("Sheet2")
        Set rAll = .Range("g3", .Range("g" & .Rows.Count).End(xlUp))
    End With
    Sheets("Sheet3").Range("b3:e1000").ClearContents
    For Each r In rAll
        If r.Value = True Then
            With Sheets("Sheet3")
                If .Range("b3").Value = "" Then
                    .Range("b3").Value = r.Offset(0, -5).Value
                Else
                    .Range("b" & .Rows.Count).End(xlUp).Offset(1, 0).Value = r.Offset(0, -5).Value
                End If
            End With
        End If
    Next r
End Sub

Re: วิธีการดึงข้อมูลจากที่เลือก เพื่อ copy ไปอีก Sheet หนึ่ง

Posted: Thu Aug 20, 2015 1:51 pm
by bank9597
อีกตัวอย่างครับ

Code: Select all

Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim ws3 As Worksheet
    Dim rRange As Range
    Dim nRange As Range
    Dim lRange As Range
    Dim nlRange As Range
    Dim tRange As Range
    Dim ntRange As Range
    Dim lngws1LastRow As Long
    Dim lngws2LastRow As Long
    Dim lngws3LastRow As Long
    
    Set ws1 = Sheets("Sheet1")
    Set ws2 = Sheets("Sheet2")
    Set ws3 = Sheets("Sheet3")
    
    lngws1LastRow = ws1.Range("G" & ws1.Rows.Count).End(xlUp).Row
    lngws2LastRow = ws2.Range("B" & ws2.Rows.Count).End(xlUp).Row
    
    Set rRange = ws1.Range("G3:G" & lngws1LastRow)
    Set lRange = ws2.Range("B3:B" & lngws2LastRow)
    Set tRange = ws3.Range("B3:E100")
    
    tRange.ClearContents

    For Each nRange In rRange
        
        If nRange Then
            For Each nlRange In lRange
                If nlRange = nRange.Offset(0, -5) Then
                   nlRange.Offset(0, 0).Resize(1, 4).Copy
                   lngws3LastRow = ws3.Range("B" & ws3.Rows.Count).End(xlUp).Row
                   ws3.Range("B" & lngws3LastRow + 1).PasteSpecial xlPasteValues
                End If
            Next nlRange
        End If
    Next nRange

Re: วิธีการดึงข้อมูลจากที่เลือก เพื่อ copy ไปอีก Sheet หนึ่ง

Posted: Thu Aug 20, 2015 9:13 pm
by titti
ขอบคุณ ท่าน snasui และ ท่าน bank9597 มากครับ