Page 1 of 2
การรันลำดับที่
Posted: Fri Jul 13, 2012 9:46 pm
by excelman
ตามตัวอย่างที่แนบ ต้องคีย์สูตรแบบไหนครับเพื่อให้ลำดับที่รันลำดับไปเรื่อยๆ
โดยมีเงื่อนไขว่า ถ้าพอชื่อสกุลที่เคยคีย์ไปแล้วจะไม่รันลำดับในชื่อๆนั้น ข้ามไปนับต่อ
ที่ชื่อต่อไปครับ
Re: การรันลำดับที่
Posted: Fri Jul 13, 2012 10:20 pm
by ysamroeng
ที่เซลล์ A2 พิมพ์สูตร =IF(COUNTIF(C$2:C2,C2)=1,MAX(A$1:A1)+1,"")
enter แล้วคัดลอกสูตรลงมา
Re: การรันลำดับที่
Posted: Fri Jul 13, 2012 10:28 pm
by excelman
ทดลองคีย์แล้วใช้ได้ตามที่ต้องการแล้วครับผม
แ่ต่อยากจะรบกวนอธิบายความหมายในสูตรด้วยได้มั้ยครับ
เพื่อที่ว่า คราวต่อไปจะได้นำไปปรับปรุงใช้กับเคสอื่นๆได้ในภายหน้า
Re: การรันลำดับที่
Posted: Fri Jul 13, 2012 10:37 pm
by ysamroeng
excelman wrote:ทดลองคีย์แล้วใช้ได้ตามที่ต้องการแล้วครับผม
แ่ต่อยากจะรบกวนอธิบายความหมายในสูตรด้วยได้มั้ยครับ
เพื่อที่ว่า คราวต่อไปจะได้นำไปปรับปรุงใช้กับเคสอื่นๆได้ในภายหน้า
จากสูตรที่ A2 =IF(COUNTIF(C$2:C2,C2)=1,MAX(A$1:A1)+1,"")
ให้เริ่มต้นนับชื่อจาก C2 ลงมา หากชื่อนั้นนับได้เป็น 1 ก็ให้ดูว่าเหนือ A2 ขึ้นไปมีตัวเลขอะไรมีค่ามากสุด
ก็เอาเลขนั้นมาบวกเพิ่มค่าเข้าไปอีกหนึ่ง แต่ถ้ามีชื่อซ้ำก็จะไม่แสดงตัวเลขใดๆ
ปล. ถ้ามีชื่อซ้ำกัน แต่ที่จริงเป็นคนละคน สูตรนี้ก็จะข้ามเช่นเดียวกัน เพราะตรวจสอบเฉพาะชื่อเท่านั้นครับ
Re: การรันลำดับที่
Posted: Fri Jul 13, 2012 10:53 pm
by excelman
ตาม ปล. ที่ทิ้งท้ายไว้ ถ้าผมแก้ปัญหานี้ด้วยการนำชื่อและสกุลมารวมอยู่ในเซลล์เดียวกัน จะเป็นผลมั้ยครับ
Re: การรันลำดับที่
Posted: Fri Jul 13, 2012 10:58 pm
by snasui

แก้ได้ครับ หรือเขียนสูตรที่ซับซ้อนขึ้น เช่น
=If(Rows(C$
2:C2)=Match(C2&D2,Index($C$2:$C$12&$D$2:$D$12,0),0),Count(A$1:A1)+1,"")
Enter > Copy ลงด้านล่าง
Re: การรันลำดับที่
Posted: Fri Jul 13, 2012 11:06 pm
by excelman
สูตรที่เป็นตัวหนานี่ต้องคีย์แบบนี้หรือเปล่าครับ (c$2:c2)
=If(Rows(C$:C2)=Match(C2&D2,Index($C$2:$C$12&$D$2:$D$12,0),0),Count(A$1:A1)+1,"")
Re: การรันลำดับที่
Posted: Fri Jul 13, 2012 11:11 pm
by snasui

ใช่แล้วครับ คีย์ตกไปครับ

Re: การรันลำดับที่
Posted: Sat Jan 19, 2013 7:54 pm
by krukrit
สูตรนี้สามารถเขียนในvbaได้หรือไม่ครับ
Re: การรันลำดับที่
Posted: Sat Jan 19, 2013 8:50 pm
by snasui

ด้วย VBA แล้วเขียนได้ทุกสูตรที่เขียนด้วย Excel ได้ และทำได้มากกว่านั้นเพราะมันคือ Programming ครับ
Re: การรันลำดับที่
Posted: Sun Jan 20, 2013 9:49 am
by krukrit
ผมได้ลองหัดเขียนvba แต่ยังติด3 ข้อช่วยแนะนำด้วยครับ
Re: การรันลำดับที่
Posted: Sun Jan 20, 2013 11:06 am
by tigerwit
กรณีเลขลำดับ
ที่ชีท Form เซล A3 คีย์ =IF(C3="","",SUBTOTAL(3,$C$3:C3)) แล้ว Copy ลงไป
กรณีเส้นทึบ
1. เลือกเมนู รูปแบบ > จัดรูปแบบตามเงื่อนไข
2. ตรง เงื่อนไขที่ 1 เลือก สูตรคือ
3. ช่องถัดมาคีย์ =$A3:$D3<>""
4. คลิกปุ่ม รูปแบบ จัดรูปแบบตามต้องการ (เส้นขอบ ตีกรอบ) > ตกลง > ตกลง
5. copy ลงไป ตามต้องการ
กรณีทศนิยม ก็จัดรูปแบบเซลให้เป็นแบบทศนิยมไว้เลย
Re: การรันลำดับที่
Posted: Sun Jan 20, 2013 11:22 am
by krukrit
ขอบคุณครับ
แต่ผมยังติดปัญหาตรงทีี่่เวลาโอนข้อมูลมาแล้วแถวบนที่เป็น name และ money_psn ที่อยู่ใน data จะตามมาด้วยที่ form ด้วย
แก้อย่างไรครับ ซึ่งลำดับที่ 1 จะหายไปครับ
Re: การรันลำดับที่
Posted: Sun Jan 20, 2013 1:18 pm
by krukrit
ยังหาวิธีไม่ได้เลยครับโดยใช้vba
Re: การรันลำดับที่
Posted: Sun Jan 20, 2013 6:49 pm
by snasui

ลองดูตัวอย่างการปรับ Code ตามด้านล่างครับ
Code: Select all
Private Sub CommandButton1_Click()
Sheet2.Cells(2, 1) = "ลำดับที่"
Sheet2.Cells(2, 2) = "เลขที่สมาชิก"
Sheet2.Cells(2, 3) = "ชื่อ - สกุล"
Sheet2.Cells(2, 4) = "จำนวนเงิน"
Sheet2.Range("A2", "D2").HorizontalAlignment = xlCenter
Sheet2.Range("A2", "D2").Font.Bold = True
r = 3
l = 1
For i = 2 To Sheet1.Range("A" & Rows.Count).End(xlUp).Row
If Trim(Sheet1.Cells(i, 3)) <> "" And Trim(Sheet1.Cells(i, 3)) <> "Transaction Number" Then
Sheet2.Cells(r, 1) = l
Sheet2.Cells(r, 2) = Trim(Sheet1.Cells(i, 1))
Sheet2.Cells(r, 3) = Trim(Sheet1.Cells(i, 2))
Sheet2.Cells(r, 4) = Trim(Sheet1.Cells(i, 3))
r = r + 1
l = l + 1
End If
Next
End Sub
Re: การรันลำดับที่
Posted: Sun Jan 20, 2013 8:40 pm
by krukrit
คือผมมีปัญหาคือ 1. เวลาโอนข้อมูลมาแล้วไม่มีเส้นตารางในส่วนที่โอนมาครับ ตามที่คุณ tigerwit ได้แนะนำผมได้ทำตามแล้วแต่พอ เขียนปุ่มCommandButtonเพื่อลบข้อมูลแล้วเวลาโอนข้อมูลมาใหม่ก็จะไม่มีตารางเหมือนเดิมครับ
2. ในช่อง จำนวนเงิน ไม่เหมือนใน data ครับ ไม่มีทศนิยม ได้ทำตามคุณ tigerwit ได้แนะนำผมได้ทำตามแล้วแต่พอลบข้อมูลแล้วโอนมาใหม่ก็เหมือนเดิมครับคือไม่มีทศนิยม
Re: การรันลำดับที่
Posted: Sun Jan 20, 2013 8:46 pm
by snasui

แสดงว่าเรื่องของข้อมูลนั้นถูกต้องอยู่แล้วเหลือเพียง Format เท่านั้นใช่หรือไม่ครับ หากใช่
ให้บันทึก Macro การสร้าง Format แล้วปรับใช้ดู ติดตรงไหนสามารถถามมาได้ครับ
Re: การรันลำดับที่
Posted: Sun Jan 20, 2013 9:38 pm
by krukrit
แสดงว่าเรื่องของข้อมูลนั้นถูกต้องอยู่แล้วเหลือเพียง Format เท่านั้นใช่หรือไม่ครับ หากใช่ ให้บันทึก Macro การสร้าง Format แล้วปรับใช้ดู ติดตรงไหนสามารถถามมาได้ครับ
ครับผม เหลือ 2 จุดครับ ผมจะศึกษาได้จากที่ไหนครับแนะนำด้วยครับ
Re: การรันลำดับที่
Posted: Sun Jan 20, 2013 9:50 pm
by snasui

ศึกษาจากการบันทึก Macro ครับ ไม่ทราบว่ามีปัญหาอะไรกับการบันทึก Macro ครับ

Re: การรันลำดับที่
Posted: Sun Jan 20, 2013 10:05 pm
by krukrit
มีปัญหาการเขียนคำสั่งMacroครับ 2 จุดครับ
1. เวลาโอนข้อมูลมาแล้วไม่มีเส้นตารางในส่วนที่โอนมาครับ
2. ในช่อง จำนวนเงิน ไม่เหมือนใน data ครับ คือไม่มีทศนิยม ครับ
ไม่รู้ว่าจะเขียนอย่างไรครับ