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
:lol: แก้ได้ครับ หรือเขียนสูตรที่ซับซ้อนขึ้น เช่น

=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
:o ใช่แล้วครับ คีย์ตกไปครับ :rz:

Re: การรันลำดับที่

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

Re: การรันลำดับที่

Posted: Sat Jan 19, 2013 8:50 pm
by snasui
:D ด้วย 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
:D ลองดูตัวอย่างการปรับ 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
:D แสดงว่าเรื่องของข้อมูลนั้นถูกต้องอยู่แล้วเหลือเพียง 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
:D ศึกษาจากการบันทึก Macro ครับ ไม่ทราบว่ามีปัญหาอะไรกับการบันทึก Macro ครับ :?:

Re: การรันลำดับที่

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