Page 2 of 3
Re: เพิ่มข้อมูลใหม่
Posted: Wed Jan 07, 2015 2:58 pm
by san02551
สวัสดีปีใหม่ ครับ
จากไฟล์ที่แนบ ผมต้องการค้นหาข้อมูล จากกลุ่มคำครับ เช่น กระดาษ ก็แสดงข้อมูลที่มีคำว่า กระดาษ แสดง ครับ
โดยใส่คำค้นหาที่ N5 ข้อมูลจะแสดงที่ N7:P50 หรือจากจำนวนข้อมูลที่มี ครับ
Re: เพิ่มข้อมูลใหม่
Posted: Wed Jan 07, 2015 3:43 pm
by logic
ลองทดสอบสูตรนี้ที่ N7 ครับ
=IFERROR(INDEX(Sheet2!A$3:A$19,SMALL(IF(ISNUMBER(SEARCH($N$5,Sheet2!$A$3:$A$19)),ROW(Sheet2!$A$3:$A$19)-ROW(Sheet2!$A$3)+1),ROWS(N$7:N7))),"")
เป็นสูตรอาร์เรย์ต้องกดแป้น Ctrl+Shift+Enter แล้วค่อย Copy ไปวางด้านขวาและด้านล่าง
Re: เพิ่มข้อมูลใหม่
Posted: Thu Jan 08, 2015 2:21 pm
by san02551
ข้อมูลมีประมาณ 2000 แถว ครับ ดึงข้อมูลรอนานมากครับ พอจะมีวิธีการอื่นไหม ครับ
Re: เพิ่มข้อมูลใหม่
Posted: Thu Jan 08, 2015 2:53 pm
by snasui
การใช้สูตรกับข้อมูลปริมาณมากๆ จะเกิดการคำนวณนาน ยิ่งข้อมูลมากก็จะยิ่งช้า หากต้องการให้เร็วคงต้องหันมาใช้ VBA ลองเขียนมาเองก่อน ติดตรงไหนค่อยถามกันต่อครับ
Re: เพิ่มข้อมูลใหม่
Posted: Thu Jan 08, 2015 7:26 pm
by san02551
ที่ Sheet1 cell b1 พิมพ์คำว่า กระดาษ คลิกปุ่มค้นหา
ให้โชว์ข้อมูล หมวดกระดาษที่ b3:d50
(หรือเท่าจำนวนที่มี ครับ)
Re: เพิ่มข้อมูลใหม่
Posted: Thu Jan 08, 2015 9:33 pm
by snasui
ตัวอย่าง Code ตามด้านล่างครับ
Code: Select all
Sub Rectangle1_Click()
Dim r As Range, rall As Range
Dim rcheck As Range
Set rcheck = Sheets(1).Range("b1")
Sheets(1).Range("b3").Resize(1000, 3).ClearContents
With Sheets(2)
Set rall = .Range("a3", .Range("a" & .Rows.Count).End(xlUp))
For Each r In rall
If InStr(r.Value, rcheck) > 0 Then
With Sheets(1)
.Range("b" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(1, 3).Value _
= r.Resize(1, 3).Value
End With
End If
Next r
End With
End Sub
Re: เพิ่มข้อมูลใหม่
Posted: Sun Jan 11, 2015 8:26 am
by san02551
Code: Select all
Sub Rectangle1_Click()
Dim r As Range, rall As Range
Dim rcheck As Range
Set rcheck = Sheets(Edit).Range("b1")
Sheets(Edit).Range("b3").Resize(1000, 3).ClearContents
With Sheets(raca)
Set rall = .Range("a3", .Range("a" & .Rows.Count).End(xlUp))
For Each r In rall
If InStr(r.Value, rcheck) > 0 Then
With Sheets(Edit)
.Range("b" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(1, 3).Value _
= r.Resize(1, 3).Value
End With
End If
Next r
End With
End Sub
Re: เพิ่มข้อมูลใหม่
Posted: Sun Jan 11, 2015 8:27 am
by san02551
พอดีผมได้เพิ่ม Sheet ขึ้นมาอีก เพื่อนำไปใช้งานจริง และก็ได้เปลี่ยนชื่อ Sheet ใหม่ ที่code ผมได้แก้ไข แต่ผมไม่เข้าใจครับ
Re: เพิ่มข้อมูลใหม่
Posted: Sun Jan 11, 2015 8:45 am
by snasui
เท่าที่เห็นชื่อชีทยังไม่ถูกต้อง จะต้องครอบด้วยฟันหนู ไม่เช่นนั้นก็ต้องใส่ลำดับของชีทนั้น ๆ ตามตัวอย่างที่ให้ไปครับ
Re: เพิ่มข้อมูลใหม่
Posted: Sun Jan 11, 2015 9:12 am
by san02551
ขอคุณครับ ลองทำดูก่อน ติดตรงไหน ผมขอรบกวนอีกครั้ง เป็นโปรแกรมจัดซื้อจัดจ้างของโรงเรียนครับ
Re: เพิ่มข้อมูลใหม่
Posted: Sun Jan 11, 2015 9:15 am
by snasui
snasui wrote: เท่าที่เห็นชื่อชีทยังไม่ถูกต้อง จะต้องครอบด้วยฟันหนู ไม่เช่นนั้นก็ต้องใส่ลำดับของชีทนั้น ๆ ตามตัวอย่างที่ให้ไปครับ
ผมหมายถึงชื่อชีทที่เขียนไว้ใน Code นะครับ
Re: เพิ่มข้อมูลใหม่
Posted: Sun Jan 11, 2015 7:35 pm
by san02551
ไฟล์ที่ทำการแก้ไขแล้ว ครับ
Code: Select all
Sub Rectangle1_Click()
Dim r As Range, rall As Range
Dim rcheck As Range
Set rcheck = Sheets("edit").Range("b1")
Sheets("edit").Range("b3").Resize(1000, 4).ClearContents
With Sheets("raca")
Set rall = .Range("a3", .Range("a" & .Rows.Count).End(xlUp))
For Each r In rall
If InStr(r.Value, rcheck) > 0 Then
With Sheets("edit")
.Range("b" & .Rows.Count).End(xlUp).Offset(1, 0).Resize(1, 4).Value _
= r.Resize(1, 4).Value
End With
End If
Next r
End With
End Sub
Re: เพิ่มข้อมูลใหม่
Posted: Tue Jan 13, 2015 9:25 am
by san02551
เรียน ทุกๆท่าน ที่เคารพ
ผมต้องการพิมพ์ข้อมูลที่ Sheet print โดยสร้างปุ่มสั่งพิมพ์ไว้ที่ Sheet menu เวลาสั่งพิมพ์ ผมไม่ต้องการให้ โชว์ Sheet print และ พอจะเขียน Code สั่งให้พิมพ์ เฉพาะที่มีข้อมูลใน cell ได้ไหม ครับ
ผมเขียน Code ให้พิมพ์ตั้งแต่ b2:f338 ครับ (เพราะต้องเพิ่มข้อมูลอีก ครับ)
Code: Select all
Sub Rectangle1_Click()
Application.ScreenUpdating = False
Sheets("print").Visible = True
Sheets("print").Select
ActiveSheet.PageSetup.PrintArea = "$b$2:$f$338"
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True
Sheets("print").Visible = True
Application.ScreenUpdating = True
End Sub
Re: เพิ่มข้อมูลใหม่
Posted: Tue Jan 13, 2015 7:00 pm
by snasui
ตัวอย่างการปรับ Code ครับ
Code: Select all
Sub Rectangle1_Click()
Application.ScreenUpdating = False
Sheets("print").Visible = True
Sheets("print").Select
ActiveSheet.PageSetup.PrintArea = ActiveSheet.Range("b2").CurrentRegion.Address
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True
Sheets("print").Visible = True
Application.ScreenUpdating = True
End Sub
Re: เพิ่มข้อมูลใหม่
Posted: Wed Jan 14, 2015 7:23 am
by san02551
ส่วนก่อนนั้น ทำได้แล้วครับ
แต่ผมต้องการแทรกข้อความท้ายหน้าของแต่ละหน้า โดยถ้ามีข้อมูล ให้แทรกข้อความ
แตไม่มีข้อมูลก็ไม่ต้องแทรกข้อความ
(ส่วนหัวตารางทำได้แล้วครับ) ตัวอย่างจะอยู่ที่ Sheet data ครับ
Re: เพิ่มข้อมูลใหม่
Posted: Wed Jan 14, 2015 8:24 pm
by snasui
คำว่า มีข้อมูลหรือไม่มีข้อมูล ตรวจสอบจากเซลล์ใดหรือตรวจสอบอย่างไรครับ
Re: เพิ่มข้อมูลใหม่
Posted: Thu Jan 15, 2015 7:00 am
by san02551
ตรวจสอบจาก Sheet print ตั้งแต่ b6:f2000 ( เพราะจ่าจะมีการเพิ่มข้อมูลสินค้า เรื่อยๆ ครับ)
เช่น มีข้อมูลสั่งพิมพ์ 3 หน้า ก็ให้มีการแทรกข้อความที่ หัวตาราง กับท้ายตารางโดยอัตโนมัติ ครับ
ตัวอย่าง เอกสารที่ต้องการพิมพ์ อยู่ที่ Sheet data ครับ
Re: เพิ่มข้อมูลใหม่
Posted: Thu Jan 15, 2015 7:48 pm
by snasui
แนบ Code มาใหม่ แสดงให้เห็นว่าได้เขียน Code การตรวจสอบข้อมูลมาแล้วจะได้ตอบต่อไปจากนั้นครับ
Re: เพิ่มข้อมูลใหม่
Posted: Fri Jan 16, 2015 11:11 am
by san02551
Code: Select all
Sub Rectangle1_Click()
Application.ScreenUpdating = False
Sheets("print").Visible = True
Sheets("print").Select
ActiveSheet.PageSetup.PrintArea = ActiveSheet.Range("b2").CurrentRegion.Address
ActiveWindow.SelectedSheets.PrintOut copies:=1, collate:=True
Sheets("print").Visible = True
Application.ScreenUpdating = True
End Sub
Re: เพิ่มข้อมูลใหม่
Posted: Fri Jan 16, 2015 7:30 pm
by snasui
san02551 wrote:ตรวจสอบจาก Sheet print ตั้งแต่ b6:f2000 ( เพราะจ่าจะมีการเพิ่มข้อมูลสินค้า เรื่อยๆ ครับ)
เช่น มีข้อมูลสั่งพิมพ์ 3 หน้า ก็ให้มีการแทรกข้อความที่ หัวตาราง กับท้ายตารางโดยอัตโนมัติ
Code นี้ไม่ได้ต่างไปจากเดิม ไม่มีบรรทัดใดที่แสดงว่ามีการตรวจสอบข้อมูลตามทีแจ้งมา ลองพยายามมาใหม่ครับ
อ่านโพสต์นี้อีกครั้งครับ
snasui wrote:
แนบ Code มาใหม่ แสดงให้เห็นว่าได้เขียน Code การตรวจสอบข้อมูลมาแล้วจะได้ตอบต่อไปจากนั้นครับ