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
:D ต้องแนบไฟล์มาดูกันครับ

Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย

Posted: Wed Jul 04, 2012 7:30 pm
by snasui
:D ลองตามนี้ครับ

ที่เซลล์ 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
:lol: การแสดงตัวเลขขึ้นกับเงื่อนไขใดบ้างควรแจ้งมาทุกเงือนไข เพราะผมจะตอบตามที่ถามครับ :mrgreen:

Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย

Posted: Wed Jul 04, 2012 8:37 pm
by khainui
อ่าครับผมอธิบายไม่ละเอียดเองครับ :rz:

ทีนี้ผมลองเพิ่มสูตรให้อิงตัวเลขตรงช่อง 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
:D อยากทราบว่า 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
:D ตามที่ถามมานั้นจะต้องใช้ 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
:shock: ปีอยู่ในคอลัมน์ใดของชีท data ครับ :?:

Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย

Posted: Wed Jul 04, 2012 9:45 pm
by khainui
snasui wrote::shock: ปีอยู่ในคอลัมน์ใดของชีท data ครับ :?:
คอลัมน์ c ครับ

Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย

Posted: Wed Jul 04, 2012 9:49 pm
by snasui
:roll: ไฟล์ที่แนบมาล่าสุดไม่มีปีครับ

Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย

Posted: Wed Jul 04, 2012 9:57 pm
by khainui
:D เอาใหม่ครับ

Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย

Posted: Wed Jul 04, 2012 10:06 pm
by snasui
:D ลองตามนี้ครับ

ที่ 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
:lol: กรณีไม่มีการดักค่าซ้ำใน Code โดยใช้สูตรการให้ No ตามที่ผมให้ไปไม่ทราบว่าเกิดปัญหาใดครับ

Re: ทำอย่างไรให้เลขที่ใน Cell แสดงเลขที่ลำดับสุดท้าย

Posted: Wed Jul 04, 2012 11:04 pm
by khainui
คือ ตามอธิบายในรูปน่ะครับ มันยังติดค่าซ้ำ โดยกดบันทึกรายการไม่ได้น่ะครับ