: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
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#1

Post by joo »

ขอคำแนะนำหน่อยครับ... ที่ซีทใบสั่งซื้อในช่องรายการมีวิธีทำให้ข้อความที่ลิงค์มาให้แสดงพอดีกับช่วงเซลล์ที่กำหนดไว้ไหมครับ แบบว่าถ้าข้อความเกินบรรทัดที่
คอลัมภ์ D ก็ให้มาต่อที่บรรทัดลงด้านล่างไปเรื่อยๆ ในแต่ละรายการตามลำดับครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#2

Post by snasui »

:D ไม่สามารถทำได้ครับ ปกติการตัดขึ้นบรรทัดใหม่จากข้อมูลที่เป็นการ Link มาหรือได้จากสูตร จะจัดให้ขึ้นบรรทัดใหม่ในเซลล์เดียวกัน
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#3

Post by joo »

ผมลองปรับการจัดเก็บข้อมูลที่ซีทฐานข้อมูลใหม่แล้วลองทำการลิงค์ข้อมูลมาที่ซีท "ใบสั่งซื้อ " แต่รูปแบบที่ได้ก็ไม่ตรงกับที่ต้องการ
-ลองทำการลิงค์ข้อมูลมาที่ซีท "Order " แต่รูปแบบที่ได้ก็ไม่ตรงกับที่ต้องการ
พอจะมีแนวทางทำได้ไหมครับ :D
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#4

Post by snasui »

:D การจะให้ข้อมูลล้นไปยังเซลล์ด้านขวาได้นั้นให้ยกเลิกการ Merge Cells ก่อนครับ นอกจากนี้เซลล์ด้านขวาจะต้องเป็นเซลล์ว่าง หากไม่เป็นเซลล์ว่างค่าในเซลล์ด้านซ้ายจะไม่ล้นมาได้ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#5

Post by snasui »

:D สำหรับฐานข้อมูลนั้นเก็บตามเติมเหมือนไฟล์แรกถูกต้องแล้วครับ

หากต้องการแยกบรรทัดเพื่อให้ดูสวยงามสามารถใช้ VBA เข้ามาจัดการ ผมทำตัวอย่างมาให้ดูตามด้านล่างโดยยึดไฟล์เดิมเป็นหลัก

Code: Select all

Sub JustifyRange()
With Worksheets("ใบสั่งซื้อ")
    .Range("B12").Formula = _
    "=IF(N($A12),LOOKUP(ROWS(B$12:B12),ฐานข้อมูล!$Q:$Q,ฐานข้อมูล!E:E),"""")"
    .Range("B12").Copy
    .Range("B12:B21").PasteSpecial xlPasteFormulas
    .Range("B12:D21").Copy
    .Range("B12").PasteSpecial xlPasteValues
    .Range("B12:D21").Justify
End With
End Sub
You do not have the required permissions to view the files attached to this post.
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#6

Post by joo »

ขอบคุณครับที่แนะนำ...ได้ทดลองแล้วพบว่าข้อมูลที่แสดงตามเลขที่เอกสารจะไม่ตรงเป็นบางรายการ เช่น เอกสารเลขที่ 0004/2554,0005/2554,0008/2554 เป็นต้น และตรงซีทใบสั่งซื้อเวลาสั่งปริ้นท์จะเซทค่าไว้ที่ 100 เปอร์เซนต์ จึงต้องจัดให้ข้อความในช่องรายการแสดงให้ตรงกับลำดับและดูสวยงามมีวิธีปรับแก้ไหมครับ :D
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#7

Post by snasui »

:roll: การนำสูตรมาปรับใช้เป็นเรื่องลำบากครับ เพราะต้องการกระจายเซลล์เดียวออกเป็นหลาย ๆ เซลล์ ผมจึงทำตัวอย่างให้ด้วยการเขียน Code การให้เลขลำดับก็เช่นกัน จะใช้สูตรเช่นที่ทำมาไม่ได้ครับ

เนื่องจากเห็นว่าค่อนข้างซับซ้อน ผมจึงปรับตัวอย่างมาให้ใหม่ตามด้านล่าง

Code: Select all

Sub FillData()
Dim rs As Range, rsAll As Range
Dim rt As Range, rt1 As Range, rt2 As Range
Dim a() As Variant, c As Integer
Dim i As Integer, lng As Long
lng = Rows.Count
With Worksheets("ใบสั่งซื้อ")
        .Range("B12:B31,A12:A31,G12:G31") = ""
        Set rt1 = .Range("B5")
        Set rt2 = .Range("D31")
End With
With Worksheets("ฐานข้อมูล")
        Set rsAll = .Range("D3", .Range("D" & lng).End(xlUp))
End With
For Each rs In rsAll
    If rs = rt1 Then
        ReDim Preserve a(1, c)
        a(0, c) = rs.Offset(, 1)
        a(1, c) = rs.Offset(, 4)
        c = c + 1
    End If
Next
Worksheets("ใบสั่งซื้อ").Range("B11") = "Running"
For i = 0 To UBound(a, 2)
        Set rt = Worksheets("ใบสั่งซื้อ").Range("B" & lng).End(xlUp).Offset(1, 0)
        rt = a(0, i): rt.Offset(0, 5) = a(1, i): rt.Offset(, -1) = i + 1
        Worksheets("ใบสั่งซื้อ").Range(rt, rt2).Justify
Next i
Worksheets("ใบสั่งซื้อ").Range("B11") = ""
MsgBox "Finish"
End Sub
ส่วนกรณีการพิมพ์แบบให้เต็มหน้า ลองบันทึก Macro การพิมพ์โดยปรับให้พอดีกับหนึ่งหน้า จากนั้นนำ Code Macro มาปรับด้วยตนเองก่อน ติดตรงไหนค่อยมาถามกันต่อครับ :mrgreen:
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#8

Post by joo »

ทดลองโค๊ดที่แนะนำใหม่แล้วครับ...พบว่าส่วนอื่นแสดงผลได้ตามที่ต้องการ แต่ที่คอลัมภ์ Eแสดง "จำนวน" และคอลัมภ์ F แสดง "หน่วย" ค่าไม่ยอมแสดงตามรายการที่ลิงค์มาครับ
คิดว่าน่าจะเกี่ยวกับการเซทเรนจ์ลองปรับที่บรรทัดนี้ .Range("B12:B31,A12:A31,G12:G31,E12:E21") = "" ก็ไม่มีการเปลี่ยนแปลงครับ :P :?:
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#9

Post by snasui »

:lol: ไม่ได้เกี่ยวกับ Range นั้นครับ ที่ค่าไม่มาเพราะไม่ได้เขียน Code ให้ดึงมาครับ

ผมปรับ Code มาให้ใหม่แล้วตามด้านล่าง ดูไฟล์แนบประกอบครับ

Code: Select all

Sub FillData()
Dim rs As Range, rsAll As Range
Dim rt As Range, rt1 As Range, rt2 As Range
Dim a() As Variant, c As Integer
Dim i As Integer, lng As Long
lng = Rows.Count
With Worksheets("ใบสั่งซื้อ")
        .Range("A12:A31,B12:G31") = ""
        Set rt1 = .Range("B5")
        Set rt2 = .Range("D31")
End With
With Worksheets("ฐานข้อมูล")
        Set rsAll = .Range("D3", .Range("D" & lng).End(xlUp))
End With
For Each rs In rsAll
    If rs = rt1 Then
        ReDim Preserve a(3, c)
        a(0, c) = rs.Offset(, 1)
        a(1, c) = rs.Offset(, 2)
        a(2, c) = rs.Offset(, 3)
        a(3, c) = rs.Offset(, 4)
        c = c + 1
    End If
Next
Worksheets("ใบสั่งซื้อ").Range("B11") = "Running"
For i = 0 To UBound(a, 2)
        Set rt = Worksheets("ใบสั่งซื้อ").Range("B" & lng).End(xlUp).Offset(1, 0)
        rt = a(0, i): rt.Offset(0, 3) = a(1, i)
        rt.Offset(0, 4) = a(2, i): rt.Offset(0, 5) = a(3, i)
        rt.Offset(, -1) = i + 1
        Worksheets("ใบสั่งซื้อ").Range(rt, rt2).Justify
Next i
Worksheets("ใบสั่งซื้อ").Range("B11") = ""
MsgBox "Finish"
End Sub
You do not have the required permissions to view the files attached to this post.
joo
Gold
Gold
Posts: 1213
Joined: Sat Apr 17, 2010 3:50 pm

Re: การจัดข้อความที่ลิงค์มาให้พอดีกับช่วงเซลล์

#10

Post by joo »

ขอบคุณครับ...ทดลองแล้วใช้งานได้ตามที่ต้องการแล้วครับ :D
Post Reply