การสั่งให้พิมพ์ตามจำนวนที่พบต้องใช้ VBA เข้ามาช่วยถึงจะทำเช่นนั้นได้ และใช้แค่ฟอร์มเดียวก็เพียงพอ ผมเขียน Code ให้แล้วตามด้านล่าง หากเป็นไปได้ฟอร์มที่ใช้ไม่ควร Merge Cell เพราะจะใช้งานลำบากกว่าปกติ มีหัวข้อเพียง 5 หัวข้อ ก็จะใช้เพียง 5 คอลัมน์ คือ A:F แต่ตอนนี้ใช้ไปถึง A:AR
สำหรับการทดลองการพิมพ์ ลองกดปุ่ม Print แล้วสังเกตดูผล
Code: Select all
Sub PrintForm()
Dim i As Integer
For i = 1 To Worksheets("ÃÒ§ҹ").Range("AT1")
With Worksheets("ÃÒ§ҹ").PageSetup
.PrintArea = "$A$1:$AR$17"
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
Worksheets("ÃÒ§ҹ").PrintOut
Next i
End Sub
สำหรับการกำหนดให้แสดงเฉพาะรายการที่มีเพียงรายการเดียวของแต่ละวัน ผมเขียนสูตรเพื่อหาข้อมูลออกมาก่อน จากนั้นค่อยเขียนสูตรเพื่อดึงข้อมูลมาแสดง โดยเขียนสูตรดังนี้
1. ที่ชีท Database เซลล์ I3 คีย์สูตรเพื่อเลือกค่าที่ไม่ซ้ำในแบบที่ทำสีมาให้
=SUMPRODUCT(--($B$3:$B$184=$B3),--($D$3:$D$184=D3))
Enter > Copy ลงด้านล่าง
2. ที่ชีทการหารหัสไม่ซ้ำ เพื่อนับค่าตามข้อ 1 ว่าพบจำนวนเท่าไร ที่เซลล์ F1 คีย์
=COUNTIF(Database!I3:I184,1)
Enter
3. ที่ชีทการหารหัสไม่ซ้ำ ที่ A2 คีย์สูตรเพื่อแสดงรายการทั้งหมด
=IF(ROWS(A$2:A2)>$F$1,"",INDEX(Database!B$3:B$184,SMALL(IF(Database!$I$3:$I$184=1,ROW(Database!$B$3:$B$184)-ROW(Database!$B$3)+1),ROWS(A$2:A2))))
Ctrl+Shift+Enter > Copy ลงด้านล่าง
การหาเฉพาะน้ำมันดีเซลล์ตามวันและตามรหัสรถที่ชีท 768 หน้าเซลล์ D7 คีย์
=IF(SUMPRODUCT(--(Database!$D$3:$D$184="น้ำมันดีเซล"),--($C$2=Database!$C$3:$C$184),--($A8=Database!$B$3:$B$184))>0,SUMPRODUCT(--(Database!$D$3:$D$184="น้ำมันดีเซล"),--($C$2=Database!$C$3:$C$184),--($A8=Database!$B$3:$B$184),Database!$E$3:$E$184),"")
Enter > Copy ลงด้านล่าง
ลองดูตามไฟล์แนบครับ
You do not have the required permissions to view the files attached to this post.