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