Page 1 of 2
ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 4:33 pm
by khainui
คือจะบันทึกข้อมูลลงใน sheet data ซึ่งจะมีเลขที่ No กำกับแต่ละรายการ ปัญหาคือจะเขียนคำสั่ง VBA อย่างไรให้ช่อง C2 แสดงลำดับต่อไปจากเลขที่สุดท้าย
เพื่อจะได้บันทึกรายการได้ทันทีครับ

Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 4:34 pm
by bank9597

ต้องแนบไฟล์มาดูกันครับ
Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 7:30 pm
by snasui

ลองตามนี้ครับ
ที่เซลล์ C2 คีย์สูตรตามด้านล่าง
=LOOKUP(9.99999999999999E+307,data!B:B)+1
Enter
Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 7:39 pm
by yoguzaa
ไม่รู้ว่าใช่แบบที่ต้องการหรือเปล่านะครับ
ที่ชีท data!A2 ใส่สูตร =MAX(B:B) เป็นการหาค่าสูงสุดในคอลัมภ์ B
ที่ชีท sheet3!C2 พิมพ์ =data!A2+1 ค่าสูงสุดในคอลัมภ์ B + 1
Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 7:42 pm
by yoguzaa
ช้ากว่าอาจารย์อีก แหะ แหะ
Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 8:07 pm
by khainui
เอ่อสูตรที่ให้ของคุณ yoguzaa และอาจารย์ใช้กรณีมีเลขที่เริ่มต้นแล้ว ซึ่งใ่ส่สูตรในช่อง C2
แต่ถ้ากรณีเริ่มต้นตั้งแต่แรกเลย อย่างในปี 2555 ผมเริ่มบันทึกรายการงานเข้างานแรกกำกับด้วย 1 ของปี 2555 ฉะนั้นช่อง c2 ผมจะต้องคีย์เลข 1 ครั้งแรกเลย
แล้วพอจบปี 2555 ขึ้นปี 2556 ผมก็จะเริ่มที่เลข 1 ใหม่ อย่างนี้มันจะใส่สุตรแบบนี้ไม่ได้ใช่ไม๊ครับครับ เพราะในช่อง c2 มันเป็นสูตรการใส่สูตร
Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 8:16 pm
by snasui

การแสดงตัวเลขขึ้นกับเงื่อนไขใดบ้างควรแจ้งมาทุกเงือนไข เพราะผมจะตอบตามที่ถามครับ

Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 8:37 pm
by khainui
อ่าครับผมอธิบายไม่ละเอียดเองครับ
ทีนี้ผมลองเพิ่มสูตรให้อิงตัวเลขตรงช่อง b1 ตามไฟล์แนบ
สูตรของอาจารย์
=IF(B1>1,LOOKUP(9.99999999999999E+307,data!B:B)+1,IF(B1="","",1))
สูตรของคุณ yoguzaa
=IF(B1="","",IF(B1=1,1,data!A2+1))
หน้าจะแก้ปัญหาเริ่มบันทึกตั้งแต่เลขที่ 1 ครั้งแรกได้ โดยไปเปลี่ยนที่ช่อง b1 เป็นเลขอื่นที่ไม่ใช่ 1
แต่ทีนี้พอขึ้นปีใหม่ผมจะเริ่มเป็นเลข 1 ใหม่ มันจะติดคำสั่ง vba ว่าเลข 1 ซ้ำแล้วบันทึกไม่ได้
จะเขียน VBA อย่างไรให้ดูที่ช่อง c4 ด้วยว่าถ้าเป็นปีใหม่แล้วจะถือว่าเลข 1 ไม่ซ้ำครับ
Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 8:41 pm
by snasui

อยากทราบว่า Code อยู่ในไฟล์ไหน ชื่อ Module อะไร Sub Procedure ใด เพื่อจะได้เข้าถึงข้อมูลได้โดยไวครับ
Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 8:46 pm
by khainui
ทั้ง 2 ไฟล์มี Code ทั้งคู่เลยครับ
Code: Select all
Private Sub save_Click()
If Range("c2") = "" Then Exit Sub
If Not Worksheets("data").Columns("b:b").Find(Range("c2"), LookIn:=xlValues) Is Nothing Then
MsgBox "เลขที่ซ้ำ! ไม่สามารถบันทึกได้"
Else
i = WorksheetFunction.CountA(Worksheets("data").Columns("b:b")) + 2
Worksheets("data").Cells(i, 2).Value = Range("c2").Value
Worksheets("data").Cells(i, 3).Value = Range("e2").Value
Worksheets("data").Cells(i, 4).Value = Range("e3").Value
Worksheets("data").Cells(i, 5).Value = Range("e4").Value
Worksheets("data").Cells(i, 6).Value = Range("e5").Value
Worksheets("data").Cells(i, 7).Value = Range("e6").Value
Worksheets("data").Cells(i, 8).Value = Range("e7").Value
End If
End Sub
Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 8:54 pm
by snasui

ตามที่ถามมานั้นจะต้องใช้ 2 เงื่อนไขในการตรวจสอบคือ ปี และ No เพื่อให้สามารถ Run No ซ้ำ ๆ กันแต่เป็นคนละปีได้ แต่เนืองจาก ปี ไม่ได้ถูกบันทึกเข้าไปในชีท data ด้วย จึงไม่สามารถใช้ปีในการตรวจสอบได้ครับ
Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 9:16 pm
by khainui
Code: Select all
Private Sub save_Click()
If Range("c2") = "" Then Exit Sub
If Not Worksheets("data").Columns("b:b").Find(Range("c2"), LookIn:=xlValues) Is Nothing Then
MsgBox "เลขที่ซ้ำ! ไม่สามารถบันทึกได้"
Else
i = WorksheetFunction.CountA(Worksheets("data").Columns("b:b")) + 2
Worksheets("data").Cells(i, 2).Value = Range("c2").Value
Worksheets("data").Cells(i, 3).Value = Range("c4").Value
Worksheets("data").Cells(i, 4).Value = Range("e2").Value
Worksheets("data").Cells(i, 5).Value = Range("e3").Value
Worksheets("data").Cells(i, 6).Value = Range("e4").Value
Worksheets("data").Cells(i, 7).Value = Range("e5").Value
Worksheets("data").Cells(i, 8).Value = Range("e6").Value
Worksheets("data").Cells(i, 9).Value = Range("e7").Value
End If
End Sub
ต้องกำหนดเงื่อนไขอย่างไรครับ ผมเพิ่มคอลัมน์ปีแล้วครับ แต่ตรงสูตรกำหนดเงื่อนไขเลขซ้ำไม่ทราบต้องใช้คำสั่งอย่างไรครับ
พอดี VBA นี้ไปแกะจากหนังสือมาครับ เลยยังงง งงอยู่
Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 9:42 pm
by snasui

ปีอยู่ในคอลัมน์ใดของชีท data ครับ

Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 9:45 pm
by khainui
snasui wrote:
ปีอยู่ในคอลัมน์ใดของชีท data ครับ

คอลัมน์ c ครับ
Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 9:49 pm
by snasui

ไฟล์ที่แนบมาล่าสุด
ไม่มีปีครับ
Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 9:57 pm
by khainui

เอาใหม่ครับ
Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 10:06 pm
by snasui

ลองตามนี้ครับ
ที่ Sheet3 เซลล์ C2 คีย์
=COUNTIF(data!C:C,C4)+1
Enter
Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 10:37 pm
by khainui
อ่าไม่ได้นี่ครับ
คือถ้าช่อง c2 เป็นเลข 1
แล้วช่อง c4 เปลี่ยนเป็นปี 2556
ทำอย่างไรให้กดบันทึกรายการลงใน sheet "data" ได้โดยไม่ติดเงื่อนไขเลขซ้ำครับ
Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 10:45 pm
by snasui

กรณีไม่มีการดักค่าซ้ำใน Code โดยใช้สูตรการให้ No ตามที่ผมให้ไปไม่ทราบว่าเกิดปัญหาใดครับ
Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย
Posted: Wed Jul 04, 2012 11:04 pm
by khainui
คือ ตามอธิบายในรูปน่ะครับ มันยังติดค่าซ้ำ โดยกดบันทึกรายการไม่ได้น่ะครับ