: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

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

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
titti
Member
Member
Posts: 4
Joined: Sat Aug 15, 2015 2:31 pm

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

#1

Post 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 ด้วยวิธีใดบ้างครับ ขอบคุณมากครับ
You do not have the required permissions to view the files attached to this post.
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

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

#2

Post by bank9597 »

ลองบันทึกมาโครมาดูก่อนครับ ติดตรงไหนจะช่วยปรับให้ครับ พอดีว่าฟอรั่มมีกฏครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
titti
Member
Member
Posts: 4
Joined: Sat Aug 15, 2015 2:31 pm

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

#3

Post 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

ขอรบกวนด้วยครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31258
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#4

Post by snasui »

:D ให้แนบ Code มาในไฟล์แล้วแนบไฟล์นั้นมาใหม่ครับ

สำหรับการโพสต์ Code ให้อ่านตามกฎข้อ 5 ด้านบนครับ :roll:
titti
Member
Member
Posts: 4
Joined: Sat Aug 15, 2015 2:31 pm

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

#5

Post 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
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31258
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#6

Post 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
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

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

#7

Post 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
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
titti
Member
Member
Posts: 4
Joined: Sat Aug 15, 2015 2:31 pm

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

#8

Post by titti »

ขอบคุณ ท่าน snasui และ ท่าน bank9597 มากครับ
Post Reply