: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

ทำข้อมูลให้วางต่อเนื่องในตาราง Excel

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
yooyoyui
Member
Member
Posts: 6
Joined: Fri Dec 13, 2013 2:51 pm

ทำข้อมูลให้วางต่อเนื่องในตาราง Excel

#1

Post by yooyoyui »

Code: Select all

i = 1
    For i = 1 To no_c
            If c_text(i) = "1" Then
             Workbooks("Sample Excel File Data_test.xlsx").Worksheets("CMM (1)").Range("h12").Offset(0, i).Value = data(i)
            End If
    Next i
  
    i = 1
    For i = 1 To no_c
            If c_text(i) = "2" Then
             Workbooks("Sample Excel File Data_test.xlsx").Worksheets("CMM (1)").Range("h13").Offset(0, i).Value = data(i)
            End If
    Next i
4.png
ไฟล์ที่ดึงข้อมูลมา.xlsx
พอรันแล้วข้อมูลที่ใส่ในตารางจะเว้นข้ามช่องตามข้อมูลที่มันหาค่าจะมีวิธีแก้โค้ดยังไงค่ะ ที่จะให้ข้อมูลเรียงต่อกันในตาราง

และถ้าเราจะวนลูปให้มันหาค่า จากตัวเลข 1 - 100 จะสามารถทำได้ไหมค่ะ

ขอบคุณค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำข้อมูลให้วางต่อเนื่องในตาราง Excel

#2

Post by snasui »

:D แนบ Code ในไฟล์ แสดงตัวอย่างคำตอบที่ต้องการมาในไฟล์ ชี้ให้เห็นว่าข้อมูลต้นทางเป็นอย่างไร ต้องการคำตอบเป็นอย่างไร เงื่อนไขในการดึงข้อมูลมาเรียงต่อกันคืออะไร จะได้เข้าใจตรงกันครับ
yooyoyui
Member
Member
Posts: 6
Joined: Fri Dec 13, 2013 2:51 pm

Re: ทำข้อมูลให้วางต่อเนื่องในตาราง Excel

#3

Post by yooyoyui »

data_report.xlsm

ตัวอย่างข้อมูลที่จะดึง ซึ่งในการดึงข้อมูลจะแบ่งข้อมูลเป็นชุดข้อมูลในตัวอย่างจะมี 4 ชุดข้อมูล ซึ่งแต่ละชุดข้อมูลจะนำไปใส่ในตารางแบ่งเป็นคอลัมน์ 1,2,3 จนถึง 10

การดึงค่าจะหาค่าตัวเลขจากคอลัมน์ a แล้วจะนำข้อมูลที่ตรงกันในคอลัมน์ c ไปใส่ในตาราง report ให้ตรงตามข้อ ค่าที่ 1 ของชุดที่ 1 จะอยู่ในคอลัมน์ 1 แถวที่ 1

ค่าที่ 1 ของชุดที่ 2 จะอยู่ในคอลัมน์ 2 แถวที่ 1 , ค่าที่ 1 ของชุดที่ 3 จะอยู่ในคอลัมน์ 3 แถวที่ 1 เรียงไปแบบนี้จนครบ 10 ชุดข้อมูลค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำข้อมูลให้วางต่อเนื่องในตาราง Excel

#4

Post by snasui »

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

Code: Select all

Sub test()
    Dim rAll As Range
    Dim r As Range
    Dim rt As Range
    Set rAll = Sheets("data").Range("a1:a580")
    For Each r In rAll
        If r.Value <= 10 Then
            With Sheets("data_report")
                Set rt = .Range("h12")
            End With
            If rt.Offset(r.Value - 1, 0) = "" Then
                rt.Offset(r.Value - 1, 0) = r.Offset(0, 2).Value
            Else
                rt.Offset(r.Value - 1, 1000).End(xlToLeft) _
                    .Offset(0, 1) = r.Offset(0, 2)
            End If
        End If
    Next r
End Sub
yooyoyui
Member
Member
Posts: 6
Joined: Fri Dec 13, 2013 2:51 pm

Re: ทำข้อมูลให้วางต่อเนื่องในตาราง Excel

#5

Post by yooyoyui »

แล้วถ้าจะเขียนต่อโดยให้นำ ค่าที่ 28 ถึง 70 ไว้ใน ชีทที่ 2 และ จาก 71- 100 ไว้ในชีทที่ 3 ต้องเพิ่มตรงไหนค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำข้อมูลให้วางต่อเนื่องในตาราง Excel

#6

Post by snasui »

:D ลองปรับมาเองก่อนตามกฎข้อ 5 ด้านบนครับ :roll: ติดตรงไหนค่อยถามกันต่อครับ
yooyoyui
Member
Member
Posts: 6
Joined: Fri Dec 13, 2013 2:51 pm

Re: ทำข้อมูลให้วางต่อเนื่องในตาราง Excel

#7

Post by yooyoyui »

อยากจะให้อธิบายความหมายของโค้ดแต่ละบรรทัด ให้หน่อยได้ไหมค่ะ พอดีไม่ทราบจริงๆค่ะ

ขอบคุณค่ะ

Code: Select all

            If rt.Offset(r.Value - 1, 0) = "" Then
                rt.Offset(r.Value - 1, 0) = r.Offset(0, 2).Value
            Else
                rt.Offset(r.Value - 1, 1000).End(xlToLeft) _
                    .Offset(0, 1) = r.Offset(0, 2)
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำข้อมูลให้วางต่อเนื่องในตาราง Excel

#8

Post by snasui »

:D อธิบายหลัก ๆ นะครับ

r.offset(x,y) หมายถึงจากค่า r ให้ลงไปด้านล่าง x บรรทัด และไปทางขวา y คอลัมน์

x และ y สามารถเป็นลบและ 0 ได้ หาก Code เป็น r.offset(0,0) แสดงว่าอยู่ที่เดิม

r.end(xltoleft) หมายถึงว่าจากตำแหน่งค่า r ให้เลื่อนไปทางซ้ายจนกว่าจะพบเซลล์ที่มีข้อมูล
yooyoyui
Member
Member
Posts: 6
Joined: Fri Dec 13, 2013 2:51 pm

Re: ทำข้อมูลให้วางต่อเนื่องในตาราง Excel

#9

Post by yooyoyui »

If r.Value <= 27 Then
With Sheets("CMM (2)")
Set rt = .Range("h3")
End With
If rt.Offset(r.Value - 1, 0) = "" Then
rt.Offset(r.Value - 1, 0) = r.Offset(0, 2).Value
Else
rt.Offset(r.Value - 1, 1000).End(xlToLeft) _
.Offset(0, 1) = r.Offset(0, 2)
End If

พอเปลี่ยน r.Value <= 27 เป็น r.Value >= 28 ทำไมถึงติด debug. ที่่ rt.Offset(r.Value - 1, 0) ค่ะ มันสัมพันธ์กันยังไงค่ะ
พอดีไม่ค่อยมีพื้นฐานเรื่องนี้เท่าไรนักค่ะ ต้องขอโทษด้วยนะค่ะ ไม่เข้าใจจริงๆ
ขอบคุณค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำข้อมูลให้วางต่อเนื่องในตาราง Excel

#10

Post by snasui »

:D แนบไฟล์ตัวอย่างที่ Update Code ด้วยตัวเองอันล่าสุดมาด้วย พร้อมทั้งอธิบายว่าต้องการคำตอบเป็นอย่างไร จะได้ช่วยทดสอบได้ครับ
yooyoyui
Member
Member
Posts: 6
Joined: Fri Dec 13, 2013 2:51 pm

Re: ทำข้อมูลให้วางต่อเนื่องในตาราง Excel

#11

Post by yooyoyui »

report.1.xlsm

ต้องการให้ข้อมูลที่หาได้จากตัวเลข 1 - 27 ใส่ไว้ใน sheet1 = CMM (1)

และข้อมูลที่หาได้จากตัวเลข 28 - 70 ใส่ไว้ใน sheet2 = CMM (2)

และข้อมูลที่หาได้จากตัวเลข 71 - 100 ใส่ไว้ใน sheet3 = CMM (3)
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ทำข้อมูลให้วางต่อเนื่องในตาราง Excel

#12

Post by snasui »

:D ตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Sub test0()
    Dim rAll As Range
    Dim r As Range
    Dim rt As Range
    Set rAll = Sheets("data").Range("a1:a580")
    For Each r In rAll
        If r.Value >= 1 And r.Value <= 100 Then
            Select Case r.Value
                Case 1 To 27
                    Set rt = Sheets("CMM (1)").Range("h12").Offset(r.Value - 1, 0)
                Case 28 To 70
                    Set rt = Sheets("CMM (2)").Range("h3").Offset(r.Value - 28, 0)
                Case 71 To 100
                    Set rt = Sheets("CMM (3)").Range("h3").Offset(r.Value - 71, 0)
            End Select
            If rt = "" Then
                rt = r.Offset(0, 2).Value
            Else
                rt.Offset(0, 1000).End(xlToLeft).Offset(0, 1) = r.Offset(0, 2)
            End If
        End If
    Next r
End Sub
Post Reply